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 |