Skip to main content
Several FlowGuard covenants have functions that are permissionless — anyone can call them at the right time. The executor network is the infrastructure layer that makes this automatic.

What the Executor Does

The executor monitors all active covenant UTXOs and submits transactions when:
  • A recurring payment interval has elapsed (RecurringPaymentCovenant.pay())
  • A proposal’s voting deadline has passed (ProposalCovenant.expire())
  • A vesting schedule has passed endTimestamp (VestingCovenant.complete())

Architecture

Running Your Own Executor

The executor is a standalone service in backend/executor/. It connects to a BCH node via Electrum protocol, reads covenant state from the SQLite database, and broadcasts transactions.
Running an executor is permissionless and trustless. The covenant contract validates all correctness — the executor cannot steal funds or trigger incorrect payouts.
Anyone running an executor participates in the liveness guarantee for FlowGuard recurring payments. In future versions, an executor fee parameter will be added to the covenant so operators are compensated directly on-chain.

Supported Permissionless Functions

ContractFunctionTrigger Condition
RecurringPaymentCovenantpay()tx.locktime >= next_payment_timestamp
ProposalCovenantexpire()tx.locktime >= voting_end_timestamp
VestingCovenantcomplete()tx.locktime >= endTimestamp