Contracts
Base mainnet deployment report and verification guide for Syntrophic smart contracts.
Date: March 22-23, 2026 (CDT/UTC)Network: Base Mainnet (Chain ID 8453)Agent ID: 32055
1) What We Built and Deployed
- ERC8004RegistryAdapter (writes syntrophic metadata)Address:
0x63DCE10906BB3D3C8280A3fa578594D261C4b804BaseScan: 0x63DCE109...C4b804 - SRPVault (bonding/staking logic)Address:
0xb3E75c11957a23F9A8DF2A2eB59513832c8d1248BaseScan: 0xb3E75c11...8d1248 - ERC-8004 Registry:
0x8004A169FB4a3325136EB29fA0ceB6D2e539a432BaseScan read proxy: Open Read Contract - Bond amount configured in vault:
0.00001 ETH(10000000000000wei)
2) Mainnet Transactions Executed
Deployment and wiring:
- Adapter deploy: tx 0x9e994f...2529f
- Vault deploy: tx 0x4de898...7d816b
- Adapter setVault: tx 0x39ed65...a4b56d
First live bond:
- bond(32055): tx 0xbdde5b...696e52
Authorization + metadata backfill:
- Approval correction: tx 0x75d39d...809e0
- setApprovalForAll: tx 0x4aa742...cdd80
- syntrophic.validator: tx 0xe4f227...fea20
- syntrophic.status: tx 0xf8fff1...edb0f
- syntrophic.score: tx 0x53745f...50dd3
- syntrophic.reviewCount: tx 0x5ef05b...ca565
- syntrophic.updatedAt: tx 0xcea137...43743
3) Current On-Chain State (Expected)
Vault:
isBonded(32055) = truegetBondStatus(32055)shows staker0x5deb87fF19BBeCFc9928eD5B3801736AfFB4359D, amount10000000000000, score100.
ERC-8004 metadata keys:
syntrophic.status = 0x424f4e444544(BONDED)syntrophic.score = 100syntrophic.reviewCount = 0syntrophic.updatedAt = 1774233303(2026-03-23 02:35:03 UTC)syntrophic.validator = 0xb3E75c11957a23F9A8DF2A2eB59513832c8d1248
4) How to Verify On-Chain (UI)
- Open ERC-8004 registry read page: Read Proxy Contract
- Run
getMetadata(uint256,string)withagentId=32055for:syntrophic.statussyntrophic.scoresyntrophic.reviewCountsyntrophic.updatedAtsyntrophic.validator - Optional vault checks: SRPVault Read Contract and call
isBonded(32055)andgetBondStatus(32055).
5) How to Verify On-Chain (CLI)
cast call 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 "getMetadata(uint256,string)(bytes)" 32055 "syntrophic.status" --rpc-url https://mainnet.base.org cast call 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 "getMetadata(uint256,string)(bytes)" 32055 "syntrophic.score" --rpc-url https://mainnet.base.org cast call 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 "getMetadata(uint256,string)(bytes)" 32055 "syntrophic.reviewCount" --rpc-url https://mainnet.base.org cast call 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 "getMetadata(uint256,string)(bytes)" 32055 "syntrophic.updatedAt" --rpc-url https://mainnet.base.org cast call 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 "getMetadata(uint256,string)(bytes)" 32055 "syntrophic.validator" --rpc-url https://mainnet.base.org cast --to-ascii 0x424f4e444544 cast --to-dec 0x0000000000000000000000000000000000000000000000000000000000000064 cast --to-dec 0x0000000000000000000000000000000000000000000000000000000069c0a6d7 cast parse-bytes32-address 0x000000000000000000000000b3e75c11957a23f9a8df2a2eb59513832c8d1248
6) Note on Agent Scanner UI
You may not immediately see syntrophic.* labels rendered in scanner UIs due to indexer/parser timing. BaseScan read calls are the source of truth for on-chain state.