Contract b9f82f5456019016a1a152c6d68072930f77b89cd045392689521708d3bb69a2

← Back to Index 📥 Download WASM

Meta

cliver 23.4.1#a152ec2488c25136808ad28277c24b3a0765ffd4
rssdkver 23.5.1#59fcef437260ed4da42d1efb357137a5c166c02e
rsver 1.92.0

Instances

  • CDXTNYLQJFGZXDKQC46UT5SU7PT2PUI7C7SPZHL25W6UVXZLEUAGQFTX

Interface

Atomic draw: pull ReytsCAD from hot wallet, send NGNC to hot wallet. OPS only.

fn draw(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    deposit_asset_sac: soroban_sdk::Address,
    payment_asset_sac: soroban_sdk::Address,
    deposit_amount: i128,
    payment_amount: i128,
    hot_wallet: soroban_sdk::Address,
    ref_hash: soroban_sdk::BytesN<32>,
)

Block deposits, draws, normal withdrawals — admin only. Emergency withdraw still works.

fn pause(env: soroban_sdk::Env)

Returns (paused, admin, ops, max_draw_per_tx, throttled_max_draw).

fn status(
    env: soroban_sdk::Env,
) -> (bool, soroban_sdk::Address, soroban_sdk::Address, i128, i128)

Rotate ops address — admin + new_ops must co-sign.

fn set_ops(env: soroban_sdk::Env, new_ops: soroban_sdk::Address)

Resume operations — admin only.

fn unpause(env: soroban_sdk::Env)

Normal withdrawal to partner's allowlisted wallet — OPS only.

fn withdraw(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    asset_sac: soroban_sdk::Address,
    amount: i128,
    destination: soroban_sdk::Address,
)

Rotate admin address — both admin and new_admin must co-sign.

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

One-time initialization. Admin must auth. Sets roles, draw limits, paused=false.

fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    ops: soroban_sdk::Address,
    max_draw_per_tx: i128,
    throttled_max_draw: i128,
)

Check if address is an allowed partner.

fn is_partner(env: soroban_sdk::Env, partner: soroban_sdk::Address) -> bool

Add a KYC'd partner with deposit cap — admin only.

fn add_partner(env: soroban_sdk::Env, partner: soroban_sdk::Address, deposit_cap: i128)

Set exchange rate (7-decimal i128) — OPS only. Auto-calculates band. >=15% → pauses draws.

fn update_rate(
    env: soroban_sdk::Env,
    deposit_asset: soroban_sdk::Address,
    payment_asset: soroban_sdk::Address,
    new_rate: i128,
)

Get current rate for an asset pair.

fn current_rate(
    env: soroban_sdk::Env,
    deposit_asset: soroban_sdk::Address,
    payment_asset: soroban_sdk::Address,
) -> (i128, u64)

Update normal max draw per tx — admin only.

fn set_max_draw(env: soroban_sdk::Env, new_max: i128)

Check if address is an allowed hot wallet.

fn is_hot_wallet(env: soroban_sdk::Env, addr: soroban_sdk::Address) -> bool

Add to draw source/destination allowlist — admin only.

fn add_hot_wallet(env: soroban_sdk::Env, addr: soroban_sdk::Address)

Cancel a pending upgrade — admin only.

fn cancel_upgrade(env: soroban_sdk::Env)

Remove partner from allowlist — admin only. Positions preserved for emergency withdraw.

fn remove_partner(env: soroban_sdk::Env, partner: soroban_sdk::Address)

Execute pending WASM upgrade after 24h — admin only.

fn execute_upgrade(env: soroban_sdk::Env)

Propose a WASM upgrade — admin only. Starts 24h timer.

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

Update partner's deposit cap — admin only.

fn set_deposit_cap(env: soroban_sdk::Env, partner: soroban_sdk::Address, new_cap: i128)

Get partner position for a specific asset.

fn partner_position(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    asset_sac: soroban_sdk::Address,
) -> i128

Credit partner position after detecting incoming payment — OPS only. Checks cap + velocity + replay.

fn register_deposit(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    asset_sac: soroban_sdk::Address,
    amount: i128,
    tx_ref: soroban_sdk::BytesN<32>,
)

Check if wallet is allowlisted for partner withdrawals.

fn is_partner_wallet(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    wallet: soroban_sdk::Address,
) -> bool

Remove from allowlist — admin only.

fn remove_hot_wallet(env: soroban_sdk::Env, addr: soroban_sdk::Address)

Add a withdrawal destination for partner — admin only.

fn add_partner_wallet(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    wallet: soroban_sdk::Address,
)

Emergency withdrawal — partner auth (not OPS). Full balance for given asset. Works while paused and after removal.

fn emergency_withdraw(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    asset_sac: soroban_sdk::Address,
    destination: soroban_sdk::Address,
)

Acknowledge >15% rate move, re-enable draws — admin only.

fn admin_override_rate(
    env: soroban_sdk::Env,
    deposit_asset: soroban_sdk::Address,
    payment_asset: soroban_sdk::Address,
)

Get partner's deposit cap.

fn partner_deposit_cap(env: soroban_sdk::Env, partner: soroban_sdk::Address) -> i128

Remove a withdrawal destination for partner — admin only.

fn remove_partner_wallet(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    wallet: soroban_sdk::Address,
)

Update throttled max draw (5-15% band) — admin only.

fn set_throttled_max_draw(env: soroban_sdk::Env, new_max: i128)

Imports

WebAssembly Text (WAT) ▶