Contract Addresses

All deployed contracts on Ethereum Sepolia (V4.3) with Etherscan links.

Sepolia Contracts

All contracts are verified on Etherscan. Chain ID: 11155111

ConfidentialUSDC

ERC-7984

Confidential USDC wrapper — wrap, transfer, unwrap

X402PaymentVerifier

x402

Nonce registry — payment verification, batch prepayment

AgenticCommerceProtocol

ERC-8183

Job escrow — create, fund, submit, complete

AgentIdentityRegistry

ERC-8004

Agent registration and wallet linking

AgentReputationRegistry

ERC-8004

Proof-of-payment reputation and feedback

MockUSDC

ERC-20

Test USDC token (6 decimals, mintable)

Treasury

Protocol fee treasury:

SDK Configuration

config.tstypescript
export const MARC_CONTRACTS = {
  chainId: 11155111,
  network: "eip155:11155111",
  scheme: "fhe-confidential-v1",

  // Core
  confidentialUSDC: "0xE944754aa70d4924dc5d8E57774CDf21Df5e592D",
  x402PaymentVerifier: "0x4503A7aee235aBD10e6064BBa8E14235fdF041f4",
  mockUSDC: "0xc89e913676B034f8b38E49f7508803d1cDEC9F4f",

  // ERC-8183
  agenticCommerceProtocol: "0xBCA8d5ce6D57f36c7aF71954e9F7f86773a02F22",

  // ERC-8004
  agentIdentityRegistry: "0xf4609D5DB3153717827703C795acb00867b69567",
  agentReputationRegistry: "0xd1Dd10990f317802c79077834c75742388959668",

  // Treasury
  treasury: "0xF505e2E71df58D7244189072008f25f6b6aaE5ae",
} as const;

ABIs

Contract ABIs are included in the SDK and also available from Etherscan. Key ABI fragments for direct use:

abi-fragments.tstypescript
// ConfidentialUSDC - minimal ABI
export const CUSDC_ABI = [
  "function wrap(address to, uint256 amount)",
  "function confidentialTransfer(address to, bytes32 encAmount, bytes inputProof)",
  "function confidentialBalanceOf(address) view returns (bytes32)",
  "function setOperator(address operator, uint48 until)",
  "function isOperator(address holder, address spender) view returns (bool)",
  "event ConfidentialTransfer(address indexed from, address indexed to, bytes32 indexed amount)",
];

// X402PaymentVerifier - minimal ABI
export const VERIFIER_ABI = [
  "function recordPayment(address server, bytes32 nonce, uint64 minPrice)",
  "function recordBatchPayment(address server, bytes32 nonce, uint32 requestCount, uint64 pricePerRequest)",
  "function usedNonces(bytes32) view returns (bool)",
  "event PaymentVerified(address indexed payer, address indexed server, bytes32 indexed nonce, uint64 minPrice)",
];

// AgentIdentityRegistry - minimal ABI
export const IDENTITY_ABI = [
  "function register(string agentURI) returns (uint256)",
  "function getAgent(uint256) view returns (string, address, address)",
  "function agentOf(address) view returns (uint256)",
  "function setAgentWallet(uint256, address)",
];

Block Explorer

All contracts are verified and source code is readable on Etherscan: