Contracts on 0G Galileo Testnet
Deployed Phase 2 (May 2026), bytecode-verified. chainId 16602. Both contracts are immutable post-deploy except for the owner-only setOracle rotation on AgentNFT.
AgentNFT
ERC-7857-style iNFT — mint, transfer-with-reencryption, revoke, recordUsage. Standard ERC-721 transfer paths are disabled; every ownership change must go through the oracle re-encryption gate so the new owner can read the agent's memory.
| Address | 0xc3f997545da4AA8E70C82Aab82ECB48722740601 |
|---|---|
| Owner / admin | 0x236E59315dD2Fc05704915a6a1a7ba4791cc3b5B |
| Oracle (current) | 0x4a5CbF36C2aE90879f7c2eF5dCC32Fecb0b569e3 |
| EIP-712 domain | SovereignClaw AgentNFT · v1 · chainId 16602 |
MemoryRevocation
Public, append-only revocation registry. Bound to AgentNFT at construction (immutable). Anyone can call isRevoked(tokenId) / getRevocation(tokenId); only AgentNFT can write.
| Address | 0x735084C861E64923576D04d678bA2f89f6fbb6AC |
|---|---|
| DESTROYED_SENTINEL | keccak256("SOVEREIGNCLAW:DESTROYED:v1") |
Verifying yourself
Clone the repo and run pnpm check:deployment. The script reads deployments/0g-testnet.json, hits the live RPC, and asserts:
- both contracts have non-empty bytecode at the recorded addresses,
MemoryRevocation.agentNFT()equals the AgentNFT address,AgentNFT.revocationRegistry()equals the MemoryRevocation address,AgentNFT.oracle()equals the dev-oracle address,AgentNFT.owner()equals the deployer,name = "SovereignClaw Agent",symbol = "SCAGENT", and- the
DESTROYED_SENTINELhash matches the canonical bytes.
10/10 green at every push to main.