Prerequisites
This guide describes what you are going to need to successfully set a Chainflip validator node.
Ethereum Accounts
We highly advise against using a digital wallet that has any real funds in this setup. For the purposes of joining Chainflip's or any other testnet, it is a best-practice to create new wallets.
You'll need two Ethereum Accounts: the first one (we will refer to it as your Wallet/Account) will be used for receiving tFLIP
and Interacting with the Auctions App to add and redeem funds and the second one (we will refer to it as the Validator Wallet/Account) will be used by the validator to send transactions to the Sepolia Ethereum blockchain (this will be automatically generated as part of Generating Keys).
sETH (Sepolia Ether)
Each Validator is also responsible for submitting transactions to the Ethereum blockchain. Since Ethereum is account-based, you are required to supply your own sETH
in order to pay the up-front cost for the transactions.
Chainflip recommends that you have at least 0.1 sETH in your Validators' account at all times. You must ensure that this sETH is loaded onto the Validators' wallet before you try to add funds.
You'll also need to have sETH in your wallet to cover the gas fees for Adding and Redeeming Funds operations.
Getting test assets
sETH
is Sepolia Ether and can be obtained from a Sepolia faucet. Faucets are not always reliable, so if you have an issue obtaining sETH, please message the Discord
🙋︱help-and-support
(opens in a new tab) channel.
Faucets:
If Sepolia Ethereum Testnet is not showing on your Wallet, make sure to enable Testnets in your wallet settings.
You will need a way for your validator to monitor the Sepolia Ethereum Blockchain. The Chainflip Engine software allows you to use any endpoint you specify in its config file. You can either run a geth client (opens in a new tab) (make sure to set this up on the Sepolia testnet!), or you can rely on a third-party remote client provider such as Alchemy (opens in a new tab), Infura (opens in a new tab), or Rivet (opens in a new tab).
Please note, gas cost reimbursements are currently not implemented for Validators. Validators will need to ensure their wallets are topped up with sETH or they may run out and be unable to broadcast on behalf of the network. This is a limitation of the Vault Contract design, however, automatic reimbursement is on the future feature list.
System Requirements
Chainflip Validator machines are required to perform some computationally expensive tasks. A cheap VPS will not be enough. We want to see how the network performs using a diverse set of machines, so we will not be offering too much in the way of suggestions in these docs, but Chainflip recommends a minimum of:
OS: Ubuntu 22.04 / 20.04 | Our binaries are not compiled on any other OS
CPU: 4GHz+ amd64/x86_64 CPU Architecture | 4+ Dedicated Cores or 6+ Shared Cores
RAM: 8GB+
SSD: 100GB+ NVMe (this may increase over time)
Bandwidth: Minimum 400MBps, Recommended 1GBps connection, 100 GB bandwidth combined up/down per month
This machine must be available 24/7 and thus it is recommended that you only try this on machines with a stable and reliable internet connection, such as a VPS or Dedicated Server. If you would like some help picking a server to rent, you can come to the Chainflip Community Discord and ask for help in the 🛠︱technical-discussion
(opens in a new tab) channel.
Networking
Firewall
You should ensure that all connections on ports 30333 (TCP)
and 8078 (TCP)
are not blocked! Moreover make sure your firewall allows NTP outbound traffic on port 123 (UDP)
Some VPS providers enable an all-port firewall by default, but if this is not the case your node will not be able to participate in Keygen / Signing ceremonies and as a result will never become active.
Static IP
To ensure uninterrupted operation of your node, you should setup your server to have a static public IP address. If your server gets a new IP address, you will need to update your node's configuration and restart it.
NTP Daemon
In some cases, the system time will drift causing the authoring or importing of blocks to fail. To prevent this, you should install and enable an NTP daemon on your server. This will ensure that your system time is always correct.
Feel free to use your NTP daemon of choice, but we recommend ntp
. You can install it and enable it with the following commands:
sudo apt install ntp
sudo systemctl start ntp
sudo systemctl status ntp
sudo systemctl enable ntp
Make sure your firewall allows NTP outbound traffic (Port 123 UDP).