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 inbackend/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.
Supported Permissionless Functions
| Contract | Function | Trigger Condition |
|---|---|---|
RecurringPaymentCovenant | pay() | tx.locktime >= next_payment_timestamp |
ProposalCovenant | expire() | tx.locktime >= voting_end_timestamp |
VestingCovenant | complete() | tx.locktime >= endTimestamp |

