Soroban (Stellar) smart contracts for the ACBU (African Currency Basket Unit) stablecoin platform.
- Minting Contract - Handles USDC → ACBU conversions
- Burning Contract - Handles ACBU → Fiat redemptions
- Oracle Contract - Aggregates exchange rates from multiple validators
- Reserve Tracker Contract - Tracks and verifies reserve balances
- Rust 1.87.0 (pinned in
rust-toolchain.toml) - Soroban CLI (
cargo install --locked soroban-cli) - Stellar account with XLM for deployment fees
You can use the new Makefile for common commands.
# Build all contracts in the workspace
make build
# Build a specific contract
make build-minting# Run all tests in the workspace
make test
# Run tests for a specific contract
make test-mintingexport STELLAR_SECRET_KEY="your-secret-key"
make deploy-testnetexport STELLAR_SECRET_KEY="your-secret-key"
make deploy-mainnetAfter cloning, run:
make setup-hooksAfter deployment, contract addresses are saved to .soroban/deployment_{network}.json
After cloning, run:
./scripts/setup-git-hooks.shThis configures the pre-commit hook for WASM integrity checks.
.
├── acbu_minting/ # Minting contract
├── acbu_burning/ # Burning contract
├── acbu_oracle/ # Oracle contract
├── acbu_reserve_tracker/ # Reserve tracker contract
├── acbu_savings_vault/ # Savings vault contract
├── acbu_lending_pool/ # Lending pool contract
├── acbu_escrow/ # Escrow contract
├── acbu_multisig/ # Multisig shared contract
├── shared/ # Shared types and utilities
├── scripts/ # Deployment scripts
├── docs/ # Documentation
└── tests/ # Integration tests
- Create contract directory:
mkdir new_contract - Add to workspace
Cargo.tomlmembers - Create
Cargo.tomlandsrc/lib.rs - Update deployment scripts
- All admin functions require multisig (3 of 5)
- Rate limits on transactions
- Circuit breakers for anomalies
- Time locks for critical operations
See individual contract README files for detailed documentation.