Contract 2406ce6d5764e323dbbb9ad38970bc56e0091f142bf263f860c7ae3da757f699

← Back to Index 📥 Download WASM

Meta

rssdkver 21.7.7#5da789c50b18a4c2be53394138212fed56f0dfc4
rsver 1.92.0-nightly

Instances

  • CAJGZIONVRCDRDO2YWZ3O6YEYFYMZBQEQPC7CRSOOY6VB532OCGV5AQ6

Interface

Stake AQUA tokens - SECURE & CORRECTED VERSION SECURITY: Fixed re-entrancy by applying Checks-Effects-Interactions pattern CORRECTED: Mint 110% BLUB, stake 100% BLUB, 10% AQUA + 10% BLUB to LP, 90% AQUA to ICE

fn stake(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    amount: i128,
    duration_days: u32,
) -> Result

Get pool information

fn get_pool(
    env: soroban_sdk::Env,
    pool_id: soroban_sdk::Bytes,
) -> Option

Burn BLUB tokens (admin-only)

fn blub_burn(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    from: soroban_sdk::Address,
    amount: i128,
) -> Result<(), soroban_sdk::Error>

Get BLUB token name

fn blub_name(env: soroban_sdk::Env) -> Result
fn get_config(env: soroban_sdk::Env) -> Result
fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    treasury_address: soroban_sdk::Address,
    aqua_token: soroban_sdk::Address,
    aqua_blub_pool_id: soroban_sdk::Bytes,
    ice_contract: soroban_sdk::Address,
    min_liquidity: i128,
    default_fee_rate: i128,
    max_pools: u32,
) -> Result<(), soroban_sdk::Error>

Restake BLUB tokens (stake BLUB to earn more BLUB rewards) User must have BLUB tokens in their wallet to restake

fn stake_blub(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    amount: i128,
    duration_days: u32,
) -> Result

Get BLUB token symbol

fn blub_symbol(
    env: soroban_sdk::Env,
) -> Result
fn get_user_lp(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    pool_id: soroban_sdk::Bytes,
) -> Option

DEPRECATED: Use stake() instead This function only records metadata without transferring tokens

fn record_lock(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    amount: i128,
    duration_days: u32,
    tx_hash: soroban_sdk::Bytes,
) -> Result

Toggle pool active status (admin-only)

fn toggle_pool(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    pool_id: soroban_sdk::Bytes,
    active: bool,
) -> Result<(), soroban_sdk::Error>

Approve BLUB spender

fn blub_approve(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    spender: soroban_sdk::Address,
    amount: i128,
) -> Result<(), soroban_sdk::Error>

Get BLUB token balance

fn blub_balance(env: soroban_sdk::Env, addr: soroban_sdk::Address) -> i128

Get BLUB token decimals

fn blub_decimals(env: soroban_sdk::Env) -> Result

Transfer BLUB tokens (public user-facing function)

fn blub_transfer(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount: i128,
) -> Result<(), soroban_sdk::Error>
fn record_unlock(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    amount: i128,
    tx_hash: soroban_sdk::Bytes,
) -> Result

Register a new liquidity pool (admin-only)

fn register_pool(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    pool_id: soroban_sdk::Bytes,
    token_a: soroban_sdk::Address,
    token_b: soroban_sdk::Address,
    initial_a: i128,
    initial_b: i128,
    fee_rate: Option,
) -> Result<(), soroban_sdk::Error>

Get BLUB allowance

fn blub_allowance(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    spender: soroban_sdk::Address,
) -> i128

Get pool count

fn get_pool_count(env: soroban_sdk::Env) -> u32
fn get_user_pools(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
) -> soroban_sdk::Vec

Update AQUA-BLUB pool ID (admin-only)

fn update_pool_id(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_pool_id: soroban_sdk::Bytes,
) -> Result<(), soroban_sdk::Error>
fn get_global_state(env: soroban_sdk::Env) -> Result
fn get_unlock_count(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u32
fn get_user_rewards(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
) -> Option

Get BLUB total supply

fn blub_total_supply(env: soroban_sdk::Env) -> Result

Get pending stake by index

fn get_pending_stake(env: soroban_sdk::Env, index: u32) -> Option
fn record_lp_deposit(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    user: soroban_sdk::Address,
    pool_id: soroban_sdk::Bytes,
    amount_a: i128,
    amount_b: i128,
    tx_hash: soroban_sdk::Bytes,
) -> Result<(), soroban_sdk::Error>

Transfer BLUB from (for approved spenders)

fn blub_transfer_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount: i128,
) -> Result<(), soroban_sdk::Error>
fn credit_user_reward(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    kind: u32,
    user: soroban_sdk::Address,
    pool_id: soroban_sdk::Bytes,
    amount: i128,
    tx_hash: soroban_sdk::Bytes,
) -> Result<(), soroban_sdk::Error>

Manually deposit accumulated POL to AQUA-BLUB LP (admin-only) Useful for batch deposits or if auto-deposit is disabled

fn manual_deposit_pol(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    aqua_amount: i128,
    blub_amount: i128,
) -> Result<(), soroban_sdk::Error>

Record POL rewards claimed from AQUA-BLUB pair voting (admin-only)

fn record_pol_rewards(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    reward_amount: i128,
    ice_voting_power: i128,
) -> Result<(), soroban_sdk::Error>
fn update_reward_rate(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_rate: i128,
) -> Result<(), soroban_sdk::Error>
fn get_unlock_by_index(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    index: u32,
) -> Option
fn get_user_lock_count(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u32

DEPRECATED: Use stake_blub() instead

fn record_blub_restake(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    amount: i128,
    tx_hash: soroban_sdk::Bytes,
) -> Result

Update ICE contract address (admin-only)

fn update_ice_contract(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_ice_contract: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn get_user_lock_totals(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
) -> Option

Get user LP position

fn get_user_lp_position(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    pool_id: soroban_sdk::Bytes,
) -> Option

Toggle auto-deposit POL feature (admin-only)

fn set_auto_deposit_pol(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    enabled: bool,
) -> Result<(), soroban_sdk::Error>
fn calculate_user_rewards(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
) -> Result
fn get_blub_restake_count(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u32

Get daily POL snapshot

fn get_daily_pol_snapshot(
    env: soroban_sdk::Env,
    day: u64,
) -> Option
fn get_distribution_count(env: soroban_sdk::Env) -> u32
fn get_user_lock_by_index(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    index: u32,
) -> Option

Process pending BLUB stakes (can be called by anyone to process batch) This avoids re-entry by processing stakes in separate transaction

fn process_pending_stakes(
    env: soroban_sdk::Env,
    max_count: u32,
) -> Result

Get pending stake count

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

Get available POL balance that can be deposited to LP

fn get_available_pol_balance(
    env: soroban_sdk::Env,
) -> Result<(i128, i128), soroban_sdk::Error>
fn get_blub_restake_by_index(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    index: u32,
) -> Option
fn get_distribution_by_index(
    env: soroban_sdk::Env,
    index: u32,
) -> Option

Get total POL contribution for user

fn get_user_pol_contribution(env: soroban_sdk::Env, user: soroban_sdk::Address) -> i128

Record liquidity addition (admin-only)

fn record_liquidity_addition(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    user: soroban_sdk::Address,
    pool_id: soroban_sdk::Bytes,
    amount_a: i128,
    amount_b: i128,
    lp_tokens_minted: i128,
) -> Result<(), soroban_sdk::Error>

Get global liquidity stats

fn get_global_liquidity_stats(env: soroban_sdk::Env) -> Option
fn record_reward_distribution(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    kind: u32,
    pool_id: soroban_sdk::Bytes,
    total_reward: i128,
    distributed_amount: i128,
    treasury_amount: i128,
    tx_hash: soroban_sdk::Bytes,
) -> Result

Get POL state

fn get_protocol_owned_liquidity(env: soroban_sdk::Env) -> ProtocolOwnedLiquidity

Imports

WebAssembly Text (WAT) ▶