Contract 524ede1c6122b15456329564878a191a00a7062e1a8c9009deaa44eeb5a59c57

← Back to Index 📥 Download WASM

Meta

cliver 25.2.0#28484880988199233a7e8e87c97cb12dac323cb3
rssdkver 25.3.0#dcbea44513feb7734af6b6c4aced2c4a7a2715d0
rsver 1.86.0

Instances

  • CB2DKEF7AROSPMPGJTJMDY4DGDPEDC34SHDRNVGQJNRYAJSLWPFIM2CH

Interface

Creates the offer. Must be called once. Starts INACTIVE — seller must call set_active(true) after deposit + SAC setup.

admin: high-privilege key (upgrade, withdraw, drain, freeze). Ideally multisig/cold. seller: operational key (pause, price). Can be same as admin for MVP. fixed_fee: flat fee per trade in stroops (e.g., 50_000_000 = $5 USDC). 0 = no fee. deadline_ledger: ledger sequence after which trades are rejected (0 = no deadline). min_buy_amount: minimum buy_token amount per trade in stroops (0 = no minimum). max_buy_per_buyer: cumulative buy_token cap per buyer in stroops (0 = no cap).

fn create(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    seller: soroban_sdk::Address,
    sell_token: soroban_sdk::Address,
    buy_token: soroban_sdk::Address,
    treasury: soroban_sdk::Address,
    company: soroban_sdk::Address,
    fixed_fee: i128,
    sell_price: u32,
    buy_price: u32,
    deadline_ledger: u32,
    min_buy_amount: i128,
    max_buy_per_buyer: i128,
) -> Result<(), SaleError>

Buyer trades buy_token (USDC) for sell_token. Enforces: active, deadline, min amount, per-buyer cap, buyer not frozen. Atomic: all transfers succeed or all revert.

fn trade(
    env: soroban_sdk::Env,
    buyer: soroban_sdk::Address,
    buy_token_amount: i128,
) -> Result<(), SaleError>

Admin withdraws any token from the contract.

fn withdraw(
    env: soroban_sdk::Env,
    token: soroban_sdk::Address,
    amount: i128,
) -> Result<(), SaleError>

Emergency drain: atomically pauses the sale AND withdraws all sell_token to admin. Admin only. For the "oh shit" scenario.

fn emergency_drain(env: soroban_sdk::Env)

Pause or resume the sale. Seller only.

fn set_active(env: soroban_sdk::Env, active: bool)

Update price. Seller only. Emits "price" event.

fn updt_price(
    env: soroban_sdk::Env,
    sell_price: u32,
    buy_price: u32,
) -> Result<(), SaleError>

Step 1: Current admin proposes a new admin.

fn propose_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address)

Step 2: Proposed admin accepts the role.

fn accept_admin(env: soroban_sdk::Env) -> Result<(), SaleError>

Admin freezes or unfreezes a buyer. Frozen buyers cannot trade.

fn freeze_buyer(env: soroban_sdk::Env, buyer: soroban_sdk::Address, frozen: bool)

Returns whether a buyer is frozen.

fn is_frozen(env: soroban_sdk::Env, buyer: soroban_sdk::Address) -> bool

Upgrade contract WASM. Admin only (high-privilege).

fn upgrade(env: soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>)

Extend contract instance TTL. Anyone can call (allows cron jobs). NOTE: WASM code TTL must be extended separately via stellar contract extend --wasm-hash <HASH> --ledgers-to-extend 518400

fn extend_ttl(env: soroban_sdk::Env)

Returns the current offer state.

fn get_offer(env: soroban_sdk::Env) -> Offer

Returns the contract's balance of the sell token.

fn get_balance(env: soroban_sdk::Env) -> i128

Returns cumulative buy_token spent by a buyer.

fn get_buyer_spent(env: soroban_sdk::Env, buyer: soroban_sdk::Address) -> i128

Returns the contract version.

fn version(env: soroban_sdk::Env) -> u32

Imports

WebAssembly Text (WAT) ▶