A toolset crafted for the creation and management of Finality Providers.
Finality providers are responsible for voting at a finality round on top of CometBFT. Similar to any native PoS validator, a finality provider can receive voting power delegations from BTC stakers, and can earn commission from the staking rewards denominated in Babylon tokens. The core logic of a finality provider instance can be found in Finality Provider Core.
The finality provider toolset does not have any special hardware requirements and can operate on standard mid-sized machines running a UNIX-flavored operating system. It consists of the following programs:
- Babylon full node: An instance of a Babylon node connecting to the Babylon network. Running one is not a strict requirement, but it is recommended for security compared to trusting a third-party RPC node.
- Extractable One-Time Signature (EOTS) manager: A daemon responsible for securely maintaining the finality provider’s private key and producing extractable one time signatures from it.
- Finality Provider: A daemon managing the finality provider. It connects to the EOTS manager to generate EOTS public randomness and finality votes for Babylon blocks, which it submits to Babylon through the node connection.
The following graphic demonstrates the interconnections between the above programs:
This project requires Go version 1.21 or later.
Install Go by following the instructions on the official Go installation guide.
To get started, clone the repository to your local machine from Github:
git clone https://github.com/babylonlabs-io/finality-provider.git
You can choose a specific version from the official releases page
cd finality-provider # cd into the project directory
git checkout <release-tag>
At the top-level directory of the project
make install
The above command will build and install the following binaries to
$GOPATH/bin
:
eotsd
: The daemon program for the EOTS manager.fpd
: The daemon program for the finality-provider with overall commands.
If your shell cannot find the installed binaries, make sure $GOPATH/bin
is in
the $PATH
of your shell. Usually these commands will do the job
export PATH=$HOME/go/bin:$PATH
echo 'export PATH=$HOME/go/bin:$PATH' >> ~/.profile
Before setting up the finality provider toolset, an operator must ensure a working connection with a Babylon full node. It is highly recommended that operators run their own node to avoid trusting third parties. Instructions on how to set up a full Babylon node can be found in the Babylon documentation.
After a node and a keyring have been set up, the operator can set up and run the Extractable One Time Signature (EOTS) manager daemon. A complete overview of the EOTS manager, its operation, and its configuration options can be found in the EOTS Manager page
The last step is to set up and run the finality daemon. A complete overview of the finality daemon, its operation, and its configuration options can be found in the Finality page.
A finality provider receives BTC delegations through delegators interacting with Babylon and choosing it as the recipient of their delegations. To perform a self-delegation, the operator can either visit the staking web app we provide, or run the Babylon BTC Staker program once. The BTC staker connects to a Bitcoin wallet and Babylon to perform delegations.