Contract f4f9e67f883302b5f9da3f947651f1db322bc3880a44a676fea96ef6c30c0fe8

← Back to Index 📥 Download WASM

Meta

cliver 26.0.0#60f7458e7ecffddf2f2d91dc6d0d2db4fab03ecc
rssdkver 25.3.1#e50d95af029c83196dd122f0154bac3f1302394b
rsver 1.95.0

Instances

  • CDWTSHMDQO5NOWVBWMBUKBOXXUIWSQZVRWOOS4WIHOA63WEAGH66SG76

Interface

Atomic swap between USDM0 and USDM1 (port of EVM swapTokens).

Always requires a USDM1 price attestation (USDM0 is pegged at 1e7). Burns input tokens and mints output tokens in a single transaction.

fn swap_v2(
    env: soroban_sdk::Env,
    swapper: soroban_sdk::Address,
    input_token_id: u32,
    amount: i128,
    usdm1_price: PriceAttestation,
)
fn pause(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn sweep(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    sac: soroban_sdk::Address,
    recipient: soroban_sdk::Address,
    amount: i128,
)
fn unpause(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn upgrade(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_wasm_hash: soroban_sdk::BytesN<32>,
)
fn get_usdm0(env: soroban_sdk::Env) -> Option
fn get_usdm1(env: soroban_sdk::Env) -> Option
fn is_paused(env: soroban_sdk::Env) -> bool
fn get_config(env: soroban_sdk::Env) -> Config
fn assign_usdm0(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    usdm0: soroban_sdk::Address,
)
fn assign_usdm1(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    usdm1: soroban_sdk::Address,
)
fn get_operator(env: soroban_sdk::Env) -> Option
fn __constructor(env: soroban_sdk::Env, admin: soroban_sdk::Address)
fn set_base_fees(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    deposit_fee_bps: u32,
    redemption_fee_bps: u32,
)
fn add_collateral(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
    requires_attestation: bool,
    deposit_fee_bps: u32,
    redemption_fee_bps: u32,
)
fn is_whitelisted(env: soroban_sdk::Env, address: soroban_sdk::Address) -> bool
fn assign_operator(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    operator: soroban_sdk::Address,
)
fn compute_feed_id(
    env: soroban_sdk::Env,
    token: soroban_sdk::Address,
) -> soroban_sdk::BytesN<32>
fn get_beneficiary(env: soroban_sdk::Env) -> Option
fn get_collaterals(
    env: soroban_sdk::Env,
) -> Option>
fn add_to_whitelist(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    address: soroban_sdk::Address,
)
fn verify_signature(
    env: soroban_sdk::Env,
    public_key: soroban_sdk::BytesN<32>,
    message: soroban_sdk::BytesN<32>,
    signature: soroban_sdk::BytesN<64>,
)
fn enable_collateral(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
)
fn get_administrator(env: soroban_sdk::Env) -> soroban_sdk::Address
fn is_trusted_signer(
    env: soroban_sdk::Env,
    public_key: soroban_sdk::BytesN<32>,
) -> bool
fn remove_collateral(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
)
fn add_trusted_signer(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    public_key: soroban_sdk::BytesN<32>,
)
fn assign_beneficiary(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    beneficiary: soroban_sdk::Address,
)
fn disable_collateral(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
)
fn get_trusted_signers(
    env: soroban_sdk::Env,
) -> Option, bool>>
fn set_collateral_fees(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
    deposit_fee_bps: u32,
    redemption_fee_bps: u32,
)
fn get_contract_version(env: soroban_sdk::Env) -> u32
fn rotate_administrator(
    env: soroban_sdk::Env,
    current_admin: soroban_sdk::Address,
    new_admin: soroban_sdk::Address,
)
fn get_collateral_config(
    env: soroban_sdk::Env,
    collateral: soroban_sdk::Address,
) -> Option
fn get_redeem_permit_seq(env: soroban_sdk::Env, source: soroban_sdk::Address) -> u64
fn remove_from_whitelist(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    address: soroban_sdk::Address,
)
fn remove_trusted_signer(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    public_key: soroban_sdk::BytesN<32>,
)
fn get_deposit_permit_seq(env: soroban_sdk::Env, source: soroban_sdk::Address) -> u64
fn reset_usdm_token_admin(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    usdm: soroban_sdk::Address,
    new_admin: soroban_sdk::Address,
)
fn assert_contract_version(env: soroban_sdk::Env, expected: u32)
fn set_collateral_disabled(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
    disabled: bool,
)
fn get_base_deposit_fee_bps(env: soroban_sdk::Env) -> u32
fn build_redeem_permit_digest(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    source: soroban_sdk::Address,
    payout_recipient: soroban_sdk::Address,
    token: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
    amount: i128,
    seq: u64,
    not_before: u64,
    not_after: u64,
) -> soroban_sdk::BytesN<32>
fn build_deposit_permit_digest(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    source: soroban_sdk::Address,
    recipient: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
    usdm: soroban_sdk::Address,
    amount: i128,
    seq: u64,
    not_before: u64,
    not_after: u64,
) -> soroban_sdk::BytesN<32>
fn get_base_redemption_fee_bps(env: soroban_sdk::Env) -> u32
fn build_price_attestation_digest(
    env: soroban_sdk::Env,
    feed_id: soroban_sdk::BytesN<32>,
    consumer: soroban_sdk::Address,
    index: i128,
    not_before: u64,
    not_after: u64,
    seq: u64,
) -> soroban_sdk::BytesN<32>

Redeem USDM for collateral via permit + price attestation (port of EVM redeem).

Creates a pending redemption record with the calculated amount_approved. The operator must call process_redemption to finalize (transfer collateral from beneficiary to recipient and burn escrowed USDM), or the redeemer/admin can call cancel_redemption to return the USDM.

fn redeem(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    source: soroban_sdk::Address,
    token_id: u32,
    amount: i128,
    collateral: soroban_sdk::Address,
    recipient: soroban_sdk::Address,
    collateral_price: PriceAttestation,
    usdm_price: PriceAttestation,
    permit: RedeemPermitAttestation,
)

Redeem USDM0 for collateral, whitelist-only, no attestation required. Port of EVM redeemUSDM0.

fn redeem_usdm0(
    env: soroban_sdk::Env,
    redeemer: soroban_sdk::Address,
    amount: i128,
    collateral: soroban_sdk::Address,
)
fn get_redemption(
    env: soroban_sdk::Env,
    redeemer: soroban_sdk::Address,
) -> Option

Cancel a pending redemption. Returns escrowed USDM to the redeemer. Callable by the redeemer or the admin (port of EVM cancelRedemption).

fn cancel_redemption(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    redeemer: soroban_sdk::Address,
)

Process a pending redemption (port of EVM processRedemption). Operator burns escrowed USDM and transfers collateral from beneficiary to recipient.

fn process_redemption(
    env: soroban_sdk::Env,
    operator: soroban_sdk::Address,
    redeemer: soroban_sdk::Address,
)

Atomic deposit via permit + price attestation (port of EVM deposit).

  • Verifies collateral price attestation if the collateral requires it.
  • Verifies USDM1 price attestation if token_id == 1.
  • Verifies and consumes the deposit permit (signed by trusted signer).
  • Deducts fees, converts amount via price indices, then: transfers collateral from source to beneficiary (via allowance), mints USDM to recipient.
fn deposit(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    source: soroban_sdk::Address,
    recipient: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
    amount: i128,
    token_id: u32,
    collateral_price: PriceAttestation,
    usdm_price: PriceAttestation,
    permit: DepositPermitAttestation,
)

Atomic deposit for whitelisted callers, USDM0 only, no attestation required. Port of EVM depositForUSDM0.

Caller must be whitelisted. Collateral must NOT require attestation. Both indices are 1e7 (no price conversion).

fn deposit_for_usdm0(
    env: soroban_sdk::Env,
    depositor: soroban_sdk::Address,
    collateral: soroban_sdk::Address,
    amount: i128,
)

Imports

WebAssembly Text (WAT) ▶