Comparing Proposed and On-Chain Root Node Lists
Before jumping into a step-by-step guide on how to accept a newly proposed root node list, it is essential to compare it with the root node list currently on-chain in order to identify any potential differences. This step will ensure the accuracy and integrity of the new list. Hence, the following guide will show you first how to review the difference between the proposed and the onchain list.
- Connect to your root node server. The method for doing this might vary depending on your setup. For instance, Mac users can use the
Terminalapplication to establish an SSH connection to their server instance, while Windows users can utilizePuTTyorPowershell. Alternatively, you could also access your server console through your server hosting provider's management system. - Go to the /rootnode directory. To accomplish this task, copy and paste the following command into your console and press enter to execute it:
cd mainnet-public-tools/rootnode
- Access the q-client console by executing this command. You might need to add
sudobefore that, depending on what rights your current user has:
docker-compose exec rootnode geth attach data/geth.ipc
- See the difference between the proposed and the on-chain root node list by executing this command:
gov.diffRootList("proposed", "onchain")
Example Output:
[{
Diff: null,
Name: "proposed"
}, {
Diff: null,
Name: "onchain"
}]
If the Diff parameter for both objects is null, then it means that both lists contain the same list of addresses. In this case, you can be sure that the proposed list contains all addresses from the on-chain root node list and you can accept it.
If “onchain” addresses appear in the “Diff” section, it could indicate that root nodes have joined the on-chain panel after a new version of the layer-0 root node list has been proposed. While it's possible to propose another updated version of the layer-0 root node list that includes these new joiners, doing so would necessitate restarting the signing process. In practical terms, it might be wise to sign the current update of the layer-0 list and incorporate the new joiners during the next iteration of updates. Ultimately, a slightly imperfect but more current layer-0 root node list is preferable to an outdated one. In such scenarios, it's crucial to coordinate with the rest of the root node panel. For communication, consider using Discord or addressing it in the next root node meeting.
Please note: If you proposed a root list yourself, the "proposed" list is the "desired" list from your perspective. Hence, the according command delivering the same result as above for you as proposing root node is gov.diffRootList("desired", "onchain").
FAQ
Q: How to interpret the output of gov.diffRootList("proposed", "onchain")?
A: The object Name: "proposed" contains, under "Diff:", all addresses from the proposed list that are not present in the on-chain list. Conversely, the object Name:"onchain" contains, under "Diff:", all addresses from the on-chain list that are not included in the proposed list. For example, consider the following output:
[{
Diff: null,
Name: "proposed"
}, {
Diff: ["0xf691ea2e16b1017ce4893c2d2b91e745a3e501ad"],
Name: "onchain"
}]
The output indicates that the following address exists in the on-chain root node list but is not included in the proposed root node list: 0xf691ea2e16b1017ce4893c2d2b91e745a3e501ad. In such a case, you should explore the reason behind this discrepancy and only then consider proposing an updated list that includes the missing on-chain address.