Contract 1b6b75fa484e7b7ddbd6b485f9a29317af127618cd56afa86addc4ed7ea93316

← Back to Index 📥 Download WASM

Meta

rssdkver 25.0.2#59a2e01a26f9330f8d516690911cb2ca87a6f1b3
rsver 1.94.0
source_repo lumenbro/referral-rewards

Instances

  • CDDAQQHC7KN7BKPY4TLJYBLTIJZ2LYPJXSGQRBJSFJBVLMGF7KRGMV77
  • CDQCR3GKRWTFZ7BCTPW3AZPAI5M5RHRTNQO5VNMAELPRHM3TMNQP46HU

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) ▶