Created
December 3, 2020 16:50
-
-
Save marklnichols/a3f313fdfda9532ddfc0c73c3a7bac9d to your computer and use it in GitHub Desktop.
PaLa vs Streamlet notes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-------------------------------------------------------------------------------- | |
-- Differences in PaLa wrt Streamlets | |
-------------------------------------------------------------------------------- | |
There are 2 types of blocks in the chain: normal vs. timeout, where timeout blocks | |
have a gap in their epoch number wrt the previous block. This distinction seems to | |
only be used in the proofs, and is not part of the algorithm. | |
Switching leaders ("proposers ") with every block is optional. An alternative | |
procedure, where the role of the leader only changes when certain conditions are | |
met can also be used | |
A simple committee-change procedure is described | |
Nodes receive signed clock messages from the other nodes | |
When a node sees a notarized chain with a higher epoch number than its current | |
chain, it replaces its current chain with the 'fresher' one | |
If a proposer's chain has an epoch number earlier than the the current epoch-1, | |
the proposer waits for 1 'second' (to potentially see a fresher chain), then | |
propose a new block (without further waiting) | |
A node signs a proposed block if: | |
* the node has seen a chain "C-1" consistent with the proposed block's | |
parent header | |
* C-1's epoch is >= the epoch of the node's stored chain | |
* the node has not previously signed a block for this epoch | |
A node's epoch advances to the number 'e' as if either of the following occur: | |
* it sees a notarized chain for epoch e-1 | |
* it receives signed clock messages for e from 2/3 of the nodes | |
If a "minute" has passed since a node enters e-1, it will multicast clock (e) | |
-------------------------------------------------------------------------------- | |
-- Some Streamlet details wrt the above: | |
-------------------------------------------------------------------------------- | |
Streamlet always assumes the leader is rotating for each epoch | |
Sreamlet does not have the leader/proposer 1 "second" delay procedure mentioned | |
above | |
Epochs are driven by a timer, are not voted on, and do not proceed based | |
on blocks being added to chains | |
In Streamlet, a leader proposes a new block with the only restriction being | |
that it extends (any one of) the longest notarized chain(s) it has seen so far. | |
In Streamlet, a node signs/votes for a proposed block with the only | |
restriction being that it must extend one of the longest notarized chains it | |
has seen | |
Streamlet has an additional rule for finalization re: there must be 3 blocks | |
with consecutive epoch numbers in order to finalize -- all blocks prior to the | |
last of those three blocks is considered final. | |
The behavior described above re replacing a node's chain with a 'fresher' one | |
is not part of the Streamlet algorithm |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment