Skip to content
View RWA-ID's full-sized avatar
πŸ’­
Available
πŸ’­
Available

Block or report RWA-ID

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
RWA-ID/README.md

RWA ID

Human-Readable Identity Infrastructure for Tokenized Real World Assets

Website Whitepaper Technical Docs Status

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

🎯 Problem

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.


✨ Solution

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)

πŸš€ Status

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

πŸ“‹ How It Works

For Platforms (3-Step Integration)

  1. 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)
  2. 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]
  3. 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

Revenue Sharing Model

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.


πŸ“‘ Deployed Contracts

Ethereum Mainnet

Contract Address
RWAIDv2 0xD0B565C7134bDB16Fc3b8A9Cb5fdA003C37930c2
Wildcard Resolver v2 0x765FB675AC33a85ccb455d4cb0b5Fb1f2D345eb1
USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

Sepolia Testnet

Contract Address
RWAIDv2 0xb0b023c9eD18dCD573B8befC851974f20126ab92
Wildcard Resolver v2 0xE591Cbe3802e3E4908731E3D4B056cd8b08AE520
MockUSDC 0x4CcF36b273dA06D70B235d605639b3f8a6CA6B03

CCIP-Read Gateway

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.


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   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  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Developer Setup

git clone https://github.com/RWA-ID/RWA-ID.git
cd RWA-ID
npm install
cp .env.example .env   # fill in your keys

Run Tests

npx hardhat test

68 tests β€” all passing.

Deploy to Sepolia

npx hardhat run scripts/deploy-sepolia.js --network sepolia

Deploy to Mainnet

npx hardhat run scripts/deploy-mainnet.js --network mainnet

πŸ“¦ Repository Structure

contracts/
  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

πŸ”’ Regulatory Posture

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

πŸ“ž Contact

Founder: Hector Morel Email: partner@rwa-id.com Website: rwa-id.com


πŸ“„ License

MIT


πŸ™ Built With


RWA ID β€” Identity Infrastructure for the Tokenized Economy

Website β€’ Whitepaper β€’ Technical Docs β€’ Contact

Popular repositories Loading

  1. ai-bot-registrar ai-bot-registrar Public

    ENS Subdomain Registrar For AI Agents/Bots β€’ ERC-8004 Compatible β€’ Built For The Agent Economy

    JavaScript 1

  2. onchain-id-protocol onchain-id-protocol Public

    Programmable Identity Infrastructure For Robots | Autonomous Machines | Devices | Drones | Vehicles | Powered By Ethereum + ENS

    TypeScript

  3. RWA-ID RWA-ID Public

    Identity Infrastructure For RWA Platforms And Client Wallets | Human-Readable | Verifiable Across Chains | Built With ENS Β· Ethereum Β· CCIP

    JavaScript

  4. ethereumagent-frontend ethereumagent-frontend Public

    ERC-8004 AI Agent Marketplace β€” Sepolia testnet, IPFS-deployed via ethereumagent.eth

    TypeScript

  5. ethereumagent-marketplace ethereumagent-marketplace Public

    ERC-8004 Agent Marketplace β€” Solidity smart contracts (AgentNFT, PerformanceOracle, AgentMarketplace, RevenueDistributor) deployed on Sepolia

    Solidity

  6. x402-ipfs-agent x402-ipfs-agent Public

    Autonomous IPFS storage agent using x402 micropayments on Base mainnet

    JavaScript