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
| #1 | NotInitialized | el contrato no se inicializó |
| #2 | AlreadyInitialized | el contrato ya estaba inicializado |
| #3 | InsufficientBalance | no alcanzan los RWA |
| #4 | InvalidAmount | el monto no alcanza para 1 RWA |
| #5 | NotWhitelisted | el inversionista no está aprobado |
| #6 | Paused | el contrato está en pausa |
| #7 | AmountTooLow | el mínimo es 500 · nuevo |
Los tests
cargo test prueba el contrato en mi computadora. Ver los tests ↗
test_invest_100_fails_and_500_works100 falla y no cobra; 500 da 5 RWA.
test_invest_minimum_is_inclusive499 falla, 500 pasa.
test_investDel repo base: invertir funciona.
test_withdrawDel repo base: el admin retira lo cobrado.
test_invest_not_whitelistedDel repo base: sin aprobación no se invierte.