Finality Provider
Finality provider is a daemon program that receives delegations from BTC stakers and keeps submitting finality signatures over the rollup blocks to the finality contract on Babylon.
- It connects to a Babylon node to query all its BTC delegations to get its voting power.
- It connects to the finality contract via the Babylon node for submitting finality signatures.
- It connects to an RPC of the OP stack chain to get rollup block metadata.
Upon a new L2 block in the OP-stack chain, It:
- Gets the L2 block metadata.
- Queries Babylon chain to determine whether it has voting power at this L2 block height.
- If yes, sign and submit a finality signature to the finality contract.
Finality signatures are signed by using the extractable one-time signature (EOTS) algorithm. EOTS allows the signer to promise that they will only sign a single message under a certain context (i.e. block height), otherwise, the private key can be extracted by anyone. Thus, anyone can slash the finality provider if it submits multiple signatures for the same block height.