Web3 Infrastructure
The Anatomy of a Cross-Chain Settlement: How a Market Maker Moves $10M Across Solana, Arbitrum, and Ethereum
A systems-level breakdown of cross-chain capital movement - bridge trust models, finality windows, HTLC mechanics, and the operational controls that prevent catastrophic loss.
When I was designing ZeroCopy’s on-chain settlement layer, the cross-chain component looked straightforward on paper. You have capital on Solana. You need it on Ethereum mainnet to post margin for a derivatives position. Bridge it over. Simple.
It took about two weeks of implementation and testing to understand how badly I had underestimated the complexity. The bridge risk alone consumed more engineering attention than the rest of the settlement module combined. Not because bridges are badly designed - the best ones are genuinely impressive engineering - but because the failure modes are catastrophic rather than graceful, and the trust assumptions are easy to overlook until you read the documentation carefully.
Here is what I learned, expressed as the anatomy of a real operation: moving $10 million USDC across the Solana → Arbitrum → Ethereum mainnet path.
Why Cross-Chain Is Fundamentally Hard
Each blockchain is an independent state machine. Ethereum does not know what happened on Solana. Solana does not know what happened on Arbitrum. There is no shared global state, no atomic swap primitive that works across chains, and no rollback mechanism if one leg of a multi-chain operation fails.
On a single chain, atomicity is a free primitive. You wrap multiple operations in a transaction, and either all of them execute or none of them do. The EVM guarantees this at the protocol level. Cross-chain operations do not have this guarantee. If your USDC leaves Solana and the destination transaction on Arbitrum fails, you are now in a state where you have neither your Solana USDC (it is locked in the bridge) nor your Arbitrum USDC.
The solutions to this problem fall into three categories, each with different trust models.
Lock-and-Mint Bridges - the dominant model. You lock USDC in a bridge contract on Solana. Validators watching both chains observe the lock, reach consensus, and issue a corresponding amount of “bridged USDC” on the destination chain. The trust assumption: the bridge validator set is honest and the bridge contracts are not exploitable. This is where most of the $2+ billion in bridge hacks have occurred - Wormhole, Ronin, Horizon, Nomad. All exploits of either validator compromise or contract vulnerabilities.
Hash Time-Lock Contracts (HTLCs) - the trustless approach. Two parties create HTLCs on each chain. If Alice wants to swap 10 SOL (on Solana) for Bob’s 0.5 ETH (on Ethereum), Alice hashes a secret, locks her SOL in a Solana contract revealing only the hash, Bob sees the hash and locks his ETH in an Ethereum contract pointing to the same hash, Alice reveals the secret to claim the ETH (the reveal is on-chain and visible), and Bob uses the revealed secret to claim the SOL. No trusted intermediary. The problem: it requires active counterparty coordination, it is slow (multiple block confirmations on both chains before claiming is safe), and it fails if either party goes offline mid-process.
Optimistic Bridges - used for L2-to-L1 bridges. Arbitrum and Optimism use optimistic rollup architecture where L2 transactions are posted to L1 with a fraud proof window. A withdrawal from Arbitrum to Ethereum takes 7 days - the challenge period during which anyone can post a fraud proof to cancel a fraudulent withdrawal. You can bypass the wait using “fast bridges” (Hop, Across, Orbiter) that front the capital for a fee, but now you have introduced a new intermediary with its own trust model.
The $10M USDC Move: Step by Step
The operation: move $10M USDC from a Solana trading wallet to Ethereum mainnet for options margin posting. The capital needs to be on Ethereum within 4 hours. Time constraint rules out the 7-day Arbitrum withdrawal window.
This is the route we actually modeled for ZeroCopy:
Solana wallet
│
│ Option A: Wormhole (CCTP route)
│ Option B: Wormhole (lock-and-mint)
│ Option C: deBridge
▼
Arbitrum
│
│ Fast bridge (Across Protocol)
│ ~10 minutes
▼
Ethereum mainnet
│
│ Post as margin to options protocol
Stage 1: Solana to Arbitrum via Wormhole (CCTP Route)
Wormhole’s Circle CCTP (Cross-Chain Transfer Protocol) integration is the correct route for USDC at this scale. CCTP is Circle’s native cross-chain protocol - it burns USDC on the source chain and mints native USDC on the destination chain, rather than wrapping it. The result is native Arbitrum USDC, not a bridged synthetic. This matters for protocol acceptance - most DeFi protocols accept only native USDC for collateral.
Wormhole CCTP Transfer Flow (Solana → Arbitrum)
[1] Solana Transaction
│ User approves USDC spending
│ Calls transferTokensWithPayload() on Wormhole Token Bridge
│ Wormhole burns $10M USDC on Solana via Circle CCTP
│ Emits DepositForBurn event with attestation request
│
│ TXID: confirmed in ~1-2 Solana slots (~800ms)
▼
[2] Circle Attestation Service
│ Circle's off-chain service observes the burn event
│ Generates a signed attestation after:
│ - Solana finality: ~32 confirmations (~25 seconds)
│ - Circle's internal risk check: ~30-60 seconds
│ Attestation: cryptographic proof that burn occurred
▼
[3] Wormhole Guardians
│ 19 guardian nodes observe the Solana transaction
│ Reach 2/3 supermajority consensus
│ Produce a VAA (Verifiable Action Approval)
│ Timeline: ~14 seconds after Solana finality
▼
[4] Arbitrum Transaction
│ Relayer (or user) submits VAA + Circle attestation
│ Wormhole Token Bridge on Arbitrum verifies:
│ - VAA signatures (13/19 guardians required)
│ - Circle attestation validity
│ USDC minted to destination address
│ Total elapsed: ~3-5 minutes
▼
[5] $10M native USDC on Arbitrum
The 3-5 minute window is the critical path. The Circle attestation service is the bottleneck - their risk scoring for large transfers adds latency. For transfers over $5M, we observed attestation delays of up to 8 minutes during high-load periods.
Stage 2: Arbitrum to Ethereum via Across Protocol
The Arbitrum native bridge would take 7 days. Across Protocol front-runs the withdrawal: their liquidity providers (“relayers”) see the withdrawal intent, immediately send USDC from their Ethereum liquidity pool to your Ethereum address, and then claim repayment from Arbitrum after the challenge period using a UMA optimistic oracle for verification.
The fee for this service: 0.04-0.08% of transfer amount, dynamically priced based on liquidity utilization. On 4,000-$8,000. For a 4-hour deadline, this is acceptable. For routine capital management with no urgency, it is worth waiting 7 days to save the fee.
Total cost of the full $10M move:
- Wormhole CCTP fee: flat fee (~$50 in relayer costs)
- Across bridge fee: ~$6,000 (0.06% midpoint)
- Gas (Solana + Arbitrum + Ethereum): ~$30
- Total: ~$6,080, or 0.061% of notional
The Bridge Limit Rule
In production, we never bridge more than 10% of total on-chain capital in a single transaction. This is a hard operational rule, not a suggestion.
If the bridge contract is exploited while your transaction is in-flight, you lose the in-flight amount. By capping at 10%, you limit a worst-case bridge exploit to a manageable loss rather than a catastrophic one. For the 100M on the sending chain - otherwise you need to stage the transfer across multiple transactions.
Bridge Trust Model Comparison
For a $10M production move, the trust model matters. Here is how the major bridges stack up:
| Bridge | Trust Model | Solana→ETH Time | Risk Profile |
|---|---|---|---|
| Wormhole (CCTP) | Circle attestation + 19 guardians, 13/19 threshold | 3-5 minutes | Smart contract risk + guardian collusion (19 parties) |
| Wormhole (lock-and-mint) | 13/19 guardian threshold | 3-5 minutes | Smart contract risk + guardian collusion + wrapped token risk |
| Wormhole Classic | Same guardians, older contracts | 3-5 minutes | Higher - older contract surface area, see 2022 hack |
| deBridge | Validators + optimistic verification | 5-15 minutes | Newer protocol, smaller TVL, less battle-tested |
| CCIP (Chainlink) | Chainlink oracle network | 20-40 minutes | DON trust assumption, higher latency |
The Wormhole 2022 hack ($320M) was a smart contract vulnerability on the Ethereum side - an attacker exploited a signature verification bug to mint wETH without posting collateral. The protocol was rebuilt with more conservative verification. But the lesson is clear: bridge smart contracts are high-value targets and have non-zero exploit probability even after audits.
For the ZeroCopy settlement layer, our risk model treats any in-flight bridge transaction as temporarily lost capital for accounting purposes. Until the destination transaction is confirmed, we do not count it as available margin.
Monitoring: What to Alert On
For production cross-chain operations, you need monitoring that tracks the full lifecycle of each bridge transaction. The failure modes to watch:
Transaction submitted but VAA never generated - the Solana transaction confirmed but Wormhole guardians did not produce a VAA. This can happen if the transaction was missing a required field or the guardian set was temporarily reduced below threshold. Alert if no VAA appears within 2x the expected window (10 minutes for a 5-minute target).
VAA generated but destination transaction not submitted - the relayer is offline or out of gas. If using a self-relaying setup, you need your own alerting here. If using a bridge protocol’s built-in relayer, their SLA is typically 30-60 minutes; alert if you have not received destination confirmation within that window.
Destination transaction reverted - the mint transaction on Arbitrum reverted. This should not happen with a valid VAA, but it can occur if the destination contract was paused or if you submitted to the wrong network. Alert immediately - you are now in a state where USDC is burned on Solana and not minted elsewhere. Wormhole has a recovery process but it requires manual intervention.
Balance divergence - the sum of your balances across all chains should equal your total capital minus open positions. Run this reconciliation every hour. Any divergence beyond a small gas buffer indicates something went wrong.
How This Breaks in Production
Cross-chain operations expose failure modes that are invisible in unit tests and only emerge under real network conditions.
Guardian set degradation - Wormhole’s 19 guardians are run by ecosystem partners (Jump, Certus One, Everstake, etc.). If several go offline simultaneously (maintenance windows, DDoS, datacenter failure), the required 13/19 threshold becomes harder to achieve. During the FTX collapse in November 2022, several Wormhole guardian operators had to pause operations for risk assessment. The bridge slowed significantly. If your operation depends on a specific bridge finishing within a hard deadline, plan for guardian degradation scenarios.
CCTP attestation service SLAs - Circle’s attestation service has no public SLA. Their documentation says “approximately 30 seconds” for attestation after finality, but under high load we have observed 5-15 minute delays. For $10M+ transfers, the risk scoring adds further latency. If you need guaranteed timing, CCTP is not the right tool - consider pre-positioning capital across chains before it is needed rather than bridging on demand.
Solana network congestion - during high-activity periods on Solana (token launches, NFT mints, high market volatility), the network drops transactions. Your bridge-initiating transaction may fail to land despite multiple retry attempts. Your monitoring needs to distinguish between “transaction confirmed” and “transaction submitted but not yet confirmed” - these are very different states from a capital accounting perspective.
Fast bridge liquidity exhaustion - Across Protocol and similar fast bridges are constrained by the liquidity available in their pools. A $10M transfer from Arbitrum to Ethereum might exhaust the available Arbitrum USDC liquidity, forcing you to split into multiple transactions or wait for liquidity rebalancing. Check the bridge’s available liquidity before routing large amounts.
Wrapped token sunset risk - some bridges issue synthetic wrapped tokens (wUSDC, bridgedUSDC) rather than native tokens. If the bridge deprecates, those wrapped tokens become worthless on the destination chain. Always prefer CCTP native mint bridges for USDC. For other assets, evaluate the bridge’s sunset risk as part of your capital allocation decision.
The cross-chain settlement layer I built for ZeroCopy handles these failure modes through a combination of conservative limits, explicit state tracking for in-flight transactions, reconciliation alarms, and fallback routes. The rule that has saved us the most: pre-position capital across chains based on anticipated needs rather than bridging on demand. A $10M bridge operation takes at minimum 10 minutes. If you need the capital in 10 minutes, you needed to start 20 minutes ago.
Continue Reading
JITO, Jupiter, and the Solana MEV Ecosystem: A Trading Infrastructure Tour
Web3 InfrastructureSolana Validator and Firedancer Internals for Trading-Infra Engineers
Web3 InfrastructureBuilding Production Smart-Contract Deployment Pipelines: Foundry, Hardhat, and Multi-Chain Verification
Enjoyed this?
Get one deep infrastructure insight per week.
Free forever. Unsubscribe anytime.
You're in. Check your inbox.