Contract 9cf1f0e5b99e5b0c5467d0cf67470aee9c37103c501948b6cdf264cabf55dc4a

← Back to Index 📥 Download WASM

Meta

cliver 23.4.1#a152ec2488c25136808ad28277c24b3a0765ffd4
rssdkver 23.5.1#59fcef437260ed4da42d1efb357137a5c166c02e
rsver 1.92.0

Instances

  • CDOKC47YXFHZ5COFB667QEXTGXRLCDSELDFD57BPVPCYFMBVOTTNUDYM

Interface

Draw: send NGNC from vault to hot wallet. ReytsCAD settlement to partner is handled off-chain by the API using the same ref_hash for linkage. 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)

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 an initial deposit cap for a specific asset (M-02). Caps for additional assets are added via set_deposit_cap. Admin only.

fn add_partner(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    asset: 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)

I-01: deployment-time constructor. Runs atomically with contract creation, closing the deploy-init race window that initialize() had. Sets roles, draw limits, paused=false.

fn __constructor(
    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 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>)

Set or update partner's deposit cap for a specific asset (M-02). Caps are enforced per (partner, asset). Admin only.

fn set_deposit_cap(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    asset: 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 (single-step OR cumulative across multiple sub-15% updates per M-01), 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 for a specific asset (M-02 per-asset cap).

fn partner_deposit_cap(
    env: soroban_sdk::Env,
    partner: soroban_sdk::Address,
    asset: 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) ▶