Contract d74eb36a60fcff95d6fc4247c2630ed521b9f9553347d1785d2e22bc404e01ba

← Back to Index 📥 Download WASM

Meta

cliver 27.1.0#8e402ea28202950b272fbabc34caad4d2f64fe87
rssdkver 25.3.1#e50d95af029c83196dd122f0154bac3f1302394b
rsver 1.96.0

Instances

  • CAQO4UYOZY3IWPXMI4BJUWHOD4IC3C6UWGJFYRF245WSLYYRHN7IEQD7

Interface

Point dao at the address authorised to call DAO-gated functions. Must match the executor execute_multisig_tx passes through (protocol multi-sig G-address) or, after a DAO upgrade, the DAO contract itself.

fn set_dao(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    dao: soroban_sdk::Address,
)

Replace this contract's Wasm in place. Instance and persistent storage are preserved. Authorised by the stored DAO address.

fn upgrade(
    env: soroban_sdk::Env,
    dao: soroban_sdk::Address,
    new_wasm_hash: soroban_sdk::BytesN<32>,
)
fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    dao: soroban_sdk::Address,
    usdc: soroban_sdk::Address,
    engine: soroban_sdk::Address,
    earnings: soroban_sdk::Address,
)

Check if an address is a registered active partner.

fn is_partner(env: soroban_sdk::Env, addr: soroban_sdk::Address) -> bool

Get full partner record by ID.

fn get_partner(env: soroban_sdk::Env, id: u32) -> Option

Partner claims their accumulated revenue. Only the partner's registered owner wallet can call this.

Arguments

  • partner_owner — must match the partner's registered owner
fn claim_revenue(env: soroban_sdk::Env, partner_owner: soroban_sdk::Address) -> i128

Total number of registered partners.

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

Self-serve registration — partner pays a fee in USDC. DAO must enable this first via set_open_registration(true).

fn self_register(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    name: soroban_sdk::String,
) -> u32

Get partner ID for a given owner address.

fn get_partner_id(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> Option

Kept for ABI compatibility. KYC bypass was removed — all users go through ComplianceRegistry regardless of partner.

fn has_kyc_bypass(env: soroban_sdk::Env, partner_id: u32) -> bool

Register a new partner — called by DAO to approve an integrator. All partners have the same rights: referral swaps, 50% fee share, and the ability to submit assets for DAO activation.

fn register_partner(
    env: soroban_sdk::Env,
    dao: soroban_sdk::Address,
    owner: soroban_sdk::Address,
    name: soroban_sdk::String,
) -> u32

Revenue earned by a partner in a specific epoch.

fn get_epoch_revenue(env: soroban_sdk::Env, partner_id: u32, epoch: u64) -> i128

Get a partner asset record.

fn get_partner_asset(
    env: soroban_sdk::Env,
    symbol: soroban_sdk::Symbol,
) -> Option

Owner wallet for a partner id (None if unknown).

fn get_partner_owner(
    env: soroban_sdk::Env,
    partner_id: u32,
) -> Option

Revenue share in bps for an active partner (0 if missing/inactive).

fn get_revenue_share(env: soroban_sdk::Env, partner_id: u32) -> i128

Update a partner's revenue share (DAO only). Use to reward high-volume partners or penalise bad actors.

fn set_partner_share(
    env: soroban_sdk::Env,
    dao: soroban_sdk::Address,
    partner_id: u32,
    new_share: i128,
)

Deactivate a partner (DAO only). Blocks future revenue crediting but does NOT touch already-accumulated pending_revenue — the partner can still claim what they've already earned.

fn deactivate_partner(
    env: soroban_sdk::Env,
    dao: soroban_sdk::Address,
    partner_id: u32,
)

Get all asset symbols deployed by a partner.

fn get_partner_assets(
    env: soroban_sdk::Env,
    partner_id: u32,
) -> soroban_sdk::Vec

Reactivate a previously deactivated partner.

fn reactivate_partner(
    env: soroban_sdk::Env,
    dao: soroban_sdk::Address,
    partner_id: u32,
)

Alias for register_partner used by DAO call-data execution.

fn dao_register_partner(
    env: soroban_sdk::Env,
    dao: soroban_sdk::Address,
    owner: soroban_sdk::Address,
    name: soroban_sdk::String,
) -> u32

Whether wallets may call self_register without a DAO proposal.

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

Enable or disable self-serve partner registration.

fn set_open_registration(env: soroban_sdk::Env, dao: soroban_sdk::Address, open: bool)

DAO activates a partner asset on the SyntheticEngine. This is the final step before users can mint the asset.

Arguments

  • dao — DAO address
  • symbol — asset symbol registered by the partner
fn activate_partner_asset(
    env: soroban_sdk::Env,
    dao: soroban_sdk::Address,
    symbol: soroban_sdk::Symbol,
)

Called by EarningsDistributor every epoch with the revenue attributable to a specific partner (based on their referral tag).

Arguments

  • earnings_contract — must be the registered earnings address
  • partner_id — which partner generated this revenue
  • amount — partner's share in USDC (7dp)
  • epoch — epoch number for record-keeping
fn credit_partner_revenue(
    env: soroban_sdk::Env,
    earnings_contract: soroban_sdk::Address,
    partner_id: u32,
    amount: i128,
    epoch: u64,
)

Deploy a new synthetic asset under the partner's namespace. The asset will be registered on the SyntheticEngine with the partner as the deployer.

Symbol naming rule: must start with "P" to distinguish partner assets from core protocol assets. Examples: "PSGOLD" (partner synth gold), "PSTSLA"

Arguments

  • partner_owner — must be the partner's registered owner wallet
  • symbol — unique synth symbol (max 9 chars, starts with "P")
  • token — pre-deployed SEP-41 contract address
  • oracle_symbol — price feed symbol (e.g. "GOLDUSD")
  • min_cr — minimum collateral ratio in bps (e.g. 15_000 = 150%)
  • liq_cr — liquidation CR in bps
  • liq_penalty — liquidation bonus in bps
  • stab_fee_bps — annual stability fee in bps
  • debt_ceiling — max outstanding synth (7dp); cannot exceed global limit
fn register_partner_asset(
    env: soroban_sdk::Env,
    partner_owner: soroban_sdk::Address,
    symbol: soroban_sdk::Symbol,
    token: soroban_sdk::Address,
    oracle_symbol: soroban_sdk::Symbol,
    coll_oracle: soroban_sdk::Symbol,
    min_cr: i128,
    liq_cr: i128,
    liq_penalty: i128,
    stab_fee_bps: i128,
    debt_ceiling: i128,
)

Imports

WebAssembly Text (WAT) ▶