Addresses & ABIs
This page is the source of truth for contract addresses and the minimal ABIs your dashboards/SDKs need. Addresses are grouped by network; ABIs are stable across networks. Full admin surfaces live in the Contracts section.
⚠️ Always verify checksummed addresses on the official explorer and announcements. Core contracts are UUPS‑upgradeable—use the proxy address (listed here), not the implementation.
Networks
| Network | Chain ID | Explorer |
|---|---|---|
| Local (Anvil/Hardhat) | 31337 | — |
| Polygon Amoy (Testnet) | 80002 | https://amoy.polygonscan.com |
| Polygon Mainnet | 137 | https://polygonscan.com |
We’ll update addresses below as deployments happen (Testnet → Mainnet). If a value is
—, it has not been published yet.
Addresses
Polygon Amoy (80002)
| Contract | Address |
|---|---|
| AccessRegistry (proxy) | 0xda70c416Ef9fbc86719AfD9aEDb0EE43263aCd97 |
| APIEscrow (proxy) | 0xfd685eFeeB6E69358Cf87c9c5Bf41E56154461B1 |
| APIConsensus (proxy) | 0x81B78B79775C04F5c30DfBC17d9710EA5C3CB166 |
| NodeRegistry (proxy) | 0x4253705abB8026dB083afCC032993BdfF852e09C |
| EventLogger (proxy) | 0x6AF18184985b9e7B255dc63A6D256d155618bF96 |
| SylanToken (ERC‑20) | 0xCF922Aa372c087006cd2739689450bE4cc226bB7 |
| SylanStaking (proxy) | 0x4aB06cCD3B87A21452E39b626529737Cf1a0bC1D |
| SylanVesting (non‑upgradeable) | — |
| PresaleContract (proxy) | — |
Amoy admin notes: Deployer/owner:
0xA39333C781d3CE1f1c7C257B21DCB834d110F02F. Treasury:0xd0ea998198a3b40308c65fbbbd5bec7f9442e62e. Token: Sylan Test Token (SYLt), 100,000,000 initial supply.
Polygon Mainnet (137)
| Contract | Address |
|---|---|
| AccessRegistry (proxy) | — |
| APIEscrow (proxy) | — |
| APIConsensus (proxy) | — |
| NodeRegistry (proxy) | — |
| EventLogger (proxy) | — |
| SylanToken (ERC‑20) | 0xB9fFd177aea2Adb02ec26937734877A1Ab27e14B |
| SylanStaking (proxy) | — |
| SylanVesting (non‑upgradeable) | 0xdFF3643975E51E8D56DF91899c423c71e630BD23 |
| PresaleContract (proxy) | 0x89b47d19000A96Cf15ad4ACF3158F9f77C7fBC76 |
Mainnet notes: Owner/DEFAULT_ADMIN_ROLE:
0x34889585E2CEb652419BB8424894e0072E375Ee1(OWNER Safe). SylanToken logic:0x3378c86d9fD137F2dB7a428e794e6Fbe96d1D5eF; MINTER_ROLE granted to PresaleContract proxy. PresaleContract logic:0x23CE77a90Ff43Dfa627275997ed4FBd6Cb38d579; payment token USDC0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359; sale token0xB9fFd177aea2Adb02ec26937734877A1Ab27e14B;mintOnClaim = true. SylanVesting owner: same OWNER Safe.
Tip: When verifying a proxy, look for the EIP‑1967 implementation slot on the explorer to view the current logic address. Your dapp should call the proxy address.
Minimal ABIs (for dapps/SDKs)
These ABIs cover the common read/write calls used by the marketplace UI. Admin/governance methods are documented on each contract’s page under Contracts.
ERC‑20 (SYL)
[
{"type":"function","stateMutability":"view","name":"decimals","inputs":[],"outputs":[{"type":"uint8"}]},
{"type":"function","stateMutability":"view","name":"symbol","inputs":[],"outputs":[{"type":"string"}]},
{"type":"function","stateMutability":"view","name":"balanceOf","inputs":[{"name":"account","type":"address"}],"outputs":[{"type":"uint256"}]},
{"type":"function","stateMutability":"view","name":"allowance","inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"outputs":[{"type":"uint256"}]},
{"type":"function","stateMutability":"nonpayable","name":"approve","inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"outputs":[{"type":"bool"}]}
]AccessRegistry (reads used by clients)
[
{"type":"function","stateMutability":"view","name":"descriptorOf","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"tuple","components":[
{"name":"uri","type":"string"},
{"name":"contentHash","type":"bytes32"},
{"name":"updatedAt","type":"uint64"},
{"name":"version","type":"uint32"}
]}]},
{"type":"function","stateMutability":"view","name":"apiPlan","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"tuple","components":[
{"name":"accessType","type":"uint8"},
{"name":"price","type":"uint256"},
{"name":"duration","type":"uint256"},
{"name":"callLimit","type":"uint256"},
{"name":"active","type":"bool"}
]}]},
{"type":"function","stateMutability":"view","name":"consensusParams","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"tuple","components":[
{"name":"seqMonotonic","type":"bool"},
{"name":"maxSkewMs","type":"uint64"},
{"name":"maxTtlMs","type":"uint64"},
{"name":"providerSigner","type":"address"}
]}]},
{"type":"function","stateMutability":"view","name":"providerSignerOf","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"address"}]},
{"type":"function","stateMutability":"view","name":"seqMonotonic","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"bool"}]},
{"type":"function","stateMutability":"view","name":"maxSkewMs","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"uint64"}]},
{"type":"function","stateMutability":"view","name":"maxTtlMs","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"uint64"}]},
{"type":"function","stateMutability":"view","name":"isApiActive","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"bool"}]},
{"type":"function","stateMutability":"view","name":"consumerNonce","inputs":[{"name":"consumer","type":"address"},{"name":"apiId","type":"bytes32"}],"outputs":[{"type":"uint256"}]}
]APIEscrow (PPC & Subscription surface)
[
{"type":"function","stateMutability":"nonpayable","name":"lockForCall","inputs":[
{"name":"apiId","type":"bytes32"},
{"name":"requestHash","type":"bytes32"},
{"name":"expiresAtMs","type":"uint64"}
],"outputs":[{"type":"bytes32"}]},
{"type":"function","stateMutability":"nonpayable","name":"purchaseSubscription","inputs":[{"name":"apiId","type":"bytes32"}],"outputs":[]},
{"type":"function","stateMutability":"view","name":"withdrawableOf","inputs":[{"name":"account","type":"address"}],"outputs":[{"type":"uint256"}]},
{"type":"function","stateMutability":"nonpayable","name":"withdraw","inputs":[],"outputs":[]}
]APIConsensus (submit & finalize)
[
{"type":"function","stateMutability":"nonpayable","name":"submitSnapshot","inputs":[
{"name":"requestId","type":"bytes32"},
{"name":"snapshot","type":"tuple","components":[
{"name":"apiId","type":"bytes32"},
{"name":"seqNo","type":"uint256"},
{"name":"providerTs","type":"uint64"},
{"name":"ttl","type":"uint64"},
{"name":"contentHash","type":"bytes32"}
]},
{"name":"providerSig","type":"bytes"},
{"name":"pointerURI","type":"string"}
],"outputs":[]},
{"type":"function","stateMutability":"nonpayable","name":"finalize","inputs":[{"name":"requestId","type":"bytes32"}],"outputs":[]}
]NodeRegistry (essentials)
[
{"type":"function","stateMutability":"view","name":"isActive","inputs":[{"name":"node","type":"address"}],"outputs":[{"type":"bool"}]},
{"type":"function","stateMutability":"nonpayable","name":"stake","inputs":[{"name":"amount","type":"uint256"}],"outputs":[]},
{"type":"function","stateMutability":"nonpayable","name":"unstake","inputs":[{"name":"amount","type":"uint256"}],"outputs":[]}
]EventLogger (read surface)
[
{"type":"event","name":"Logged","inputs":[
{"name":"tag","type":"bytes32","indexed":true},
{"name":"emitter","type":"address","indexed":true},
{"name":"data","type":"bytes","indexed":false}
]}
]Importing in viem/Wagmi (example)
import type { Address } from 'viem'
import { erc20Abi } from 'viem'
import accessRegistryAbi from './abis/accessRegistry.min.json'
import apiEscrowAbi from './abis/apiEscrow.min.json'
import apiConsensusAbi from './abis/apiConsensus.min.json'
export const addresses = {
80002: { // Polygon Amoy
AccessRegistry: '0xda70c416Ef9fbc86719AfD9aEDb0EE43263aCd97',
APIEscrow: '0xfd685eFeeB6E69358Cf87c9c5Bf41E56154461B1',
APIConsensus: '0x81B78B79775C04F5c30DfBC17d9710EA5C3CB166',
NodeRegistry: '0x4253705abB8026dB083afCC032993BdfF852e09C',
EventLogger: '0x6AF18184985b9e7B255dc63A6D256d155618bF96',
SylanToken: '0xCF922Aa372c087006cd2739689450bE4cc226bB7',
SylanStaking: '0x4aB06cCD3B87A21452E39b626529737Cf1a0bC1D',
},
137: { // Polygon Mainnet
SylanToken: '0xB9fFd177aea2Adb02ec26937734877A1Ab27e14B',
PresaleContract: '0x89b47d19000A96Cf15ad4ACF3158F9f77C7fBC76',
SylanVesting: '0xdFF3643975E51E8D56DF91899c423c71e630BD23',
},
} satisfies Record<number, Record<string, Address>>Verification checklist (before publishing)
- Addresses are checksummed and match explorer pages.
- Proxies verified; implementation address visible via EIP‑1967 slot.
- ABI JSONs match deployed bytecode (no stale build).
- Networks table updated (Testnet → Mainnet).
- Changelog entry created in Deploy → Verifications.
Out of scope for this page
- Event signatures → Architecture → Events
- Admin/governance methods → Contracts pages per contract
- How to deploy/verify → Deploy section