Skip to content

DX report — two days from zero to a verified factory on Arc mainnet, and the six things that cost time #455

Description

@edycutjong

Everything protocol-level worked first try: unchanged Solidity/Foundry (solc 0.8.30, osaka), USDC as native gas,
CREATE2 + constructor-SELFDESTRUCT moving a pre-funded balance exactly as evm-differences.md documents, and CCTP FAST +
the Forwarding Service landing the first USDC in one call. The friction was all tooling and early-mainnet:

  1. First USDC on Arc is a chicken-and-egg: the CCTP receiveMessage mint is paid in USDC on Arc, which a fresh wallet
    has none of. useForwarder: true solves it — but that is the answer to the first question every new builder has, and it
    is not where they look first (the bridge guide).
  2. forge script with a CREATE2 salt fails "Chain 5042 not supported" — Foundry's deterministic-deployer path guards on
    a known-chains list. Workaround: the Arachnid factory directly. A note in the Foundry section would save an hour.
  3. msg.sender inside startBroadcast is Foundry's default sender, not the keystore. A probe sent funds to the wrong
    address this way. Pass owner/treasury explicitly — worth a warning in the deploy docs.
  4. eth_getLogs is capped at 10,000 blocks per call (9,999-block span answers; 10,000 → -32012), and sustained rate
    on the public RPC is ≈0.5 getLogs/s (1/s is refused indefinitely with -32005; 1 per 2 s always succeeds — 40/40 each).
    Both numbers belong on the RPC page.
  5. rpc-endpoints.md says mainnet RPC/explorer are "permissioned"; both answer anonymously. A backend-less page depends
    on which of those is the commitment.
  6. Docs address drift: integrate_exchanges_cctp-bridging.md names MessageTransmitter 0xE737e5cE… (no code on mainnet);
    the live one is 0x81D40F21… per the contract-addresses reference.

Full report with dates and tx hashes: https://github.com/edycutjong/pigeonhole/blob/main/docs/DX-REPORT.md

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions