Contract dd305cc16a7a9a94b9869f0e51b337ba021e402ef2aefe151ad1fcd3d78a9436

← Back to Index 📥 Download WASM

Meta

rssdkver 21.7.7#5da789c50b18a4c2be53394138212fed56f0dfc4
rsver 1.92.0

Interface

Advance the tanda - single action that:

  1. Expels all delinquent members (if 6+ days without deposit)
  2. Triggers payout to beneficiary (if all remaining members deposited) Anyone can call this function
fn advance(env: soroban_sdk::Env, tanda_id: soroban_sdk::String) -> bool

Deposit for current cycle

fn deposit(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    tanda_id: soroban_sdk::String,
)

Upgrade the contract code (admin only)

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

Check if a member can be expelled (6 days passed without deposit)

fn can_expel(
    env: soroban_sdk::Env,
    tanda_id: soroban_sdk::String,
    member: soroban_sdk::Address,
) -> bool

Get current admin

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

Get tanda details

fn get_tanda(env: soroban_sdk::Env, tanda_id: soroban_sdk::String) -> Tanda

Transfer admin role (admin only)

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

Initialize the contract (called once)

fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    eurc_token: soroban_sdk::Address,
    commission_address: soroban_sdk::Address,
    commission_bps: u32,
)

Join a tanda (while in Forming status)

fn join_tanda(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    tanda_id: soroban_sdk::String,
)

Get tanda members

fn get_members(
    env: soroban_sdk::Env,
    tanda_id: soroban_sdk::String,
) -> soroban_sdk::Vec

Start the tanda (creator only, requires at least 2 members)

fn start_tanda(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    tanda_id: soroban_sdk::String,
)

Cancel tanda and refund deposits (requires >50% vote) For simplicity, only creator can cancel while in Forming status

fn cancel_tanda(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    tanda_id: soroban_sdk::String,
)

Create a new tanda

fn create_tanda(
    env: soroban_sdk::Env,
    creator: soroban_sdk::Address,
    name: soroban_sdk::String,
    amount: i128,
    max_members: u32,
) -> soroban_sdk::String

Check if all members have deposited for current cycle

fn all_deposited(env: soroban_sdk::Env, tanda_id: soroban_sdk::String) -> bool

Update commission settings (admin only)

fn set_commission(
    env: soroban_sdk::Env,
    commission_address: soroban_sdk::Address,
    commission_bps: u32,
)

Trigger payout to current beneficiary (anyone can call) Succeeds only if all active members have deposited

fn trigger_payout(env: soroban_sdk::Env, tanda_id: soroban_sdk::String)

Get current beneficiary (who will receive next payout)

fn get_beneficiary(
    env: soroban_sdk::Env,
    tanda_id: soroban_sdk::String,
) -> soroban_sdk::Address

Expel a delinquent member (anyone can call) Succeeds if member hasn't deposited and 6 days have passed since last payout

fn expel_delinquent(
    env: soroban_sdk::Env,
    tanda_id: soroban_sdk::String,
    delinquent: soroban_sdk::Address,
)

Get seconds until delinquency deadline

fn time_to_deadline(env: soroban_sdk::Env, tanda_id: soroban_sdk::String) -> u64

Get status for "Advance" button - what will happen if called Returns: (can_advance, will_expel_count, will_payout, beneficiary_if_payout)

fn get_advance_status(
    env: soroban_sdk::Env,
    tanda_id: soroban_sdk::String,
) -> (bool, u32, bool, Option)

Imports

WebAssembly Text (WAT) ▶