Human-Readable Identity Infrastructure for Tokenized Real World Assets
RWA ID is a non-custodial identity layer that enables RWA platforms to issue human-readable, soulbound ENS subdomains for clients, tokenized assets, and issuers. Built on proven Web3 standards (ENS + EIP-3668 CCIP-Read), RWA ID provides universal identity resolution across wallets and dApps.
joe.test.rwa-id.eth
RWA platforms today face critical identity infrastructure challenges:
- Opaque wallet addresses create poor user experience
- Fragmented identities across chains hinder interoperability
- No shared infrastructure forces every platform to build internally
- Poor legibility for assets and participants reduces institutional trust
Result: Every platform builds identity systems independently. Nothing interoperates.
RWA ID provides neutral, shared identity infrastructure that:
- β
Issues human-readable names (e.g.,
joe.test.rwa-id.eth) - β Resolves in all major wallets (MetaMask, Trust, Rainbow, Uniswap)
- β USDC claim fees with automatic 70/30 platform/protocol split on-chain
- β Soulbound or transferable β configurable per project
- β Requires no custody or personal data collection
- β Uses proven standards (ENS + EIP-3668 CCIP-Read)
v2 is live on Ethereum mainnet
- β Production contracts deployed and verified on Etherscan
- β 25 top RWA platform slugs reserved
- β
CCIP-Read gateway live at
gateway.rwa-id.com - β ENS wildcard resolver active β names resolve in MetaMask & Trust Wallet
- β Platform console and client claim portal operational
-
Create Project Namespace
- Platform connects wallet at rwa-id.com
- Registers namespace (e.g.,
test.rwa-id.eth) β free to create - Optionally sets a USDC claim fee (70% goes to platform treasury 30% to RWA ID)
-
Upload Allowlist
- Submit CSV mapping names to wallet addresses
- System computes Merkle root, commits it on-chain, and uploads proofs to IPFS via Pinata
- A shareable claim URL is generated automatically:
rwa-id.com/claim/[projectId]/[cid]
-
Clients Claim Identities
- Platform shares the claim URL with clients (email, dashboard, etc.)
- Client opens the URL β their wallet is auto-detected from the proof file, no manual input needed
- Client approves USDC and confirms the claim in two wallet steps
- Identity NFT minted β resolves immediately across all ENS wallets
- Format:
client.yourplatform.rwa-id.eth
Every claim pays a USDC fee β always split 70/30 on-chain between the platform treasury and RWA ID. The fee amount depends on whether the platform set one:
| Scenario | Effective Fee | Platform (70%) | RWA ID (30%) |
|---|---|---|---|
| Platform sets no fee | $0.50 minimum enforced by contract | $0.35 | $0.15 |
| Platform sets $1.00 | $1.00 | $0.70 | $0.30 |
| Platform sets $5.00 | $5.00 | $3.50 | $1.50 |
The $0.50 minimum is enforced at the contract level β it cannot be bypassed. If a platform sets claimFee = 0, the contract automatically applies the minimum and distributes it with the same 70/30 split.
| Contract | Address |
|---|---|
| RWAIDv2 | 0xD0B565C7134bDB16Fc3b8A9Cb5fdA003C37930c2 |
| Wildcard Resolver v2 | 0x765FB675AC33a85ccb455d4cb0b5Fb1f2D345eb1 |
| USDC | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 |
| Contract | Address |
|---|---|
| RWAIDv2 | 0xb0b023c9eD18dCD573B8befC851974f20126ab92 |
| Wildcard Resolver v2 | 0xE591Cbe3802e3E4908731E3D4B056cd8b08AE520 |
| MockUSDC | 0x4CcF36b273dA06D70B235d605639b3f8a6CA6B03 |
Gateway URL: https://gateway.rwa-id.com/{sender}/{data}.json
The resolver implements EIP-3668 (CCIP-Read) to enable off-chain resolution lookups with on-chain signature verification.
βββββββββββββββ
β Wallet β
β (User) β
ββββββββ¬βββββββ
β Resolve: joe.test.rwa-id.eth
β
ββββββββββββββββββββ
β ENS Registry β
β (Ethereum) β
ββββββββ¬ββββββββββββ
β Wildcard Resolver β 0x765F...
β
ββββββββββββββββββββ
β CCIP-Read β
β Gateway β
β gateway.rwa-id.comβ
ββββββββ¬ββββββββββββ
β Looks up nodeToTokenId + ownerOf in RWAIDv2
β Returns signed (node, address, hash, sig)
β
ββββββββββββββββββββ
β resolveWithProof β
β verifies sig β
β returns address β
ββββββββββββββββββββ
git clone https://github.com/RWA-ID/RWA-ID.git
cd RWA-ID
npm install
cp .env.example .env # fill in your keysnpx hardhat test68 tests β all passing.
npx hardhat run scripts/deploy-sepolia.js --network sepolianpx hardhat run scripts/deploy-mainnet.js --network mainnetcontracts/
RWAIDv2.sol β Main v2 registry (ERC-721 + USDC fees + Merkle allowlist)
RwaIdWildcardResolverV2.sol β ENSIP-10 wildcard resolver (CCIP-Read / EIP-3668)
mocks/MockUSDC.sol β Test USDC (Sepolia only)
RwaIdRegistry.sol β v1 contract (legacy)
RwaIdWildcardResolver.sol β v1 resolver (legacy)
scripts/
deploy-mainnet.js β Deploy to Ethereum mainnet
deploy-sepolia.js β Deploy to Sepolia testnet
reserve-slugs.js β Propose slug reservations via Safe multisig
verify-reservations.js β Verify reserved slugs on-chain
set-trusted-signer.js β Update gateway signer via Safe multisig
test/
RWAIDv2.test.js β 68 contract tests
RWA ID operates as infrastructure only with minimal regulatory surface area:
| What RWA ID Does | What RWA ID Does NOT Do |
|---|---|
| β Provide identity references | β Collect personal data |
| β Enable human-readable names | β Perform KYC/verification |
| β Facilitate on-chain resolution | β Assert identity claims |
| β Support platform operations | β Custody funds or assets |
Founder: Hector Morel Email: partner@rwa-id.com Website: rwa-id.com
MIT
RWA ID β Identity Infrastructure for the Tokenized Economy
Website β’ Whitepaper β’ Technical Docs β’ Contact