Open-source Soroban framework for tokenizing real-world assets on Stellar.
An open-source Stellar equivalent of ERC-3643 (T-REX standard) — built for regulated securities, real estate, treasury bonds, invoices, and any real-world asset requiring compliance enforcement.
┌──────────────────────────────────────────────────────────────┐
│ RWA Token (SEP-41) │
│ balance, transfer, approve, mint, burn, pause, metadata │
│ ┌──────────────┐ ┌──────────────┐ ┌────────────────────┐ │
│ │ Compliance │ │ Dividend │ │ Investor Registry │ │
│ │ KYC/AML │ │ Distribution │ │ SEP-12 Provider │ │
│ │ Whitelist │ │ Snapshot │ │ Investor Info │ │
│ │ Blacklist │ │ Claim │ │ Pagination │ │
│ │ Jurisdiction │ │ Deposit │ │ KYC Tracking │ │
│ └──────────────┘ └──────────────┘ └────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
Implements SEP-41 (Stellar Token Interface) with RWA compliance extensions:
- SEP-41:
name,symbol,decimals,balance,total_supply,transfer,transfer_from,approve,allowance - RWA Extensions:
mint,burn,set_paused,claim_dividend,pending_dividend - Admin Controls:
set_compliance,set_dividend,set_metadata - Metadata: Asset type, jurisdiction, asset class, metadata URI
Pluggable KYC/AML enforcement with configurable rules:
- KYC status management (0=unknown, 1=pending, 2=approved, 3=rejected)
- Whitelist/blacklist support
- Per-investor transfer limits
- Jurisdiction-based transfer restrictions
- Accredited investor verification
- Bulk KYC updates
- Pausable
SEP-12 compatible investor management:
- Investor registration with jurisdiction and accreditation
- KYC provider reference tracking (SEP-12 integration)
- Paginated investor queries
- KYC approval status checks
Yield distribution engine for token holders:
- Deposit yield/dividends
- Balance snapshot mechanism
- Per-share distribution calculation
- Individual claim system
- Full query support (total deposited, distributed, undistributed)
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Install Soroban CLI (optional, for deployment)
cargo install soroban-cli# Build all contracts and CLI
make build
# Run all tests
make test
# Clean build
make clean && make build# Deploy all contracts using the CLI
cargo run -p rwa-cli -- deploy \
--admin GABC... \
--name "US Treasury Bond 2026" \
--symbol "TBILL" \
--asset-type treasury_bond \
--jurisdiction US \
--asset-class government
# Or use soroban-cli directly
soroban contract deploy --wasm contracts/rwa-token/target/wasm32-unknown-unknown/release/rwa_token.wasmrwa-cli configure \
--token-id <token_contract_id> \
--compliance-id <compliance_contract_id> \
--dividend-id <dividend_contract_id> \
--registry-id <registry_contract_id> \
--admin GABC... \
--jurisdictions "US,EU,UK"# Register investor
rwa-cli investor register \
--registry-id <registry_id> \
--admin GABC... \
--investor GDEF... \
--jurisdiction US \
--accredited true
# Set KYC status
rwa-cli investor kyc \
--contract-id <compliance_id> \
--admin GABC... \
--investor GDEF... \
--status 2rwa-cli token mint \
--token-id <token_id> \
--admin GABC... \
--to GDEF... \
--amount 10000000000# Deposit yield
rwa-cli dividend deposit \
--dividend-id <dividend_id> \
--admin GABC... \
--amount 1000000
# Take snapshot
rwa-cli dividend snapshot \
--dividend-id <dividend_id> \
--admin GABC...
# Distribute
rwa-cli dividend distribute \
--dividend-id <dividend_id> \
--admin GABC...
# Claim (as investor)
rwa-cli dividend claim \
--dividend-id <dividend_id> \
--investor GDEF...import { RwaTokenizationSDK } from '@rwa-tokenization/sdk';
const sdk = new RwaTokenizationSDK({
rpcUrl: 'https://soroban-testnet.stellar.org',
networkPassphrase: 'Test SDF Network ; September 2015',
});
const token = sdk.createTokenClient('<contract_id>');
const name = await token.name();
const supply = await token.totalSupply();├── contracts/
│ ├── rwa-token/ # SEP-41 RWA token with compliance hooks
│ ├── compliance/ # KYC/AML, whitelist, transfer limits
│ ├── investor-registry/ # SEP-12 investor management
│ └── dividend/ # Yield distribution module
├── cli/ # Asset issuer CLI tooling
├── sdk/ # TypeScript SDK
├── Cargo.toml # Rust workspace
└── Makefile # Build automation
# Run all tests
cargo test
# Run specific contract tests
cargo test -p rwa-token
cargo test -p compliance
cargo test -p investor-registry
cargo test -p dividendMIT