Contract 815cbef1dc94cce14a794fe03e6f1b27cd837cad0ba134442a1283e5bceb3432

← Back to Index 📥 Download WASM

Meta

rssdkver 25.0.2#59a2e01a26f9330f8d516690911cb2ca87a6f1b3
rsver 1.90.0

Interface

Initialize the vault with underlying token, supply yearly rate, borrow yearly rate, and admin Rates are scaled by 1e6 (e.g., 10% = 100_000)

fn initialize(
    env: soroban_sdk::Env,
    token_address: soroban_sdk::Address,
    supply_yearly_rate_scaled: u128,
    borrow_yearly_rate_scaled: u128,
    admin: soroban_sdk::Address,
)

Admin: set boosted vault address (DeFindex).

fn set_boosted_vault(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    boosted_vault: soroban_sdk::Address,
)

View: get boosted vault (if set)

fn get_boosted_vault(env: soroban_sdk::Env) -> Option

Admin: set target idle cash buffer in basis points (0..=10_000).

fn set_idle_cash_buffer_bps(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    idle_cash_buffer_bps: u32,
)

View: get target idle cash buffer in basis points.

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

Admin: move excess live cash into boosted vault to match target buffer.

fn rebalance_idle_cash(env: soroban_sdk::Env, admin: soroban_sdk::Address)

Deposit tokens into the vault and receive pTokens

fn deposit(env: soroban_sdk::Env, user: soroban_sdk::Address, amount: u128)

Withdraw tokens using pTokens

fn withdraw(env: soroban_sdk::Env, user: soroban_sdk::Address, ptoken_amount: u128)

Get user's balance in the vault in underlying terms (pTokens × exchange rate)

