ZeroForgeLive on 0G Galileo

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.

Address0xc3f997545da4AA8E70C82Aab82ECB48722740601
Owner / admin0x236E59315dD2Fc05704915a6a1a7ba4791cc3b5B
Oracle (current)0x4a5CbF36C2aE90879f7c2eF5dCC32Fecb0b569e3
EIP-712 domainSovereignClaw 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.

Address0x735084C861E64923576D04d678bA2f89f6fbb6AC
DESTROYED_SENTINELkeccak256("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:

  1. both contracts have non-empty bytecode at the recorded addresses,
  2. MemoryRevocation.agentNFT() equals the AgentNFT address,
  3. AgentNFT.revocationRegistry() equals the MemoryRevocation address,
  4. AgentNFT.oracle() equals the dev-oracle address,
  5. AgentNFT.owner() equals the deployer,
  6. name = "SovereignClaw Agent", symbol = "SCAGENT", and
  7. the DESTROYED_SENTINEL hash matches the canonical bytes.

10/10 green at every push to main.

Source