OpenRung
A free, privacy-first relay network that helps you reach the open internet. Open source and nonprofit-run.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Mint permanent ENS sub domains for AI agents under 402bot.eth | 402api.eth | 402mcp.eth No renewal, Parent Cannot Control giving minters true ownership.
翻訳待ち
Loading the full README.
Read the full README ↗ENS subname registration for AI agents — fully onchain on Ethereum.
Mint subnames under 402bot.eth, 402api.eth, or 402mcp.eth for 0.0015 ETH each. No renewals for holders, no middlemen, and the parent can't take the name back. Parent names are renewed from $X402ID trading fees.
🌐 Live: x402id.dev · IPFS mirror: x402id.eth.limo 🐦 Twitter/X: @x402identity
x402 Identity Hub gives AI agents a verifiable onchain identity through the ENS (Ethereum Name Service) infrastructure. Each minted subname is an ENS record in the NameWrapper contract, locked away from the parent at mint — transferable, resolvable, and composable with the broader ENS ecosystem.
| Name | Purpose |
|---|---|
[name].402bot.eth | Autonomous AI bots and agents |
[name].402api.eth | API-facing agents and services |
[name].402mcp.eth | MCP (Model Context Protocol) servers |
A name can also prove who gets paid: link it to your x402 endpoint at x402id.dev/verify and clients can check that the payout address in your 402 belongs to you. Setting this up is free for any .eth name you control, an x402 name or one you already own, on ENSv1 or ENSv2. See Verified Payee.
Two contracts on Ethereum mainnet, both Etherscan-verified.
| Contract | Address | Purpose |
|---|---|---|
X402SubnameRegistrar | 0xeb9e9ea385fe28b51a3f9a7d93fb893e0a1f9633 | Mints ENS subnames under the supported parents |
X402RegistrarForwarder | 0x05af104ce913e7ef39799bfada871817d3761778 | Splits payment between protocol and a third-party platform's treasury in a single tx |
The registrar interacts directly with the ENS NameWrapper contract to issue subnames with PARENT_CANNOT_CONTROL burned. Key functions:
| Function | Description |
|---|---|
register(node, label) | Mint a single subname |
batchRegister(nodes[], labels[]) | Mint multiple subnames in one tx |
isAvailable(node, label) | Check if a subname is available |
withdrawFees() | Owner: withdraw accumulated ETH |
Mint fee: 0.0015 ETH per name (protocol fee, set on-chain by setMintFee; clients read mintFee())
Batch: Up to 10 names per transaction
Platform fee: 0–0.05 ETH on top of the protocol fee, paid to a platform's treasury via the forwarder (see below)
ENSv2. ENS moved new registrations to ENSv2 on 2026-10-27. The three parents are unmigrated ENSv1 names, and minting through the NameWrapper keeps working for them (checked by simulating register on mainnet after the launch). They must stay on ENSv1: a parent migrated to ENSv2 would need a new registrar that calls register() on its subregistry.
Minting sets a subname's owner and resolver but writes no address record, so a fresh name resolves to nothing. After a mint, and in Set address for a name you already hold, the site asks where the name should say you get paid, then writes everything in one multicall:
addr(0x80000000)). Pre-checked only when the wallet has no contract code on Ethereum and Base (an EIP-7702 delegation still counts as an EOA). A contract wallet's address can belong to someone else on a chain where it was never deployed, so the default is never offered to one, and a failed check keeps it off.addr(501).The wallet sees the choice before it is asked to sign. Only address records are written, so any org.x402.payto set through /verify is left alone. The mint and address transactions suggest a low tip (the network's estimate with a 0.01 gwei floor) instead of the wallet's default; a wallet that applies its own fees can still override it.
External platforms can earn from registrations by mounting the x402id widget and setting their own platform fee — paid atomically to a treasury address they specify. The forwarder enforces a 0.05 ETH cap on platform fees and the breakdown is shown to users line-by-line before they sign.
Full integration guide: x402id.dev/integrate
<div data-x402id
data-treasury="0xYourPlatformTreasury"
data-platform-fee-wei="1000000000000000"
data-parents="402bot.eth,402api.eth,402mcp.eth"
data-theme="light"></div>
<script src="https://x402id.eth.link/embed.js" async></script>
data-theme takes light, dark, lime, orange, or purple. Try them at /widget-demo.
npm install @x402identity/widget-react viem
import { X402Widget } from "@x402identity/widget-react";
import { mainnet } from "viem/chains";
import { namehash, parseEther } from "viem";
<X402Widget
registrar="0xeb9e9ea385fe28b51a3f9a7d93fb893e0a1f9633"
forwarder="0x05af104ce913e7ef39799bfada871817d3761778"
parents={[
{ label: "402bot.eth", node: namehash("402bot.eth") },
{ label: "402api.eth", node: namehash("402api.eth") },
{ label: "402mcp.eth", node: namehash("402mcp.eth") },
]}
platformTreasury="0xYourPlatformTreasury"
platformFeeWei={parseEther("0.001")}
chain={mainnet}
/>
This is the beginning of the README. Read the rest at the original. Read the full README ↗