Repository navigation
Conversation
Adds a top-level Networks section with an Arc page covering what is deployed, SDK requirements, and how the native and ERC-20 USDC token ids behave. Adds the section to llms.txt and names Arc and Robinhood Chain on the introduction page. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmTHDeVKp4PcqbpqhvBGME
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Four 0.1 USDC splits on Arc mainnet (Pull and Push; ERC-20 and native funding) confirmed that funding by either route is visible under both ids, distribute credits only the id passed, and withdraw pays per id. Only the failure-mode table still rests on simulation. A Pull split also keeps 1 unit in its own Warehouse balance, plus rounding remainders, so replace "leaves 1 unit in the split" with the measured breakdown. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmTHDeVKp4PcqbpqhvBGME
Cut the createSplit defaults, the "Push or Pull on Arc" table and the pre-transaction checklist, which restate the SDK and SplitV2 pages. Shrink the not-deployed table to a sentence and drop the repeated chain ids. Fix three statements against the splits-v2.2 contracts: a blocklisted distributor only reverts a Push distribute when the fee is above 0, a Pull split credits the distributor reward to the Warehouse instead of paying it out, and a native Push split can still be blocked by a recipient that re-enters distribute (link to the SplitV2 notes). Describe Transfer logs per route as observed on mainnet. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WmTHDeVKp4PcqbpqhvBGME
zherring
marked this pull request as ready for review
October 26, 2026 16:59
0xdiid
approved these changes
Oct 27, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
/networks/arc).public/llms.txtgets a## Networkssection with entries for both pages. The markdown twins andllms-full.txtpick the pages up automatically from_meta.json.How the claims were checked
splits-v2.2, and the@0xsplits/splits-sdk6.7.0 package.eth_getCode,eth_callwith state overrides, andeth_getLogsagainst Arc mainnet and testnet.Mainnet test (2026-10-23)
The token-id behavior on the page was checked with real transactions on Arc mainnet, not only simulations. A throwaway wallet created four splits and ran each through fund,
distributeand (for Pull)withdraw, using @0xsplits/splits-sdk 6.7.0 and viem. Each split had 3 recipients (50/30/20), no owner, a 0 distributor fee, and 0.1 USDC of principal. All transactions succeeded. Leftover funds were swept back afterwards.distribute/withdrawid0x3600…0x7560aA123F217A1281A1F7D1b4f629c1f34CB5f50xEeee…0xb6d8F7BE383f2caAf24EC01853522C5D189eD1300x3600…0xc79913251CF91c1c227d897f4057c9797259D8290x3600…(withsplitFields)0x7De8Ee7C00824Ab33B5de53c5b2c8F19A7740CB3What the runs showed:
getSplitBalancereturned100000under0x3600…and100000000000000000under0xEeee….distributecredits only the id you pass. Run 1 credited recipients' Warehouse balances under0x3600…(49,999 / 29,999 / 19,999) and left0xEeee…at 0. Run 2 credited only0xEeee…, and the recipients'0x3600…balances did not change. Run 3, funded natively but distributed under0x3600…, matched run 1.withdrawpays the balance minus 1, per id. Run 1 paid 49,998 / 29,998 / 19,998 units. Run 2 (native id) paid 49999999999999998 / 29999999999999998 / 19999999999999998 wei, each 1 wei below the credited balance.distributetransaction.splitFieldsskipped config recovery and worked in 6.7.0.keccak256(abi.encode(config))equalssplitHash(), andupdateBlockNumber()matched the block it read.Transferlogs depend on the route. ERC-20 transfers, anddistributeorwithdrawunder0x3600…, emitted two logs per move: one from0xffff…fffEand one from0x3600…. Native sends, anddistributeorwithdrawunder0xEeee…, emitted one, from0xffff…fffE.Not covered by the transactions, so these still rest on
eth_callsimulation: withdrawing under an id with no credit reverting, blocklisted and reverting recipients, owned splits (update and pause), and Push on the native id.Safeguards in the harness: chain id 5042 only, an allowlist of signers, payees and calldata, a principal cap per invocation, and no automatic retries on broadcasts. The harness itself is not committed to this repo.
Transaction hashes (Arc mainnet, chain id 5042)
Run 1 (Pull, funded by ERC-20 transfer, id
0x3600…)0x44f0672c6635d19edd7c7e8bb16008b5ea8ad78f9aa7cb51342a046399d0e279(148023 gas)0x8e1071ffbc04c7a1eeb1ebc3a6624a1195eb0079813649892680e1846dcbb5bd(48950 gas)0x11706e2843fdfb350047908a2557c8f769d318c732283197d27f81e8932ac3ae(205949 gas)0x3daab51c17a9c4823981c18e45caa5b6fb7c0e64a0cc2306f0a39842c95fde8e(92926 gas)0x75eacd78035aa3628b9cf1226cd0e9829f8d8ec5ee564157853eed5dbdada050(92926 gas)0x704ad6e0cce762b312634a230408600da3039f8ce5cc967e25127322073dd8cf(92926 gas)Run 2 (Pull, funded by native send, id
0xEeee…)0xd5e5080fa2e9ed637d776fca9ebb61c87a62dee2cf208ae7da712c20f12e049e(148035 gas)0x340557ce1f15710121a05d7c5c21f3408350abeb7d93fc48f359c3b0cb4c89e2(22038 gas)0x796abd6c58d6f97006edd3d5957f4b76838e6208213809d96b95c488974861a3(151536 gas)0x830e19dddf020cbf18574fdb59717455b6bfbab563c4fae45f4e811a6e0b3a90(44746 gas)0x6e8d9bacabeaefaffdb4b6f15384464a402c5bcc77d23e767629dca7e5d0ecad(44746 gas)0xc238f8369e36585030be094d395f9f0fd7b141b31795127415c9eb643f6df436(44746 gas)Run 3 (Pull, funded by native send, id
0x3600…)0x84c908525d94663e0b67bb9bf866512bbb942d7279615345e260a8bcdc157d34(148035 gas)0x6ebd2c1a74b369d55ce4dcf41bc01674bb1b43bd462cf873a4c9218b2badebf5(22038 gas)0x1e109c863909d4b8200aa85d7a9629a9d1dfb52684bc7fff1ce0b37086ef7dc8(154649 gas)0x325614021e89f6ba432ab47f0379e67952aa931c9a12e09ace89f86debe7da18(67926 gas)0x3c41b3eaf90553d69db6e1c25da21fdd325b08d6c25f5898880116b21b214b0b(67926 gas)0x883aecae305239985140823c1c0bdb25922d94e4a5ce3cd2ea2f83e43831a84c(67926 gas)Run 4 (Push, funded by ERC-20 transfer, id
0x3600…(withsplitFields))0x12fd4a288390a9516387d31be6cd52b65a124e65d1b068563153cdc214108361(147941 gas)0x55e432e5a65d55d3aacb4bc05a829e170f743782620526e09627c17a8025843c(48938 gas)0xe0070d94419bcb3fd034d8f74e0d61279491b0683e72c1fe40b922500530994b(112326 gas)Deliberately not asserted
Notes for reviewers
0x3600...0000is an upgradeable contract controlled by Circle/Arc, so USDC behavior described on the page can change.public/llms.txtis changed separately in Update llms.txt for protocols we support #104 and is intentionally not touched here.distributeaccepts asplitFieldsargument in the SDK that is not in the SDK docs; the page mentions it.Test plan
pnpm buildpasses/protocol/docs/networks/arcrenders with a "Networks" breadcrumb/protocol/docs/networks/arc.mdtwin has the tables🤖 Generated with Claude Code
https://claude.ai/code/session_01WmTHDeVKp4PcqbpqhvBGME