Rules enforced on-chain
Only verified investors can hold BharatRWA tokens. The check happens inside the token on every transfer, on both chains, so it can't be bypassed by using another app.
Ethereum ERC-7943
- ZK proof
Backend proves age 18+, KYC and sanctions status with Noir. Tied to the wallet.
- ComplianceManagerV2
Verifies the proof on-chain, checks it's for msg.sender, records approval with expiry.
- BharatRWATokenV2
ERC-7943: canSend / canReceive / canTransfer on every transfer, mint and burn.
The ZK proof is verified by the contract itself. The V2 contracts are built and tested but not yet deployed on Sepolia; current demo tokens use ComplianceManager V1.
Solana Token-2022
- ZK proof
Same proof, verified off-chain by the backend.
- Attester → allowlist
approve_investor writes an entry PDA (approved, jurisdiction, expiry) and thaws the account.
- Transfer hook
Token-2022 calls the hook on every transfer; it rejects unless both owners are allowlisted.
The chain trusts the attester's off-chain check. Live on devnet: BMOT mint.
Would this transfer be allowed?
Reads the live compliance state from Sepolia or Solana devnet. Nothing is signed or sent.
ERC-7943 on Token-2022
| ERC-7943 | Token-2022 equivalent | Limitation |
|---|---|---|
canSend / canReceive / canTransfer | Transfer hook reads both allowlist entries | Not a view function; the hook ignores amounts |
setFrozenTokens / getFrozenTokens | Freeze authority + accounts frozen by default | Whole accounts only, no partial amounts |
forcedTransfer | Permanent delegate | Frozen source must be thawed and re-frozen in the same transaction |
ERC-165 0x3edbb4c4 | None | Clients inspect the mint's extensions instead |
Metadata (ERC-20 name/symbol) | Metadata pointer + on-mint metadata | No ERC-7943 equivalent needed |
Full table and trade-offs in the README · ERC-7943 spec
Solana devnet transactions
- Approve investor: write allowlist entry + thaw account3Tfxf8sy…8KDmcD ↗
- Mint 1,000 BMOT to an approved investor52h2Xyiy…L7Cjbq ↗
- Transfer between allowlisted investorsruBEr42G…Nn45jC ↗
- Issuer freeze + legal holdg5mXu39y…C5stAT ↗
- Forced transfer by the permanent delegate4xT69Pbh…CJGa3c ↗
Programs: compliance · transfer hook