Skip to main content

RWA Development Manual

This project is a real-world asset (RWA) issuance and transfer system based on the ERC-3643 (T-REX) standard. In one sentence: it turns a real-world asset into on-chain tokens and allows only eligible investors to hold and transfer them.

This documentation is for developers who are new to the project. After reading the six chapters in order, you should be able to explain which contracts make up the system, how an asset is issued, how an investor becomes eligible to hold it, which methods mint and burn tokens, and how to query the results on-chain.


1. At a glance

QuestionAnswer
What is this?A qualification-gated token issuance system based on ERC-3643
How does it differ from a regular token?A regular ERC-20 can be transferred whenever a balance is available; this system also requires an eligible recipient and a compliant transaction
Token compatibilityFully ERC-20 compatible; wallets and exchanges can read balances and monitor Transfer events as usual
How many contracts represent one asset?Six core contracts form a Suite and are deployed together by a factory
Who determines whether a person is eligible?IdentityRegistry
Who determines whether a transaction is compliant?ModularCompliance
Where is eligibility evidence stored?In Claims on the investor's own ONCHAINID contract
Are identity-document images stored on-chain?No. The chain stores only the conclusion that a given qualification has been approved
EnvironmentsBohr Testnet (Chain ID 968) and BOT Mainnet capability demo (Chain ID 677), each with an independent PRWA Suite

The key statement used throughout this documentation is:

Token maintains the ledger, IdentityRegistry determines whether a person is eligible, and ModularCompliance determines whether a transaction is compliant.


2. Main system flow

The path from asset launch to investor ownership has four steps:

Key action and verifiable result for each step:

StepMain callVerifiable result
Issue the assetTREXGateway.deployTREXSuiteObtain the Token address and the five supporting contract addresses
Onboard an investorONCHAINIDGateway.deployIdentityForWalletIdentity.addClaimIdentityRegistry.registerIdentityIdentityRegistry.isVerified(wallet) returns true
Mint or burnToken.mint / Token.burnA Transfer event is emitted and balanceOf changes
TransferToken.transferThe transfer succeeds when every check passes; a failed check reverts the whole transaction

3. Documentation map

ChapterContentWhen to read it
01 · Project and integration overviewProject scope, ERC-3643 differences, integration levels, and public environmentsRead first to establish the overall model
02 · Core conceptsWhat ONCHAINID, Claim, Topic, trusted issuer, identity registry, and compliance rules meanUse when a term is unclear
03 · System architecture and rolesSystem layers, contract responsibilities, participant roles, and stable proxy addressesRead to understand how the system is organized
04 · Complete business processesComplete flows and checks for issuance, onboarding, minting, burning, and transfersRead before operating the system
05 · Contract interfaces and eventsContract methods, events, call examples, and minimum ABIsUse as a development reference
06 · Environment configuration and acceptanceTestnet and BOT Mainnet configurations, public samples, and acceptance checksUse when integrating or validating the system

Recommended reading order:

For the shortest path, read this page, then 04 · Complete business processes, then 06 · Environment configuration and acceptance.


4. Environment quick reference

Test environment

ItemValue
NetworkBohr Testnet
Chain ID968
RPChttps://rpc.bohr.life
Block explorerhttps://scan.bohr.life
Asset nameProject Real World Asset
Asset symbolPRWA
Decimals6
Token address0x922835859623d6F3b99a2742D585E093bBA0a740
IdentityRegistry address0x17e33C394Ab783D6786011d01681D8Ad540C5F53
ONCHAINID Gateway0x3B0FE2CD501534cbcbD1F97ec823Da535fc0224f

BOT Mainnet capability demo

ItemValue
NetworkBOT Chain Mainnet
Chain ID677
RPChttps://rpc.botchain.ai
Block explorerhttps://scan.botchain.ai
Token address0x9115A020821fDFdf265Eea8788a500d17557c370
IdentityRegistry address0x7752dd107CDec2dF5feD585BCC70457c5312021a
ONCHAINID Gateway0xa6B4E53128915E0f980DD455De9F70B6Dc61E1ee

See 06 · Environment configuration and acceptance and the RWA Address Table for the complete configuration.


5. References