Upgrade the contract to a new WASM (admin only).
Lets the admin patch bugs / ship improvements WITHOUT changing the
contract ID or migrating state. Upload the new WASM first
(stellar contract upload), then pass its hash here.
fn upgrade(
env: soroban_sdk::Env,
new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
Withdraw funds (admin only)
fn withdraw(env: soroban_sdk::Env, amount: i128) -> Result<(), soroban_sdk::Error>
Get admin address
fn get_admin(env: soroban_sdk::Env) -> Result
Initialize the contract with admin address and XLM token
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
token_id: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Repay a loan
fn repay_loan(
env: soroban_sdk::Env,
borrower: soroban_sdk::Address,
loan_id: u32,
) -> Result<(), soroban_sdk::Error>
Join an existing Trust Circle (requires 10 XLM stake)
fn join_circle(
env: soroban_sdk::Env,
member: soroban_sdk::Address,
circle_id: u32,
) -> Result<(), soroban_sdk::Error>
Approve and disburse loan (admin only)
fn approve_loan(env: soroban_sdk::Env, loan_id: u32) -> Result<(), soroban_sdk::Error>
Check if demo mode is enabled
fn is_demo_mode(env: soroban_sdk::Env) -> bool
Request a new loan
fn request_loan(
env: soroban_sdk::Env,
borrower: soroban_sdk::Address,
amount: i128,
purpose: soroban_sdk::String,
) -> Result
Create a new Trust Circle (requires 10 XLM stake)
fn create_circle(
env: soroban_sdk::Env,
creator: soroban_sdk::Address,
name: soroban_sdk::String,
) -> Result
Toggle demo mode (admin only)
fn set_demo_mode(
env: soroban_sdk::Env,
enabled: bool,
) -> Result<(), soroban_sdk::Error>
Get loan count
fn get_loan_count(env: soroban_sdk::Env) -> u32
Get user's loan IDs
fn get_user_loans(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
) -> soroban_sdk::Vec
Get user's complete stats
fn get_user_stats(env: soroban_sdk::Env, user: soroban_sdk::Address) -> UserStats
Get user's final trust score
fn get_trust_score(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u32
Check if loan is overdue
fn is_loan_overdue(
env: soroban_sdk::Env,
loan_id: u32,
) -> Result
Get circle count
fn get_circle_count(env: soroban_sdk::Env) -> u32
Get loan details
fn get_loan_details(
env: soroban_sdk::Env,
loan_id: u32,
) -> Result
Penalize user for loan default (admin only)
fn penalize_default(
env: soroban_sdk::Env,
loan_id: u32,
) -> Result<(), soroban_sdk::Error>
Unfreeze account (admin only)
fn unfreeze_account(
env: soroban_sdk::Env,
user: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Deposit liquidity for lending (admin only)
fn deposit_liquidity(
env: soroban_sdk::Env,
amount: i128,
) -> Result<(), soroban_sdk::Error>
Get interest rate based on trust score (percentage)
fn get_interest_rate(env: soroban_sdk::Env, user: soroban_sdk::Address) -> u32
Get circle details
fn get_circle_details(
env: soroban_sdk::Env,
circle_id: u32,
) -> Result
Get maximum loan amount based on trust score
fn get_max_loan_amount(env: soroban_sdk::Env, user: soroban_sdk::Address) -> i128
Get contract balance
fn get_contract_balance(env: soroban_sdk::Env) -> i128
Set demo loan duration (admin only)
fn set_demo_loan_duration(
env: soroban_sdk::Env,
duration_ledgers: u32,
) -> Result<(), soroban_sdk::Error>
Get circle's average score
fn get_circle_average_score(
env: soroban_sdk::Env,
circle_id: u32,
) -> Result