U1Smart Contract State MachineEstado, precondiciones, eventos y revert
Laboratorio 06 · Programabilidad

Un contrato es una máquina de estados con reglas

Operá un escrow educativo y observá qué acciones son válidas en cada estado. La simulación enfatiza precondiciones, transición de estado y eventos; Los roles son supuestos didácticos: comprador deposita y libera, vendedor declara entrega y árbitro puede reembolsar. No incluye disputas, plazos ni firmas reales; la entrega declarada no prueba recepción física.

Escrow educativo

CREATEDestado actual
0fondos bloqueados
0eventos emitidos
Estado inicial: todavía no hay fondos bloqueados.

Lógica y trazabilidad

1
CREATED
Puede aceptar un depósito.
2
FUNDED
Fondos bloqueados; el vendedor puede marcar entrega.
3
DELIVERED
El comprador puede liberar el pago.
4
RELEASED
Estado final: fondos liberados al vendedor.
R
REFUNDED
Estado final alternativo: fondos devueltos.
deposit(): require(sender == buyer && state == CREATED)
markDelivered(): require(sender == seller && state == FUNDED)
release(): require(sender == buyer && state == DELIVERED)
refund(): require(sender == arbiter)
          require(state == FUNDED || state == DELIVERED)