docs: add CCTP V2 integration guide for Arc Testnet (closes #110)#127
Open
zkasuran wants to merge 1 commit into
Open
docs: add CCTP V2 integration guide for Arc Testnet (closes #110)#127zkasuran wants to merge 1 commit into
zkasuran wants to merge 1 commit into
Conversation
Documents the Arc-specific details needed to move native USDC on and off Arc with CCTP V2, addressing circlefin#110: - Arc CCTP domain is 26 (verified against Circle's supported-blockchains list; the testnet shares the mainnet domain). - All Arc CCTP contracts are V2. The V1 depositForBurn selector (0x6fd3504e) reverts against the V2 TokenMessenger; the V2 selector is 0x8e0250ee. Both were checked by computing keccak of the signatures. - Burns sourced from Arc should use minFinalityThreshold 2000 (finalized); 1000 can leave the attestation stuck pending. - eth_estimateGas can return data:null for depositForBurn, so pass an explicit gasLimit. - How to fetch the attestation from the Iris API and the fee endpoint. Contract addresses are from Circle's EVM smart contracts reference and the TokenMessenger was confirmed to have code on Arc Testnet. Adds a link from the README documentation section.
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.
What this does
Adds a CCTP V2 integration guide at
docs/cctp-v2-integration.mdand links it from the README documentation section. It resolves #110.The guide documents the Arc-specific details a developer needs to move native USDC on and off Arc with Cross-Chain Transfer Protocol V2, which are not currently in this repo or obvious from Circle's general docs:
destinationDomainindepositForBurn.depositForBurnselector (0x6fd3504e) reverts against the V2 TokenMessenger. The V2 selector is0x8e0250ee. This trips up code ported from older Circle examples.minFinalityThreshold: 2000for burns sourced from Arc. 1000 (Fast Transfer) can leave the attestation stuckpending.eth_estimateGascan returndata: nullfordepositForBurn, so pass an explicitgasLimit(covered with the typical gas range).How I verified the values
0x8FE6…2DAAreturns contract code (2175 bytes) on Arc Testnet viaeth_getCode.depositForBurn(uint256,uint32,bytes32,address,bytes32,uint256,uint32)=0x8e0250ee, V1depositForBurn(uint256,uint32,bytes32,address)=0x6fd3504e.minFinalityThresholdsemantics (1000 = Fast/confirmed, 2000 = Standard/finalized): Circle's contract interfaces. The "use 2000 on Arc" guidance comes from the field report in docs: CCTP V2 integration on Arc Testnet — domain 26, minFinalityThreshold 2000, V1 selector incompatible #110; I documented it as Arc behavior, not as a Circle spec./v2/messages/{sourceDomain}and/v2/burn/USDC/fees/{src}/{dst}paths return well-formed responses against the sandbox host.Docs-only change, no code touched.
AI disclosure
This guide was prepared with help from Claude (Anthropic), which drafted the prose. Every value (domain, contract addresses, selectors, finality thresholds, API paths) was verified against Circle's official documentation, an on-chain
eth_getCodecall, a local keccak computation of the selectors, and live calls to the Iris sandbox API before submitting. The verification steps are listed above so they can be rechecked.