Skip to main content
FlowGuard’s security model starts with BCH consensus enforcement. The contracts validate treasury rules, stream math, timing constraints, and state transitions on chain. Off-chain services help with UX, indexing, and liveness. They do not replace contract enforcement.

What the contracts enforce

AreaOn-chain guarantee
Treasury policySpending limits, signer thresholds, recipient rules, and treasury state transitions are validated by covenant logic.
Stream schedulesClaim amounts, unlock timing, refill transitions, and terminal states follow the deployed schedule family.
Vote locksLocked voting state and reclaim timing are enforced by the vote lock covenant.
Distribution rulesCampaign state, claim limits, and payout conditions are validated by the distribution contract path.

What off-chain services do

ComponentRole
FrontendPresents product state and helps the user build the right transaction.
Backend APIAssembles transaction descriptors, confirms broadcasts, and serves indexed state.
IndexerReconstructs covenant state into queryable product views.
ExecutorOptional: triggers permissionless timed actions. Not currently operated by FlowGuard; recipients claim manually via UI.

Trust boundaries

Frontend and API

The frontend and API can be wrong about display state. They cannot make an invalid contract transition succeed on chain. Self-host or independently verify if you need stronger operational assurance.

Indexer

Indexing improves usability and reporting. It is not the source of truth for covenant validity. If indexed state looks wrong, on-chain state still governs what can happen.

Executor

An executor triggers permissionless functions when their preconditions are met. It has no special contract powers and cannot bypass the covenant. FlowGuard does not operate a shared executor today. Recipients claim manually through the app, or any third party can broadcast a valid permissionless transaction directly.

Metadata

Descriptions, labels, and higher-level UI context are off-chain metadata. They improve readability. They are not authoritative for contract state.

Authentication

Mutating API calls require a wallet-ownership proof. The client signs a one-shot server-issued nonce with the private key for the declared BCH address. The backend verifies the signature against the address’s pubkey hash before any state-changing handler runs. Read endpoints stay open.

Key management

FlowGuard does not remove the need for good key management.
  • Protect signer keys and treasury operators carefully.
  • Use hardware wallets for high-value operations.
  • Choose signer thresholds that fit your recovery and control needs.

Current contract status

FlowGuard is live on BCH Mainnet. The covenants deployed to mainnet were reviewed internally before launch. No third-party audit has been completed. The covenant source is in contracts/core/ and the bytecode is independently reproducible from source via node scripts/verify-mainnet-deployment.ts.

Self-hosted verification

For stronger assurance, run your own:
  • Frontend
  • Backend API
  • Indexer
That gives you an independent operating view while still using the same on-chain covenants.

Reporting

If you find a security issue, please email security@flowguard.cash with reproduction steps. We acknowledge receipt within 48 hours and triage on a best-effort basis. Public disclosure should follow coordinated disclosure norms.