Lock & trust model

What is enforced on chain, who can do what, and what is still beta.

Feebric is built so that the people who receive creator fees do not have to trust the creator, and nobody has to trust Feebric. This page lists exactly what is enforced on chain, what is operated by us, and what is still beta.

The lock

A manager can lock a vault until a date. While now < lock_until:

  • rules cannot be changed,
  • the manager cannot be changed,
  • the verifier key cannot be changed.

There is no exception for Feebric: the program has no admin path into a locked vault. The only lock operation is extending it (until ≥ lock_until). A vault needs at least one rule before it can be locked. The token page shows the lock date next to the coin name; "Unlocked · manager can edit" is shown otherwise, so holders know what they are looking at.

Roles

rolecancannot
Creator walletcreate the vault (seed of its address), pay rentanything else after creation, unless it is also the manager
Managerwhile unlocked: set rules, set manager, set verifier, locktouch funds; change anything while locked; shorten a lock
Coin creator (on pump.fun)point pump.fun's fee share at the vaultchange where the vault routes fees
Verifier keysign attestations that release social escrows to a recipient chosen by the account ownerredirect an escrow, sign for a different vault, rule or recipient than requested, or after 10 minutes
Anyonesettle, pay wallets and treasury, drip, buyback, expire escrowsmove money anywhere the rules do not say
Feebric adminrotate the treasury and admin keys of the program configchange any vault's fee or rules

Permissionless by design

Every crank is an open instruction with the vault's own checks. Feebric runs the reference keeper so creators do not have to, but the money does not depend on it: if the keeper stopped, anyone could settle and pay the buckets, and the holders' shares would be paid to the same addresses.

Accounting invariants

  • sum_buckets = Σ rule.balance + treasury_pending after every settlement.
  • Drips pay pro-rata against the full circulating supply, so omitting holders can only under-pay, never over-pay anyone.
  • A buyback's accounting is measured from the vault's actual balance change, and the program rejects a spend above the planned amount (UnexpectedSpend).
  • Changing rules never takes a second fee: released buckets are redistributed as carry.

The platform fee

10% of every inflow, taken at settlement, before the split. The value is a program constant copied into each vault at creation; a future program version cannot raise the fee of an existing vault. The fee's running total is shown on every token page.

The verifier

Social escrows need an oracle that confirms "this login is account user_id". Feebric runs one, but its power is narrow:

  • It signs exactly one message shape, FEEVAULT_SOCIAL_V1 ‖ vault ‖ rule ‖ platform ‖ user_id ‖ recipient ‖ expiry, and only when the logged-in account's numeric id equals the rule's user_id.
  • The recipient is chosen by the account owner and bound into the signature; the expiry is ten minutes.
  • The program verifies the signature through the Ed25519 instruction placed right before the claim, and checks every field against the rule.
  • The verifier key is a per-vault parameter, not a program constant. A manager can replace it while the vault is unlocked, which is also the path to a different attestation source without a program upgrade.

Beta caveats

  • The program is upgradeable. The planned upgrade authority is a Squads multisig with a 72-hour timelock; until then the deployer key holds it.
  • The program has not been audited. Planned before mainnet: fuzzing of settlement and drip invariants, a static analysis pass, a verifiable build.
  • Feebric runs on devnet. Nothing on mainnet yet.
  • Known gaps are listed in FAQ & beta status.