Skip to main content
FlowGuard stream and payout contracts share a common lifecycle and flags model. This consistency lets the indexer, explorer, API, and frontend handle multiple covenant families with one state model.

Status Transitions

Status Values

StatusByteMeaning
ACTIVE0x00Normal operating state. Claims and supported controls are available.
PAUSED0x01Progression is frozen by sender authority.
CANCELLED0x02The stream ended early and remaining value was returned according to contract rules.
COMPLETED0x03The covenant finished and no replacement state UTXO was produced.

Flags Bitmap

The flags byte at position [1] of the mutable NFT commitment is a bitfield:
BitHexNameEffect
00x01FLAG_CANCELABLESender controls may cancel the stream
10x02FLAG_TRANSFERABLERecipient may transfer future rights to a new recipient
20x04FLAG_USES_TOKENSThe covenant escrows CashTokens instead of BCH

Examples

0x05 = cancelable CashToken stream
0x07 = cancelable, transferable CashToken vesting stream
0x00 = non-cancelable BCH stream

Pause and Resume Behavior

  • Vesting-based schedules exclude paused time from future vesting math by advancing the effective cursor on resume.
  • Recurring schedules keep their cadence state in the recurring commitment and resume from the updated recurring window.

Terminal States

When a contract reaches COMPLETED or CANCELLED:
  • the existing covenant UTXO is consumed
  • no replacement mutable NFT state output is created
  • indexers and explorers treat the stream as terminal
Terminal status is detected from the transaction structure as well as from the persisted record. The covenant ends when the state UTXO is consumed without a replacement state output.