Skip to content

Execution & proofs

A prong executes only with on-chain proof of its trigger.

proveTrigger#

The protocol that placed the prong calls proveTrigger(holder, prongId, proof). The contract then checks, in order:

  1. The prong is active and not expired.
  2. The asset is not frozen. See Market hours & freeze rules.
  3. The market for the asset is open.
  4. The trigger's verifier accepts the proof.

If every check passes, exactly claim tokens move from the vault to the protocol. Nothing else moves. Junior prongs move up one rank.

Proofs#

A proof is data the trigger verifier can check on-chain. It usually references:

  • a Chainlink round for the asset price;
  • state in the protocol's own contracts, such as a loan's health factor or an option's exercise.

The verifier is fixed when the prong is placed. It cannot be changed afterwards.

Slashing#

Part of a trigger can depend on the protocol's own state. If a prong executes without valid proof, the placing protocol's $BZL stake is slashed.

Invalid execution is established by a challenge against the proof within a challenge window. The window length is a deployment parameter and will be published before launch. A successful challenge slashes the stake. The holder is compensated from it, up to the value seized.

What stays#

Execution touches only the executed prong's claim. The rest of the vault, other prongs and the free remainder are unchanged.