Aex
Entregado · En revisiónTrack RWA Launchpad · Entrega: por confirmar

RWA Launchpad

Un contrato que vende tokens de un activo real. Mi regla: invertir al menos 500.

Qué es

Un RWA es un token que representa algo real, como una casa o una factura. El launchpad es el contrato que lo vende.

Admin · admin-tool.sh

Crea el activo y aprueba a los inversionistas.

Inversionista · user-tool.sh

Invierte, ve su balance y transfiere sus RWA.

La regla

Antes de cobrar, el contrato revisa el monto. Si es menor a 500, se detiene con AmountTooLow.

// dia-3/src/lib.rs (resumido)
fn check_variation_gate(env: &Env, investor: &Address, payment_amount: i128) -> Result<(), Error> {
    if payment_amount < 500 {
        return Err(Error::AmountTooLow);   // error #7
    }
    Ok(())
}

Es lo primero que revisa invest: si falla, no se cobra nada. Ver el código ↗

El precio

  • 100 unidades = 1 RWA. Entonces 500 ÷ 100 = 5 RWA.
  • Se paga con XLM de prueba, contado en su unidad más chica: 500 unidades = 0,00005 XLM.
  • Ojo: con 550 pagas 550 y recibes 5 RWA. Lo que sobra no se devuelve.

Cuando falla

Antes de enviar, la transacción se simula. Con 100 la simulación ya falla, así que nunca llega a la red: no cobra, no paga comisión y no aparece en el explorador.

Los errores

#1NotInitializedel contrato no se inicializó
#2AlreadyInitializedel contrato ya estaba inicializado
#3InsufficientBalanceno alcanzan los RWA
#4InvalidAmountel monto no alcanza para 1 RWA
#5NotWhitelistedel inversionista no está aprobado
#6Pausedel contrato está en pausa
#7AmountTooLowel mínimo es 500 · nuevo

Los tests

cargo test prueba el contrato en mi computadora. Ver los tests ↗

  • test_invest_100_fails_and_500_works

    100 falla y no cobra; 500 da 5 RWA.

  • test_invest_minimum_is_inclusive

    499 falla, 500 pasa.

  • test_invest

    Del repo base: invertir funciona.

  • test_withdraw

    Del repo base: el admin retira lo cobrado.

  • test_invest_not_whitelisted

    Del repo base: sin aprobación no se invierte.