Contracts & addresses
Everything onchain, by address
Current NOMEN deployment · Sepolia
Deployed September 11, 2026 under nomen-demo.eth, with a new operator wallet. The deployed registrar and resolver bytecode match the local build. Registry permissions, current ownership, Merkle eligibility, a real claim, non-transferability and ENS text records were checked against Sepolia. This is testnet deployment verification, not an independent security audit.
reader.nomen-demo.eth identifies NOMEN-owned test agent #10226. View the claim transaction. The older registrar at 0x0ae4…8686 and the old nomen.eth test namespace are no longer used by this app.
Historical trial receipts
These deployed contracts remain readable and historical evidence can still be verified. The current workbench no longer publishes trial receipts. New public feedback uses Orders: a 5 test USDC payment on the agent’s network commits the initial complaint draft; signed statements and subsequent updates are stored in Neon. The payment is not a verified purchase from an agent.
NomenEvaluationRegistry is an append-only receipt contract pinned to the ERC-8004 Identity Registry on each chain. It rejects unknown agent ids and stores only hashes, the wallet that submitted the review, the outcome and observation block. It has no owner, fees or upgrade authority. A receipt proves what that wallet recorded; it does not turn a user review into a NOMEN certification.
| Network | Deployment | Status |
|---|---|---|
| Sepolia | 0xEd3dFB7c561CEf35F51e9613f8E89dD821e16605 | test receipt confirmed |
| Arbitrum Sepolia | 0x33D6893fA6015EeecE1d9232A8D0659F42eF669e | test receipt confirmed |
| Arc Testnet | 0x32F26E5807af0C9e8ac71F7F4351164e2Eb60878 | test receipt confirmed |
| Contract | Address | Notes |
|---|---|---|
| NomenResolver | 0x8443a2C263e770C5180E533B7B571BA6eED029f7 | Returns current endorsement text; only the registrar can write records. |
| NomenRegistrar | 0x481d5fbd6f7B955D34Dbe3069B30dFFd3C15E81C | Issues and revokes names. Holds ROLE_REGISTRAR, ROLE_UNREGISTER, ROLE_RENEW on the subregistry. |
| nomen-demo.eth subregistry | 0x01F0e0F27F30C445C3F5e48Fc9873849e06B76c8 | An ENSv2 PermissionedRegistry proxy, the same template ENS uses for .eth itself. Attached to nomen-demo.eth with setSubregistry. |
| nomen-demo.eth | registered in ETHRegistry | One year, paid in MockUSDC through the ENSv2 ETHRegistrar (commit, wait 60 s, reveal). |
ENSv2 on Sepolia (ENS deployments)
| Contract | Address |
|---|---|
| ETHRegistry | 0xBDC85dD5b15D7ecb354cd7cb6f2c50b4f2c4F0E2 |
| ETHRegistrar | 0xa88553F454b77203B0D036A05c894d555EAAa2Cc |
| PublicResolverV2 | 0xe7b9A25607E02da8145E4EB1836CA539E53f11f7 |
ERC-8004 registries
| Chain | Identity | Reputation |
|---|---|---|
| Ethereum mainnet | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | 0x8004BAa17C55a88189AE136b182e5fdA19dE9b63 |
| Sepolia | 0x8004A818BFB912233c491871b3d84c89A494BD9e | 0x8004B663056A597Dffe9eCcC1965A193B7388713 |
| Arbitrum Sepolia | 0x8004A818BFB912233c491871b3d84c89A494BD9e | 0x8004B663056A597Dffe9eCcC1965A193B7388713 |
| Arc testnet | 0x8004A818BFB912233c491871b3d84c89A494BD9e | 0x8004B663056A597Dffe9eCcC1965A193B7388713 |
Sepolia, Arbitrum Sepolia and Arc share addresses because the testnet registries were deployed deterministically.
Registrar interface
function claim(string label, uint256 agentId, bytes32[] proof) returns (uint256 tokenId);
function isNamed(uint256 agentId) view returns (bool live, string label, uint64 expiry);
function isEligible(uint256 agentId, bytes32[] proof) view returns (bool);
function eligibilityRoot() view returns (bytes32);
function eligibilitySource() view returns (string); // where the scan behind the root lives
// admin
function publishRoot(bytes32 root, string source);
function revoke(uint256 agentId, string reason);
function renew(uint256 agentId, bytes32[] proof);
function reinstate(uint256 agentId, bytes32[] proof);
event NameClaimed(uint256 indexed agentId, address indexed owner, string label, uint256 tokenId);
event NameRevoked(uint256 indexed agentId, string label, string reason);
event RootPublished(bytes32 indexed root, string source, uint64 at);
event AgentReinstated(uint256 indexed agentId);Tests
Thirty local Foundry tests (using registry mocks, not a live-network certification): ownership, merkle eligibility, double claims, non-transferability, revocation and re-claim, expiry, admin gating, deterministic scan proofs and append-only evaluation receipts. A separate test reproduces ENSIP-25’s ERC-7930 example byte for byte and checks the Sepolia and Arc chain references.