Every terminal state in which the chain took money, and therefore every state
that gets a row (§ 3.1).
Utila's own enum documentation is what separates these from the states that
cost nothing, and it splits on one question — did the transaction enter a
block?
CONFIRMED confirmed by multiple blocks
MINED included in a block successfully
FAILED "entered a block but in a failed state and was confirmed
as such by multiple blocks"
MINED_FAILED "entered a block but in a failed state"
All four entered a block, so all four burned gas. The last two moved no value
and produce the fee-only row of § 4.6. Every other terminal state — DECLINED,
DECLINED_BY_AML_POLICY, CANCELED, DROPPED, EXPIRED, REPLACED — never reached
the chain, cost nothing, and gets no row at all.
Note that FAILED appears in UTILA_TRANSACTION_FAILURE_STATES, which the
workflow layer uses to decide a SEND failed. Both readings are right: the
send did fail, and the gas was still spent. They are different questions, so
they get different lists rather than one shared one.
Every terminal state in which the chain took money, and therefore every state that gets a row (§ 3.1).
Utila's own enum documentation is what separates these from the states that cost nothing, and it splits on one question — did the transaction enter a block?
CONFIRMED confirmed by multiple blocks MINED included in a block successfully FAILED "entered a block but in a failed state and was confirmed as such by multiple blocks" MINED_FAILED "entered a block but in a failed state"
All four entered a block, so all four burned gas. The last two moved no value and produce the fee-only row of § 4.6. Every other terminal state — DECLINED, DECLINED_BY_AML_POLICY, CANCELED, DROPPED, EXPIRED, REPLACED — never reached the chain, cost nothing, and gets no row at all.
Note that
FAILEDappears inUTILA_TRANSACTION_FAILURE_STATES, which the workflow layer uses to decide a SEND failed. Both readings are right: the send did fail, and the gas was still spent. They are different questions, so they get different lists rather than one shared one.