Skip to main content
Pesarc’s settlement stack is fully on-chain and public. This page is the canonical list of contract addresses per network, so anyone can verify balances, trace settlements, and audit the corridors independently.
Pesarc settles on Arc, where USDC is the native gas token (predeploy 0x3600000000000000000000000000000000000000). A corridor is a USDC ↔ cXXX pair priced by one shared oracle and netted by one shared matcher, so the only per-corridor contract is the local stablecoin.

Networks

Deployer / treasury (owner of the oracle and markets): 0xd4418f403F86De7DB7D1885d83A6d9A5bBf701F1.

Arc mainnet (chain 5042)

Core contracts, live since 2026-09-27.

Corridor stablecoins (Arc mainnet)

Each corridor is USDC → cXXX, priced by the RealizedRateOracle above and settled by the IntentMatcher.

Arc testnet (chain 5042002)

Its own deployment (chain 5042002). Use the testnet explorer and https://rpc.testnet.arc.io. USDC is the native gas predeploy 0x3600000000000000000000000000000000000000, same as mainnet.
Arc testnet (5042002) does not qualify for the grant; it exists so integrators can test the full flow before touching mainnet. Corridor rates (USD to NGN/GHS/KES) are seeded, so quotes and settlement work immediately.

On-chain Earn — CorridorVault

Earn is a real on-chain ERC-4626 vault. You deposit USDC and receive shares; the protocol’s solver puts the idle inventory to work as settlement liquidity (earning the FX spread) and, on chains with Aave/Morpho/DEXes, through yield strategy adapters. The vault keeps a 10% performance fee on net new profit (a high-water mark), and withdrawals draw on the idle balance. Frontend stays a one-tap “deposit / earn”; this is the LP underneath.

Strategy adapters (Earn markets)

The vault puts its deployable idle to work across markets — strategy adapters that all implement one IStrategyAdapter interface (asset / totalAssets / deposit / withdraw). The vault keeps a withdrawal buffer idle (maxDeployBps, default 20%), the operator allocates the rest, and totalAssets on each adapter reports accrued yield so the performance fee is crystallized correctly. Deploy and register a market in one tx (the broadcaster must be the vault owner; the adapter auto-selects by chain/env):
Live on Arc testnet: a ReserveStrategy is registered on the testnet vault (0x13885D…). Allocation is event-driven — a deposit triggers the operator to put the new idle to work (/api/earn/allocate, debounced), no cron.
Pool liquidity (the Goldgard v4 hook pool) is intentionally not an Earn market: it would add local-currency exposure and impermanent loss. The vault earns the hook’s yield through its ERC-4626 SafetyModule instead, staying USDC-denominated and withdraw-anytime. Audit before mainnet.

Goldgard v4 hook — deploy anywhere

The corridor swap engine is a Uniswap v4 hook (dynamic fee + oracle-priced FX, with a SafetyModule backstop). The full hook stack and its deploy script live in this repo at pesarc/contracts under evm/ (src/liquidity/GoldgardHook.sol, script/DeployGoldgard.s.sol). It is pluggable on any EVM chain: DeployGoldgard reuses the chain’s canonical Uniswap v4 PoolManager when you pass one, and stands up its own otherwise — so it runs even where canonical v4 isn’t deployed (e.g. Arc). It mines the hook’s flag-encoded address (CREATE2), wires the oracle / safety / hedge / rewards, and initializes the USDC/local pool.
Example (Arc testnet): USDC_ADDRESS=0x3600000000000000000000000000000000000000, LST_ADDRESS=0xE76E4f347667d973a1B968733bE41738f2AE202C (cNGN). The printed safetyModule address is what you register as an Earn market (VAULT_ERC4626). Live on Arc testnet (its own PoolManager, since Arc has no canonical v4): The hook address ends in …05c4, encoding its Uniswap v4 permission flags (mined via CREATE2). The price feed is a placeholder aggregator the owner can repoint.

Other testnets (full stack)

Pesarc’s contracts are chain-agnostic, so the whole settlement stack (oracle, matcher, prediction market and the cNGN/cGHS/cKES corridor stablecoins) is deployed on these testnets too, each with corridor rates seeded. The USD leg is Circle’s testnet USDC on that chain.

Arbitrum Sepolia (chain 421614)

Base Sepolia (chain 84532)

Together with Arc testnet above, these give three fully wired testnets you can switch between in the app. Solana runs the same corridors on devnet.

Cross-chain moves (Hyperbridge)

USDC moves across chains over Circle CCTP, including to and from Arc. The other coins we support ride Hyperbridge, a general cross-chain messaging protocol, across the EVM chains it supports (Arc is not one of them, so Arc value stays on CCTP). Each coin is its own cross-chain token: a WrappedHyperFungibleToken locks the coin on its home chain and a HyperFungibleToken mints and burns it on each remote chain, peered to the home contract. First testnet proof deployment (Base Sepolia to Arbitrum Sepolia), a wrapped test naira (tcNGN): Shared Hyperbridge protocol contracts (identical on both testnets):
This is the first live cross-chain pair, proving the Hyperbridge rail end to end on testnet. The per-coin rollout (cNGN, cKES, cGHS, cZAR, cEGP) and the in-app move follow. USDC keeps using Circle CCTP, which is also how value reaches Arc.

Solana (devnet)

Pesarc’s Solana side is the spoke in the hub-and-spoke model: a user burns native USDC on Solana over Circle CCTP V2, and the transfer lands on the Arbitrum hub. The native SVM programs are live on devnet (same deployer authority):
Solana runs on devnet today: a real, non-custodial flow that settles into the Arbitrum Sepolia hub. Mainnet Solana is gated on deploying the Pesarc hub to Arbitrum mainnet first (a spoke can only route to a hub that exists).

Verifying a settlement

  1. Read a quote from the oracle: RealizedRateOracle.consult(tokenIn, tokenOut, window) returns the realized rate, hasData(tokenIn, tokenOut) whether a corridor is seeded.
  2. Follow a P2P match on the IntentMatcher; the USDC leg only ever bridges the net imbalance, which is what keeps settlement cheap as volume grows.
  3. Every user action is gasless via the VerifyingPaymaster, so recipients receive the full local-currency amount quoted before send.
Contract source and tests live in the Pesarc contracts repository (Solidity / Foundry). Addresses above are the source of truth; treat any address not listed here as unofficial.