La validación de transacciones en Cardano se divide en dos fases. La razón principal para introducir la validación en dos fases es limitar la cantidad de trabajo de validación no compensado por los nodos. Cada fase tiene un propósito para lograr este objetivo. En términos generales, la primera fase verifica si la transacción se construyó correctamente y si puede pagar su tarifa de procesamiento. La segunda fase ejecuta los scripts incluidos en la transacción. Si la transacción es válida en la fase 1, se ejecutan los scripts de la fase 2. Si la fase 1 falla, no se ejecuta ningún script y la transacción se descarta inmediatamente.
Por lo tanto, se espera que los nodos agreguen transacciones procesables a un bloque incluso si las transacciones no son válidas en la fase 2. Esto significa que:
Un nodo realiza una pequeña cantidad de trabajo no compensado para descubrir que una transacción no es procesable, pero no se realiza una costosa validación de fase 2, o
la transacción es procesable. A continuación, el nodo puede realizar la validación de la fase 2 de los scripts, etiquetar la transacción en consecuencia como válida para la fase 2 o inválida para la fase 2 y agregarla a un bloque. En cualquier caso, el nodo será posteriormente compensado por ambas fases de validación a través de la tarifa o la garantía cobrada de esta transacción.
La expectativa es que la falla de la fase 2 sea poco común, porque un usuario que envía una transacción con scripts defectuosos perderá ada sin lograr nada.
Si los scripts no se validan, aún debemos compensar a los nodos por su trabajo. Pero no podemos simplemente tomar dinero de las entradas de la transacción, porque es posible que se hayan bloqueado con scripts, ¡los que fallaron! Entonces, en cambio, Alonzo introduce una disposición especial para esto. La garantía de una transacción es la cantidad de ada que se cobrará como tarifa en caso de una falla en la validación del script de la fase 2. En una transacción procesable, esta cantidad debe ser al menos un cierto porcentaje de la tarifa de transacción, especificado en un parámetro de protocolo.
Este monto se especifica al momento de construir la transacción. No directamente, sino agregando aportes colaterales a la transacción.
https://iohk.io/en/blog/posts/2021/09/07/no-surprises-transaction-validation-part-2/