Switching Consensus Clients
Having a variety of clients in a blockchain network and improving our client diversity is critically important.
Client diversity refers to utilizing different software clients in a blockchain network developed by various teams and in other programming languages.
- Security and Resilience: Client diversity increases the robustness of the network. If there's a bug in one client, it doesn't bring down the entire network because other clients can continue to operate. This decentralization and redundancy is a fundamental aspect of blockchain security and resilience.
- Decentralization and Governance: Client diversity promotes decentralization in the development and governance of the Ethereum network. It prevents any team or entity from having too much influence over the network's growth.
Most validator nodes on the LUKSO mainnet are running with Geth and Prysm. Node operators are responsible to ensure they split their client usage evenly to the extent of officially supported clients and validators.
Switching from Prysm to Lighthouse
As a validator, you need to import your validator deposit key files (keystore-xxx-[timestamp].json
) that you have generated using the LUKSO Wagyu or LUKSO CLI Keygen tools. Ensure you safely copy them to your node before switching to a new consensus client.
Stop your Node
If you are currently running the Prysm consensus client, stop the clients before making any adjustments.
If you configured custom services on top of the LUKSO CLI, please use your service commands to stop your node.
The name of the directory myLUKSOnode/
can be changed in the examples below.
Move into your node's working directory.
$ cd myLUKSOnode
Make sure to stop all processes of the blockchain node.
$ lukso stop
Afterward, you can check if your node stopped correctly.
$ lukso status
Create a new Working Directory
Move out of your current node's working directory.
$ cd ..
Next, create a new working directory for your updated node. Your old folder will act as a backup for your previous configuration and keystore files.
$ mkdir myNewLUKSOnode && cd myNewLUKSOnode
Initialize the new Working Directory
Next, you can initialize your new working folder. The command will download the latest network configurations and genesis files to synchronize with the LUKSO blockchain.
$ lukso init
Install the Latest Clients
After the initialization is successful, we must install the new blockchain clients.
It is recommended to use Erigon and Lighthouse clients to address both client majorities at once.
After the installation has been successful, you can continue importing your validator keys into the new validator wallet that will be used within Lighthouse. You will be asked to set a new wallet password to safely store the imported deposit keys. Further, you must input your password for the deposit keys to be encrypted and added to the wallet.
$ lukso install
Importing Validator Keys
After the installation has been successful, you can continue importing your validator keys into the new validator wallet that will be used within Lighthouse. You will be asked to set a new wallet password to store the imported deposit keys safely. Further, you will have to input your password for the deposit keys, so that they can be encrypted and added to the wallet.
$ lukso validator import --validator-keys "./path/to/your/keys/folder"
Checking Validator Keys
After importing one or multiple folders, you can check your imported keys.
$ lukso validator list
If the imported deposit keys match the ones in the original folder, you can delete them from your node machine.
Start your new Node
You can start your node as regular. If you run your node as a validator, please adjust your flags or the recipient address.
In case you did any modifications to your configuration files, such as:
- configuring a Dynamic DNS
- connecting the blockchain explorer page
- adding a node name or graffiti
- adjusting your peer count
Please add them again and ensure these are in the correct format before starting your node.
Wait 10 minutes after stopping your node so the network does not accuse you of slashing while using updated configurations.
Start up your node using checkpoint synchronization to reduce your downtime while synchronizing with the network significantly. Fast synchronization speeds are essential if you run a validator node to avoid losing stake.
Your node will begin syncing from a recently finalized consensus checkpoint instead of genesis. It will then download the rest of the blockchain data while your consensus is already running. After the synchronization is finalized, you will end up with the equal blockchain data.
You can use the flag on every startup. However, it shows the most significant effect when synchronizing from scratch or after an extended downtime.
- Checkpoint Synchronization
- Regular Synchronization
If you are setting up a node for the testnet, add the --testnet
flag to the start command.
You will need the LUKSO CLI Version 0.8.0 or above in order to use the --checkpoint-sync
command. If you are using an older version, please pass down the checkpoint flag as described in the LUKSO CLI Documentation.
# Starting the Mainnet Node
$ lukso start --checkpoint-sync
# Starting the Mainnet Validator
$ lukso start --validator --transaction-fee-recipient "0x1234" --checkpoint-sync
The normal synchronization process will take multiple hours for the node to finalize. It is not recommended if you are running a validator.
If you are setting up a node for the testnet, add the --testnet
flag to the start command.
# Starting the Mainnet Node
$ lukso start
# Starting the Mainnet Validator
$ lukso start --validator --transaction-fee-recipient "0x1234"
After your node finalizes the synchronization with the network, you can remove the validator key folder and the old working directory.