Skip to content

Real-World-Asset-RWA-Tokenization/Real-World-Asset-RWA-Tokenization-Backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RWA Tokenization Framework

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.

Architecture

┌──────────────────────────────────────────────────────────────┐
│                     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    │  │
│  └──────────────┘  └──────────────┘  └────────────────────┘  │
└──────────────────────────────────────────────────────────────┘

Contracts

1. RWA Token (contracts/rwa-token/)

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

2. Compliance Module (contracts/compliance/)

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

3. Investor Registry (contracts/investor-registry/)

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

4. Dividend Distribution (contracts/dividend/)

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)

Getting Started

Prerequisites

# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Install Soroban CLI (optional, for deployment)
cargo install soroban-cli

Build & Test

# Build all contracts and CLI
make build

# Run all tests
make test

# Clean build
make clean && make build

Usage

1. Deploy Contracts

# 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.wasm

2. Configure Compliance

rwa-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"

3. Register Investors

# 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 2

4. Mint Tokens

rwa-cli token mint \
  --token-id <token_id> \
  --admin GABC... \
  --to GDEF... \
  --amount 10000000000

5. Distribute Dividends

# 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...

TypeScript SDK

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();

Project Structure

├── 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

Testing

# 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 dividend

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages