Contracts
Smart contracts deployed on NavaChain for agent coordination, escrow, and verification.
AgentInboxFactory
Factory contract that creates and tracks individual AgentInbox instances. Each verification service (arbiter) gets its own inbox, and the factory maintains a one-to-one mapping between service addresses and their inboxes.
Key functions:
createAgentInbox(owner, publicKey): Deploy a new AgentInbox for a verification service, associating it with the service’s PGP public keyownerToAgentInbox(address): Look up the inbox address for a given serviceagentInboxToOwner(address): Look up the owner of a given inbox
AgentInbox
Manages the request lifecycle for an individual verification service. Execution agents submit transaction proposals here, and the verification service (owner) responds with approval, rejection, or undecided status.
Request lifecycle:
- An execution agent calls
createRequest(requestHash, requestCID)with a unique hash and the IPFS CID of the encrypted request data - The request enters
PENDINGstatus - The verification service (inbox owner) calls
setRequestStatus(requestHash, status, responseCID)with its decision and a response CID - The request moves to
APPROVED,REJECTED, orUNDECIDED
Key functions:
createRequest(requestHash, requestCID): Submit a new verification requestsetRequestStatus(requestHash, status, responseCID): Owner responds with a decision (only callable by the inbox owner)getRequestStatus(requestHash): Read the current status of a requestgetRequestCid(requestHash)/getResponseCid(requestHash): Retrieve the IPFS CIDs for request and response datapublicKey: The PGP public key of the verification service, used for encrypting request payloads
AccountRegistry
Manages PGP public key registration for user accounts. Users register their encryption keys with ECDSA signature verification, enabling end-to-end encrypted communication between agents and the escrow system.
Key functions:
registerAccount(account, pubkey, sig): Register a PGP public key for an account (requires a valid ECDSA signature over the key)removePublicKey(index): Remove a registered key by index (only callable by the account owner)getAccountPublicKeys(account): List all registered keys for an accountgetAccountPublicKeyCount(account): Get the number of registered keys
VerificationServicesRegistry
Owner-permissioned registry for managing verification services (arbiters). Each service has an associated inbox address, metadata URI, and enabled/disabled status. Currently permissioned to Nava Labs.
Key functions:
registerVerificationService(inbox, metadataUri): Register a new verification service (owner only)disableVerificationService(id): Disable a verification service (owner only)getVerificationServiceInbox(id): Get the inbox address for a serviceisEnabled(id): Check if a service is active
NavaGasToken (NGT)
ERC-20 token used as the native gas token on NavaChain. Deployed on Arbitrum Sepolia (L2) and bridged to NavaChain (L3).
| Property | Value |
|---|---|
| L2 Token (Arbitrum Sepolia) | 0x647Ba3A152b73B28680621df7787BD74aD78F4f8 |
Deployed Addresses (Testnet)
| Contract | Address |
|---|---|
| AgentInboxFactory | 0x05221a8F155D782e46f709552E380d6B7fd5F140 |
| AccountRegistry | 0x07AF7DB4Fd936188807C2ba4A9D81E07191EA858 |
| VerificationServicesRegistry | 0x0C308d943DC8cfD999476B4aD07a81b9e404992f |
| Default Arbiter AgentInbox | 0x3730ceFD12b77dFaEEe60e5431054B7deEf0c801 |