Contract Addresses

Deployed contract addresses for TOC Protocol across supported networks.

Testnet Only: TOC Protocol is currently deployed on testnets only. Mainnet deployment coming soon.

Sepolia Testnet

Contract Address Explorer
POPRegistry TBD View on Etherscan
PythResolver TBD View on Etherscan
OptimisticResolver TBD View on Etherscan

Arbitrum Sepolia

Contract Address Explorer
POPRegistry TBD View on Arbiscan

Network Configuration

Add TOC Protocol to your project using these network configurations:

// config/contracts.js
export const TOC_ADDRESSES = {
  // Sepolia Testnet
  11155111: {
    registry: '0x...',
    pythResolver: '0x...',
    optimisticResolver: '0x...',
  },
  // Arbitrum Sepolia
  421614: {
    registry: '0x...',
  },
};

export function getContracts(chainId) {
  return TOC_ADDRESSES[chainId] || null;
}
// foundry.toml
[rpc_endpoints]
sepolia = "${SEPOLIA_RPC_URL}"
arbitrum_sepolia = "${ARBITRUM_SEPOLIA_RPC_URL}"

# script/Deploy.s.sol
contract DeployScript is Script {
    function run() external {
        // Get registry address from env
        address registry = vm.envAddress("POP_REGISTRY");
        // ...
    }
}
// hardhat.config.js
module.exports = {
  networks: {
    sepolia: {
      url: process.env.SEPOLIA_RPC_URL,
      chainId: 11155111,
      accounts: [process.env.PRIVATE_KEY],
    },
    arbitrumSepolia: {
      url: process.env.ARBITRUM_SEPOLIA_RPC_URL,
      chainId: 421614,
      accounts: [process.env.PRIVATE_KEY],
    },
  },
  // Add external contract addresses
  external: {
    contracts: [{
      artifacts: 'node_modules/@toc-protocol/contracts/artifacts',
    }],
  },
};

Verified Source Code

All TOC Protocol contracts are verified and open source:

Integration Example

Connect to TOC Protocol contracts in your dApp:

import { ethers } from 'ethers';
import { POPRegistry__factory } from '@toc-protocol/contracts';

// Connect to provider
const provider = new ethers.BrowserProvider(window.ethereum);
const signer = await provider.getSigner();

// Get network and registry address
const { chainId } = await provider.getNetwork();
const addresses = getContracts(Number(chainId));

if (!addresses) {
  throw new Error(`TOC not deployed on chain ${chainId}`);
}

// Create contract instance
const registry = POPRegistry__factory.connect(
  addresses.registry,
  signer
);

// Query a POP result
const result = await registry.getExtensiveResult(popId);
console.log('POP Result:', {
  isFinalized: result.isFinalized,
  wasDisputed: result.wasDisputed,
  tier: result.tier,
});

Chain IDs Reference

Network Chain ID Type Status
Ethereum Mainnet 1 Mainnet Coming Soon
Arbitrum One 42161 Mainnet Coming Soon
Base 8453 Mainnet Coming Soon
Sepolia 11155111 Testnet Active
Arbitrum Sepolia 421614 Testnet Active