Contract 7b68a2b812e635008f2fbcc2b0196fe8f9e1f0c0b6790742e60b18c32848d681

← Back to Index 📥 Download WASM

Meta

cliver 23.4.1#a152ec2488c25136808ad28277c24b3a0765ffd4
rssdkver 25.0.0-rc.2#acffbbd45be6a0a551146eebfc268d6f95078246
rsver 1.92.0

Interface

Claim rewards using merkle proof

User provides:

  • epoch: Which epoch to claim from
  • amount: Their reward amount (stroops)
  • merkle_proof: Sibling hashes from leaf to root
  • proof_directions: Direction at each level (0=left, 1=right)

The leaf is computed as: SHA256(wallet || amount_le_bytes)

fn claim(
    env: soroban_sdk::Env,
    claimer: soroban_sdk::Address,
    epoch: u32,
    amount: i128,
    merkle_proof: soroban_sdk::Vec>,
    proof_directions: soroban_sdk::Vec,
)

Get epoch data

fn get_epoch(env: soroban_sdk::Env, epoch: u32) -> Option

Get owner

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

Check if a leaf has been claimed for an epoch

fn is_claimed(
    env: soroban_sdk::Env,
    epoch: u32,
    leaf_hash: soroban_sdk::BytesN<32>,
) -> bool

Check contract is deployed

fn is_deployed(env: soroban_sdk::Env) -> bool

Constructor: Initialize with owner, reward asset, and treasury

fn __constructor(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    reward_asset: soroban_sdk::Address,
    treasury: soroban_sdk::Address,
)

Register a new epoch's merkle root (admin only) Called weekly by settlement cron job

The merkle tree leaves are: SHA256(wallet_address || amount_le_bytes) This allows users to prove their reward amount

Parameters:

  • epoch: Sequential epoch number (0, 1, 2, ...)
  • merkle_root: Root of the merkle tree for this epoch
  • total_claimable: Sum of all rewards in this epoch (for accounting)
  • vesting_ledgers: Number of ledgers until claims are available (~1 week)
fn register_epoch(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    epoch: u32,
    merkle_root: soroban_sdk::BytesN<32>,
    total_claimable: i128,
    vesting_ledgers: u32,
)

Get total epoch count

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

Get reward asset

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

Compute leaf hash: SHA256(wallet_address_bytes || amount_le_bytes)

fn compute_leaf_hash(
    env: soroban_sdk::Env,
    wallet: soroban_sdk::Address,
    amount: i128,
) -> soroban_sdk::BytesN<32>

Compute merkle root from leaf and proof

fn compute_merkle_root(
    env: soroban_sdk::Env,
    leaf: soroban_sdk::BytesN<32>,
    proof: soroban_sdk::Vec>,
    directions: soroban_sdk::Vec,
) -> soroban_sdk::BytesN<32>

Imports

WebAssembly Text (WAT) ▶