Contract eb9e848021d9b318e3e54090a1c680f9e44f32784efa2cab1a0de9756ccf63f6

← Back to Index 📥 Download WASM

Meta

cliver 28.0.0#300aaf69ab100536678bdb641428b06f06b318ea
rssdkver 27.0.6#60926a20d1f9f0a669d5fe551636f42a1302f0c0
rsver 1.94.1

Instances

  • CAR46DV7YNGNEOAI67SWY3WAQX2IGDWTHBRGDHJSW6EQQDR7XMGKUKQP
  • CBPOMGHGCWH2QMG4V4FTZKGBCEN7K37R2OIDGD5VWBAKYTOWG7CDCGGA

Interface

Capital de una cuenta. Lo que puede retirar, siempre.

fn saldo(env: soroban_sdk::Env, usuario: soroban_sdk::Address) -> i128
fn config(env: soroban_sdk::Env) -> Config

Todo lo que muestra la pantalla, en una llamada.

fn estado(env: soroban_sdk::Env) -> Vista

Retira capital. Sin penalidad y en cualquier momento: el producto se apoya en que nadie pierde nada, y una salida trabada rompería eso.

No depende de que haya o no un sorteo pendiente. El peso ya devengado en la ronda se conserva: la plata estuvo generando mientras estuvo adentro.

fn retirar(env: soroban_sdk::Env, usuario: soroban_sdk::Address, monto: i128)

La cuenta entera: capital, racha, referidos. None si nunca depositó.

fn cuenta_de(env: soroban_sdk::Env, usuario: soroban_sdk::Address) -> Option

Deposita capital y entra al sorteo. El capital se puede retirar entero cuando se quiera: lo que se sortea es el rendimiento, nunca el capital.

fn depositar(env: soroban_sdk::Env, usuario: soroban_sdk::Address, monto: i128)

Marca la racha de hoy. Una vez por día UTC; exige capital adentro.

Cada día seguido suma más peso a la ronda en curso: depósito × periodo × día / RACHA_DIVISOR. Siete días seguidos suman un período entero de peso, o sea duplican las chances. Saltear un día vuelve al día 1. El peso entra en la misma unidad que todo lo demás (depósito × tiempo), así que la escala del árbol no cambia.

fn ahorrar_hoy(env: soroban_sdk::Env, usuario: soroban_sdk::Address) -> u32

Chances de una cuenta sobre el total, en puntos básicos, para la ronda en curso.

Es lo que muestra la UI como "tu probabilidad". El peso es depósito × tiempo: depositar justo antes del cierre casi no suma.

Trunca hacia abajo, así que las chances de todos suman hasta participantes - 1 puntos menos de 10.000. Nunca más: nadie ve una probabilidad mayor a la que tiene.

fn chances_bps(env: soroban_sdk::Env, usuario: soroban_sdk::Address) -> i128

Cierra la ronda vencida y congela el sorteo. Cualquiera puede llamarla.

Fija la ronda de drand que va a decidir, ≥ MARGEN_SEGUNDOS en el futuro: al cerrar, esa firma todavía no existe para nadie. La ronda siguiente arranca acá mismo: lo que se deposite desde ahora cuenta para ella y no toca las chances de la que cerró.

fn cerrar_ronda(env: soroban_sdk::Env) -> u64

Constructor: corre en la misma transacción que el deploy, así que nadie puede adelantarse a inicializar con otra configuración.

No hay admin ni keeper. Después de esto el contrato no tiene llaves.

fn __constructor(
    env: soroban_sdk::Env,
    token: soroban_sdk::Address,
    fuente: soroban_sdk::Address,
    periodo: u64,
    tope: i128,
    drand_pk: soroban_sdk::BytesN<192>,
    drand_genesis: u64,
    drand_periodo: u64,
)

Trae la firma de drand de la ronda fijada al cerrar, verifica, elige ganador y le paga el rendimiento. Cualquiera puede llamarla.

El capital de todos queda intacto. La ronda siguiente ya está corriendo desde el cierre; esto solo paga.

fn ejecutar_sorteo(
    env: soroban_sdk::Env,
    firma: soroban_sdk::BytesN<96>,
) -> soroban_sdk::Address

Primer depósito declarando quién invitó. El referente pasa a pesar como si tuviera REF_BPS del capital del referido, mientras esté adentro.

fn depositar_con_referente(
    env: soroban_sdk::Env,
    usuario: soroban_sdk::Address,
    monto: i128,
    referente: soroban_sdk::Address,
)

Imports

WebAssembly Text (WAT) ▶