Skip to main content
Across moves value between the hub and the spokes. Corridor uses its Swap API, which returns ready-to-sign calldata, and tracks each deposit until a relayer fills it on the destination chain.
Status. The Across adapter (@corridor/bridge-across: quote, execute, deposit status, wait for fill) is built and has run against the live API. The mainnet across.bridge saga leg that wraps it is next on the roadmap; testnet flows use bridge.simulated, which has the same interface.

Route shape

Across has no direct Tempo ↔ Solana route, so the hub reaches Solana in two hops through Base. Each hop is its own saga leg with its own compensation, and between hops the funds sit in a Corridor-owned address on Base.
Chain topology from Tempo through Across to Base, Solana, partners and ZcashChain topology from Tempo through Across to Base, Solana, partners and Zcash

Fig. 03 · Mainnet topology: Tempo to Base through Across, then partners on Base and Solana, and NEAR Intents into Zcash.

Paj, the naira partner, settles on Solana, so a naira payout uses both hops. A partner that settles on Base would be paid after one. Live quotes verified on 29 September 2026: Tempo USDC.e → Base USDC, 5 USDC in, fill ~1 s, fee ≈ 0.004;BaseUSDC→SolanaUSDC,fill 8s,fee≈0.004; Base USDC → Solana USDC, fill ~8 s, fee ≈ 0.0006.

API

1

Quote

GET /swap/approval with origin and destination chain ids, input and output tokens, amount in base units, depositor and recipient. Returns approval transactions, the deposit transaction, the expected output and an expiry.
2

Execute

executeEvm(sender, q) sends any approvals, then the deposit, and returns the deposit transaction hash.
3

Track the fill

GET /deposit/status until the status is filled (with fillTxnRef), or expired / refunded. waitForFill polls with a deadline.
CCTP-backed routes return quoteExpiryTimestamp: 0. The adapter treats zero as “no expiry” rather than “already expired”.

Compensation design

Each hop is its own leg, so if the second hop fails after the first has filled, the saga compensates the first by bridging back from Base to the hub. Because each hop books separately, the ledger always shows where the money is: on Tempo, on Base, or in flight with a deposit hash.

Testnet findings

Across has no Tempo testnet deployment, so the Moderato demo uses bridge.simulated, which has the same interface: the Tempo side is real (pathUSD moves to an escrow with the reference as memo) and the far side is simulated. A live Across testnet deposit from Base Sepolia to Solana devnet (0x782d8b52…) burned the USDC and completed Circle’s CCTP v2 attestation, but the final Solana mint is restricted to Across’s designated destinationCaller (its testnet relayer), which did not execute it. The mainnet run uses the same adapter. See ADR 0007.