Permissioned blockchains in ethereum use consensus algorithms that involve a decentralized set of Block Signer nodes to form a chain and propose blocks. The proposed blocks are finalized after a certain majority of the Block Signer nodes accept the proposer’s block (the number of votes needed to finalize a block proposal depends on the consensus algorithm).
Ethereum blockchains are initialized with a Genesis Block that has an initial list of authorized nodes called Signers in Clique/POA consensus and Validators in IBFT consensus. In the Kaleido console, we use the term Signer to refer to either of these types for consistency. We’ve got an excellent overview of the different consensus algorithms here.
From that point on, the list of Signer nodes can be modified by the current set of Signers. Adding a new node to the Signers group or removing an existing node from the group can be accomplished by Signers casting votes in newer blocks (the number of votes needed to carry out the addition/removal depends on the consensus algorithm). Each block is signed by the node producing the block so that every other node in the chain which receives the block is able to validate that the block is produced from an authorized participant. Hence the list of Signers can change over time and nodes maintain a dynamic list of Signers.
Nodes in a Kaleido environment with certain consensus algorithms (Geth/POA, Quorum/IBFT, Besu/POA, Besu/IBFT) can be created as a Signer or Non-Signer. Kaleido environments also contain a System Monitor node that is a participant in the chain and is created as a Signer. The System monitor is the blockchain access point for platform features such as the Data explorer.
In release 1.0.28, we introduced the ability for customers to change the status of a node from a Signer to Non-Signer (and vice-versa). To change a node from one to the other, click on the node you want to modify and click on the following in the left navigation bar:
Node -> Settings -> Change To Non-Signer (or Signer)
Click Apply on the dialog box.
Customers also have the ability to change the status of the System Monitor node to a Non-Signer. To change a System Monitor from Signer to Non-Signer, or vice versa, click on the following in the left navigation bar:
Manage Resources -> Blockchain -> Dashboard
Click Change next to the System Monitor node’s Consensus Role and click Apply on the dialog box.
On the dialog box, Click on the Apply button. Kaleido orchestrates actions on all existing Signer nodes in the environment to cast a Vote to Add/Remove the node as a Signer. Note that any proposer can include one vote per block (the rest of the votes are captured in a pending list which is then processed in subsequent blocks). Hence Adding/Removing multiple nodes as Signers can take some time to propagate and resolve.
The decentralization model in Kaleido allows creation of a Network (Consortia) as Centralized or Decentralized. The ability to change a node’s Signer status is governed by the following rules:
- In a Decentralized Consortia, a member (organization) must have been granted the Manage Environments permission in order for a user in the membership to change the Signer status of System Monitor node.
- In a Decentralized Consortia, a member (organization) must have been granted the Create Signers permission in order for a node in the membership to be changed to a Signer. This restriction does not apply if all nodes excluding System Monitor in the environment belong to the same membership.
- Billing plans may contain an upper limit on the number of Signer nodes in an environment and the total number of Signer nodes in the environment cannot exceed the limit.
- Each consensus algorithm has a minimum number of Signer nodes that are required to ensure reliable operation and smooth functioning of the environment during an Upgrade, Pause/Resume of the environment etc. Changing nodes to Non-Signers that results in the number of Signer nodes falling below the threshold is not allowed.