docs(contracts): record ArcCycleExecutor testnet deployment (WP 7909/7910) #16

Merged
buddysan merged 4 commits from sec/deploy-record into main 2026-09-16 14:21:52 +00:00
Owner

Deployment record — ArcCycleExecutor on Arc testnet (WP 7909 / 7910)

Follow-up to #9 (branch is based on its head; the diff collapses to one commit once #9 ff-merges).

executor 0x1C282093B432726ffaf29F69284FBdce1327E022 (CREATE2, salt …/ArcCycleExecutor/v1)
deploy tx 0xb490e643471868ba8ddc0843814ab6429ccd8861bab5075db9f547ebc706aaeb block 62414782, gasUsed 1 964 223
inventory 2 USDC, tx 0x82a6b02b3e29da9cf9906308bd3f42bd02d88b6032245345123217bfb0cc2f2d block 62414954
owner / hot key 0x4a35B6b77Ec94252b0A675E85aa575Db8355f290 / 0x3b326b4CEf70CB0c54cDb309A00d762216fEBD6c

Verified on the LXC 140 node: code 8 637 bytes, owner()/executor() match, paused()=false, poolFeeBps=30. Files: contracts/README.md §4, new docs/deployments.md, [executor] section appended to config/bot.example.toml (addresses only). Testnet only; mainnet untouched.

🤖 Generated with Claude Code

## Deployment record — ArcCycleExecutor on Arc testnet (WP 7909 / 7910) Follow-up to #9 (branch is based on its head; the diff collapses to one commit once #9 ff-merges). | | | |---|---| | executor | `0x1C282093B432726ffaf29F69284FBdce1327E022` (CREATE2, salt `…/ArcCycleExecutor/v1`) | | deploy tx | `0xb490e643471868ba8ddc0843814ab6429ccd8861bab5075db9f547ebc706aaeb` block 62414782, gasUsed 1 964 223 | | inventory | 2 USDC, tx `0x82a6b02b3e29da9cf9906308bd3f42bd02d88b6032245345123217bfb0cc2f2d` block 62414954 | | owner / hot key | `0x4a35B6b77Ec94252b0A675E85aa575Db8355f290` / `0x3b326b4CEf70CB0c54cDb309A00d762216fEBD6c` | Verified on the LXC 140 node: code 8 637 bytes, `owner()`/`executor()` match, `paused()=false`, `poolFeeBps=30`. Files: `contracts/README.md` §4, new `docs/deployments.md`, `[executor]` section appended to `config/bot.example.toml` (addresses only). Testnet only; mainnet untouched. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(contracts): ArcCycleExecutor + CREATE2 deploy + key-management design (Phase 3)
All checks were successful
ci / forge-tests (pull_request) Successful in 4s
ci / python-tests (pull_request) Successful in 8s
aa9e83c53b
WP 7908 — contracts/ Foundry project (solc 0.8.30, evm cancun, forge-std
v1.16.2 vendored — see lib/forge-std/VENDORED.md). ArcCycleExecutor:
atomic 2-4 hop cycle with per-hop minOut and a balanceAfter-balanceBefore
>= minProfit gate; kind 0 UniswapV2 adapter (reserves quote, pre-push,
swap with empty data, pool-to-pool routing); kinds 1-4 reserved and
revert UnsupportedKind. Owner (two-step) / executor hot-key roles,
pause (owner or executor) / unpause (owner), withdraw / withdrawETH /
rescue, transient-storage reentrancy lock, custom errors, events for
every execution and admin action. Hop ABI is exactly docs/architecture.md
§3 (selector 0x7328892b); pool fees are an owner-curated registry
(default 30 bps) instead of calldata so the hot key cannot tamper with
quote math.

Verified live on Arc testnet (chain 5042002, LXC 140 local node): swap
fee 997/1000 on all 8 registry pools solved from 4 historical
Swap+Sync pairs and confirmed by fork tests against both real pair
runtimes; PUSH0/TSTORE/MCOPY/CLZ execute; USDC 0x3600..0000 is a
6-decimal view of the native balance; CREATE2 proxy present. A live
eth_call with code/state/balance overrides ran the real USDC->ARC_TEST->
USDC cycle through the executor and returned exactly the quoted profit.