fn get_user_balance(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u128

Get user's pToken balance

fn get_ptoken_balance(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u128
fn approve(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    spender: soroban_sdk::Address,
    amount: i128,
    live_until_ledger: u32,
)
fn allowance(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    spender: soroban_sdk::Address,
) -> i128
fn transfer(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    to: soroban_sdk::MuxedAddress,
    amount: i128,
)
fn transfer_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    owner: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount: i128,
)
fn balance(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn total_supply(env: soroban_sdk::Env) -> i128
fn decimals(env: soroban_sdk::Env) -> u32
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String

Get total amount deposited in the vault

fn get_total_deposited(env: soroban_sdk::Env) -> u128

Get total pTokens issued

fn get_total_ptokens(env: soroban_sdk::Env) -> u128

Admin: stage a timelocked contract upgrade.

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

Admin: execute a staged upgrade once timelock has elapsed.

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

Admin: transfer admin to new address

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

Get the exchange rate (pToken to underlying ratio) scaled by 1e6

fn get_exchange_rate(env: soroban_sdk::Env) -> u128

Get the underlying token address

fn get_underlying_token(env: soroban_sdk::Env) -> soroban_sdk::Address

Get collateral factor (scaled 1e6)

fn get_collateral_factor(env: soroban_sdk::Env) -> u128

Admin: set peridottroller address

fn set_peridottroller(env: soroban_sdk::Env, peridottroller: soroban_sdk::Address)

Admin: set or clear margin controller address used for collateral lock checks.

fn set_margin_controller(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    margin_controller: Option,
)
fn get_margin_controller(env: soroban_sdk::Env) -> Option
fn begin_margin_withdraw(
    env: soroban_sdk::Env,
    margin_controller: soroban_sdk::Address,
    user: soroban_sdk::Address,
)

Admin: set interest rate model address

fn set_interest_model(env: soroban_sdk::Env, model: soroban_sdk::Address)

Admin: explicitly enable static-rate mode when no external model is used.

fn enable_static_rates(env: soroban_sdk::Env, admin: soroban_sdk::Address)

Admin: set reserve factor (0..=1e6)

fn set_reserve_factor(env: soroban_sdk::Env, reserve_factor_scaled: u128)

Admin: set admin fee factor (0..=1e6)

fn set_admin_fee(env: soroban_sdk::Env, admin_fee_scaled: u128)

Admin: set flash loan fee (0..=1e6, applied to principal)

fn set_flash_loan_fee(env: soroban_sdk::Env, fee_scaled: u128)

Admin: set supply cap (0 disables)

fn set_supply_cap(env: soroban_sdk::Env, cap: u128)

Admin: set borrow cap (0 disables)

fn set_borrow_cap(env: soroban_sdk::Env, cap: u128)

Get total reserves

fn get_total_reserves(env: soroban_sdk::Env) -> u128

Get total admin fees

fn get_total_admin_fees(env: soroban_sdk::Env) -> u128

Admin: reduce reserves and transfer to admin

fn reduce_reserves(env: soroban_sdk::Env, amount: u128)

Admin: reduce admin fees and transfer to admin

fn reduce_admin_fees(env: soroban_sdk::Env, amount: u128)

Update interest based on elapsed time and current per-second rate

fn update_interest(env: soroban_sdk::Env)

Admin-only recovery for missing core state after TTL expiry. Sets missing rate/index/time fields to safe defaults.

fn recover_state(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    supply_yearly_rate_scaled: u128,
    borrow_yearly_rate_scaled: u128,
    total_borrowed: u128,
)

Get total underlying

fn get_total_underlying(env: soroban_sdk::Env) -> u128

Admin: update yearly interest rate (scaled 1e6). Applies after accruing with old rate.

fn set_interest_rate(env: soroban_sdk::Env, yearly_rate_scaled: u128)

Admin: update borrow yearly rate (scaled 1e6)

fn set_borrow_rate(env: soroban_sdk::Env, yearly_rate_scaled: u128)

Admin: set collateral factor (0..=1e6)

fn set_collateral_factor(env: soroban_sdk::Env, new_factor_scaled: u128)

Read admin

fn get_admin(env: soroban_sdk::Env) -> soroban_sdk::Address

Get user's current borrow balance (principal adjusted by index)

fn get_user_borrow_balance(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u128

Permissionless TTL extension for per-user borrow state. Keepers can call this periodically for active borrowers.

fn bump_user_borrow_ttl(env: soroban_sdk::Env, user: soroban_sdk::Address)

Admin recovery path for a missing/expired borrower snapshot. Intended for keeper-assisted repair after TTL expiry.

fn recover_user_borrow_snapshot(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    user: soroban_sdk::Address,
    principal: u128,
    interest_index: u128,
)

Get available liquidity = total_underlying - total_borrowed

fn get_available_liquidity(env: soroban_sdk::Env) -> u128

Get total borrowed outstanding

fn get_total_borrowed(env: soroban_sdk::Env) -> u128

Get user's collateral value in underlying terms

fn get_user_collateral_value(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u128

Borrow tokens against pToken collateral

fn borrow(env: soroban_sdk::Env, user: soroban_sdk::Address, amount: u128)

Repay borrowed tokens

fn repay(env: soroban_sdk::Env, user: soroban_sdk::Address, amount: u128)

Execute a flash loan to receiver. Receiver must return amount + fee within the callback.

fn flash_loan(
    env: soroban_sdk::Env,
    receiver: soroban_sdk::Address,
    amount: u128,
    data: soroban_sdk::Bytes,
)

Repay on behalf during liquidation; only callable by peridottroller/peridottroller

fn repay_on_behalf(
    env: soroban_sdk::Env,
    liquidator: soroban_sdk::Address,
    borrower: soroban_sdk::Address,
    amount: u128,
)

Seize pTokens from borrower to liquidator; only callable by peridottroller/peridottroller

fn seize(
    env: soroban_sdk::Env,
    borrower: soroban_sdk::Address,
    liquidator: soroban_sdk::Address,
    ptoken_amount: u128,
    ctx: Option,
)

Imports

WebAssembly Text (WAT) ▶