Approval states
How individual approver signatures and a request's overall approval progress are tracked.
Approval progress has two levels: the state of each individual approver slot, and the overall request state that reflects whether the threshold has been met.
Per-approver-slot progress
A vault's approver set has a fixed number of slots (an M-of-N arrangement — see Approval threshold). Each slot is, at any point for a given pending request:
| Slot state | Meaning |
|---|---|
| Empty | This approver has not yet signed the pending request. |
| Signed | This approver has provided a valid signature over the exact frozen transaction for this specific request. A signature only ever counts for the one exact transaction it was produced over — it cannot be reused for a different amount, recipient, or any other change. |
Once the number of signed slots meets or exceeds the vault's configured threshold, the request has enough approvals to proceed to submission.
Overall request state
The request-level state (see Request states) reflects this directly:
AWAITING_APPROVALS— the request needs more valid approver signatures before it can proceed.INSUFFICIENT_APPROVALS— submission was attempted without enough valid signatures to meet the threshold; this is a fail-closed refusal, never a partial success.- Once the threshold is met, the request proceeds through the normal
SIGNED→FINALIZED→PREFLIGHT_VERIFIED→SUBMITTING→SUBMITTED→CHAIN_VERIFIEDprogression like any other request.
Verification is never trust-based
A forged or merely-claimed approval count is not sufficient at any stage: finalization requires the actual signatures, verified against the frozen transaction's exact signed content for each canonical approver slot, and Kaspa consensus independently re-verifies every approver signature again when the transaction reaches the covenant. Displaying approval progress in the hosted application is a convenience — it is never itself the source of approval authority.
See also: External approver, Approval threshold, Approval not visible.