Finality Provider Simple Guide
Prerequisites
Environment Setup
- Server Configuration: 2 CPU Cores / 4GB RAM / 50GB SSD
- OS: Ubuntu 20.04+ or macOS
- Install Golang 1.23+:
wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.23.0.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
- Verify Installation: go version
Get Test Tokens
- Register a Babylon testnet account
- Obtain test tokens from the Faucet (address format: bbn1...)
Step 1: Install Finality Provider Tools
# Clone the repository and compile
git clone https://github.com/babylonlabs-io/finality-provider.git
cd finality-provider
make install
# Verify installation
fpd version
eotsd version
Step 2: Create EOTS Key (Signing Key)
# Create EOTS key (for test environment)
eotsd keys add eots-key-1 --keyring-backend test
# Record the pubkey_hex from the output (needed for later steps)
# Example output:
# pubkey_hex: 36227dc*****************************56b8a6fd
Step 3: Start EOTS Service
# Start EOTS daemon (run in background)
eotsd start --home ~/.eotsd &
# Verify service status (check logs)
tail -f ~/.eotsd/logs/eotsd.log
# Should see "EOTS Manager Daemon is fully active!"
Step 4: Create Finality Provider Key
# Create Finality Provider key
fpd keys add fp-key-1 --keyring-backend test
# Record the address from the output (needed for later steps)
# Example output:
# address: bbn1***************************wn3upt
Step 5: Configure and Start Finality Provider
Edit the configuration file (~/.fpd/config/fpd.conf):
[Application Options]
```text
EOTSManagerAddress = "127.0.0.1:12582" # EOTS service address
RPCListener = "127.0.0.1:12581" # FPD service address
[babylon]
Key = "fp-key-1" # Key name from Step 4
ChainID = "bbn-test-6" # Testnet chain ID
RPCAddr = "https://babylon-testnet-rpc.nodes.guru" # Public RPC node
KeyDirectory = "~/.fpd" # Key directory
Start Finality Provider:
fpd start --home ~/.fpd &
Verify service status
tail -f ~/.fpd/logs/fpd.log
# Should see "Starting finality provider daemon..."
Step 6: Register Finality Provider
# Execute registration command (replace parameters)
fpd create-finality-provider \
--chain-id bbn-test-6 \
--eots-pk <pubkey_hex from Step 2> \
--commission-rate 0.05 \
--commission-max-rate 0.05 \
--commission-max-change-rate 0.01 \
--key-name fp-key-1 \
--moniker "YourFinalityProvider" \
--website "https://yourwebsite.com" \
--security-contact "[email protected]" \
--details "Finality provider for Babylon network"
# Successful output example:
# "status": "REGISTERED"
# "tx_hash": "F2DD0C***************************C9F7DEA6"
Step 7: Verify Successful Deployment
Check status:
fpd finality-provider-info <pubkey_hex from Step 2>
# Should show "status": "ACTIVE"
View rewards:
fpd reward-gauges <address from Step 4> --node https://babylon-testnet-rpc.nodes.guru
Monitoring metrics (optional):
- Finality Provider metrics: http://localhost:2112/metrics
- EOTS metrics: http://localhost:2113/metrics
Common Issues
- Error: account not found Cause: The account from Step 4 has insufficient test tokens
Solution: Obtain more test tokens from the Faucet
- Service fails to start
Check logs:
tail -f ~/.eotsd/logs/eotsd.logortail -f ~/.fpd/logs/fpd.log
Ensure ports are not occupied (default EOTS: 12582, FPD: 12581)
Next Steps
- Set up automatic service restart (Systemd configuration)
- Configure firewall to open necessary ports
- Regularly monitor service status and rewards
Congratulations! You have successfully deployed a Finality Provider! 🎉