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 stateMeaning
EmptyThis approver has not yet signed the pending request.
SignedThis 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:

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.