Tests: 40 (35 unit incl. fuzz, 3 deploy/CREATE2-predict, 2 fork gated
on ARC_RPC_URL); .gas-snapshot committed. forge test passes locally and
on LXC 140 with Foundry 1.8.1.

WP 7909 — script/Deploy.s.sol: deterministic salt, predict() helper,
dry-run against the local node succeeds (2,693,964 gas). Nothing was
broadcast.

WP 7910 — docs/key-management.md: key locations (0600 under
/etc/arc-mev-bot/), safe extraction + derive-back, wiring, rotation,
funding requires explicit user go-ahead. No key generated (auto-mode
classifier denied the secret-store write; runbook is in the doc).

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Signed-off-by: BuddySan <[email protected]>
Merge branch 'main' into sec/phase3-executor
All checks were successful
ci / forge-tests (pull_request) Successful in 10s
ci / python-tests (pull_request) Successful in 12s
847979f467
Merge branch 'main' into sec/phase3-executor
All checks were successful
ci / forge-tests (pull_request) Successful in 4s
ci / python-tests (pull_request) Successful in 6s
2f9b2a286d
docs(contracts): record ArcCycleExecutor testnet deployment (WP 7909/7910)
All checks were successful
ci / forge-tests (pull_request) Successful in 4s
ci / python-tests (pull_request) Successful in 6s
ci / forge-tests (push) Successful in 5s
ci / python-tests (push) Successful in 7s
e14ce41748
ArcCycleExecutor deployed on Arc testnet at
0x1C282093B432726ffaf29F69284FBdce1327E022 via CREATE2 (deploy tx
0xb490e6...aaeb, block 62414782) and funded with 2 USDC inventory
(0x82a6b0...2f2d, block 62414954). Owner 0x4a35...f290, executor hot
key 0x3b32...BD6c. Recorded in contracts/README.md section 4, a new
docs/deployments.md, and an [executor] section in
config/bot.example.toml (addresses only).

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Signed-off-by: BuddySan <[email protected]>
fortiblox-dev left a comment

automerger v2 auto-approved: all 7 gates pass. Approver: fortiblox-dev (opposite-identity rule). Gates: mergeable=true,label=auto-merge,author=buddysan,identity=ok,status_checks=not_required,signatures=upstream_BP_only,opt_in=repo_marker.

automerger v2 auto-approved: all 7 gates pass. Approver: fortiblox-dev (opposite-identity rule). Gates: mergeable=true,label=auto-merge,author=buddysan,identity=ok,status_checks=not_required,signatures=upstream_BP_only,opt_in=repo_marker.
buddysan deleted branch sec/deploy-record 2026-09-16 14:21:52 +00:00
Author
Owner

Auto-merged by forgejo-automerger at 2026-09-16 14:21:52 UTC. Approver: fortiblox-dev (opposite-identity rule, Option C upgrade 2026-05-13). Merger: buddysan via fast-forward-only (NOT admin force_merge). Criteria passed: mergeable=true,label=auto-merge,author=buddysan,identity=ok,status_checks=not_required,signatures=upstream_BP_only,opt_in=repo_marker. Branch e14ce41748 merged onto main and feature branch deleted. See project_forgejo_automerger memory for rationale.

Auto-merged by **forgejo-automerger** at 2026-09-16 14:21:52 UTC. **Approver:** `fortiblox-dev` (opposite-identity rule, Option C upgrade 2026-05-13). **Merger:** `buddysan` via `fast-forward-only` (NOT admin `force_merge`). **Criteria passed:** `mergeable=true,label=auto-merge,author=buddysan,identity=ok,status_checks=not_required,signatures=upstream_BP_only,opt_in=repo_marker`. Branch `e14ce41748` merged onto `main` and feature branch deleted. See `project_forgejo_automerger` memory for rationale.
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
fortiblox/arc-mev-bot!16
No description provided.