La implementación combina objetos compartidos, yield en NAVI y relayers que admiten entradas fiat y cross-chain.
0xa48c115fbf1248c9413c3c655b7961bab694a57dd8b3961d4ba54b963c34058a
pasatanda_core
Sui Testnet
PasaTanda es una ROSCA (Tanda) descentralizada construida sobre Sui, diseñada para capturar rendimiento y admitir flujos fiat.
Cada ciclo de ROSCA es un objeto compartido accesible por todos los participantes.
Los retiros se mantienen en orden fijo e inmutable, cumpliendo la regla de turno.
Los depósitos pueden canalizarse hacia NAVI para capturar rendimiento antes de pagar al ganador.
Los relayers backend facilitan entradas fiat o cross-chain sin comprometer la lógica on-chain.
Crea una nueva tanda con participantes, montos y opciones de vault.
sui client call --package <PACKAGE_ID> --module pasatanda_core --function create_tanda --type-args 0x2::sui::SUI --args '[<participant1>, <participant2>, ...]' <contribution_amount> <guarantee_amount> '<fiat_vault_option>' 0x6 --gas-budget 50000000Deposita la garantía inicial que activará la tanda una vez que todos la hayan pagado.
sui client call --package <PACKAGE_ID> --module pasatanda_core --function deposit_guarantee --type-args 0x2::sui::SUI --args <tanda_id> <coin_object_id> 0x6 --gas-budget 20000000Realiza la contribución mensual desde el emisor hacia la tanda.
sui client call --package <PACKAGE_ID> --module pasatanda_core --function deposit_payment --type-args 0x2::sui::SUI --args <tanda_id> <coin_object_id> 0x6 --gas-budget 20000000Deposita en nombre de otro miembro para soportar fiat o flujos cross-chain.
sui client call --package <PACKAGE_ID> --module pasatanda_core --function deposit_payment_for --type-args 0x2::sui::SUI --args <tanda_id> <coin_object_id> <beneficiary_address> 0x6 --gas-budget 20000000El participante en turno reclama el pool; la función soporta retiros cripto o fiat.
sui client call --package <PACKAGE_ID> --module pasatanda_core --function payout_round --type-args 0x2::sui::SUI --args <tanda_id> <withdrawal_type> 0x6 --gas-budget 20000000Cierra la tanda una vez completadas todas las rondas y devuelve garantías.
sui client call --package <PACKAGE_ID> --module pasatanda_core --function close_tanda --type-args 0x2::sui::SUI --args <tanda_id> <admin_cap_id> 0x6 --gas-budget 30000000El turno no se puede modificar una vez creada la tanda.
Solo el participante correcto puede reclamar cada ronda.
Las transiciones de estado se controlan estrictamente.
Las funciones administrativas están protegidas.
Todas las acciones importantes emiten eventos para monitoreo off-chain.
Nueva tanda inicializada.
Participante pagó la garantía.
Contribución de ronda recibida.
Pool distribuido al ganador.
Retiro fiat solicitado (para backend).
Contador de ronda incrementado.
Transición de estado.
Tanda finalizada.