Consenus Series: PaLa – ThunderCore

0 3


The following post is an adaption of the PaLa protocol description from the ThunderCore Whitepaper. It is extended with more details, diagrams and explanations.

PaLa is a blockchain consensus protocol based on partially synchronous network assumptions and tolerates up to ⅓ corruptions. Below, we describe a simplified version of the protocol called Basic Pala to illustrate its simplicity and effectiveness. Basic Pala is the foundation for understanding the complete version of our protocol which is outlined afterwards. The full details of the PaLa protocol are readily available in the PaLa research paper.

Assume a fixed committee of voters. How these nodes are chosen is described later. Each node maintains a local epoch counter e and a local view of the blockchain. Each block contains an epoch number, a list of transactions, and the hash of its parent block. The epoch number of a chain is defined as the epoch number of the last block in the chain. Each epoch has a single unique proposer which is known to all nodes in the network. In this simplified version, every voter is also a proposer for some epochs.

Consensus proceeds one block at a time. Proposers propose a block if they are eligible to propose in the current epoch. Voters vote on blocks if a set of conditions are met. A collection of ⅔ of the committee’s votes on a single block is a notarization for that block. If there is a notarization for a block, the block is notarized. Each block has an epoch which advances monotonically. If an epoch e block has an epoch e-1 parent, the block is a normal block otherwise it is a timeout block. A block is finalized if it is the parent of a notarized normal block. A finalized block is part of the immutable history of the blockchain and indicates consensus has been achieved.

Each node keeps their local current blockchain fresh. Whenever it sees a valid blockchain that is fresher than its current chain–it has higher epoch number than the epoch number of their current chain–they switch to this chain. A valid blockchain should satisfy the following conditions:

  1. The epoch numbers of all blocks should be strictly increasing.
  2. Every block in the blockchain is notarized

In addition each node will do the following:

Increase local epoch counter to e if

  • Their current local epoch is smaller than e AND
  • (They see a notarized chain for epoch e-1 OR
  • They see at least ⅔ committee members’ validly signed clock(e) messages)

If they have stayed in epoch e-1 for more than a fixed amount of time

  • Broadcast the message clock(e).

If they are the proposer of epoch e

  • If their current chain ends with the block of epoch e-1, immediately propose a new block for epoch e extending their own current notarized chain

You might also like

Pin It on Pinterest

Share This

Share this post with your friends!

WhatsApp chat