echo powr: fast and final consensus based on proof of

26
Echo PoWR: Fast and Final Consensus Based on Proof of Weighted Randomness [email protected] March 2019 WORKING DRAFT Abstract EchoRand is the consensus mechanism used by the Echo protocol to provide fast and final consensus on which set of transactions to append to a distributed ledger. By randomly selecting validators for each block rather than forcing every node to validate every block, EchoRand minimizes the resource requirements of running a node without compromising speed or security. 1 Introduction 1.1 Prior Work The ability to reach networkwide agreement about the next suitable set of transactions and adding them to the ledger (e.g. the blockchain) is a critical property of any distributed ledger. This property has important implications for the censorshipresistance and resiliency of the network, as an adversary who disrupts this consensus process can prevent any new economic activity from happening on the protocol. The task of determining which actor (or committee of actors) in a decentralized network have the right to propose new blocks for addition to the ledger has been addressed by different protocols: Proof of Work (PoW): The actors with the highest computational power compete for the ability to add blocks, resulting in massive realworld hardware and electricity requirements to participate in block generation ("mining"). Anyone can permissionlessly join or leave this competition by adding their computing power to the network. The network functions properly as long as 51% of computing power ("hash rate") is held by honest actors. Proof of Stake (PoS): Network actors can lock ("stake") some or all of their token balance as a security deposit in order to earn the right to

Upload: others

Post on 15-Apr-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Echo PoWR: Fast and Final Consensus Based on Proof of

Echo PoWR: Fast and Final ConsensusBased on Proof of Weighted

Randomness

 [email protected] 

March 2019 WORKING DRAFT

Abstract

EchoRand is  the consensus mechanism used by  the Echo protocol  toprovide  fast  and  final  consensus  on  which  set  of  transactions  toappend  to  a  distributed  ledger.  By  randomly  selecting  validators  foreach  block  rather  than  forcing  every  node  to  validate  every  block,EchoRand  minimizes  the  resource  requirements  of  running  a  nodewithout compromising speed or security.

1 Introduction

1.1 Prior Work

The  ability  to  reach  network­wide  agreement  about  the  next  suitable  set  oftransactions  and  adding  them  to  the  ledger  (e.g.  the  blockchain)  is  a  criticalproperty of any distributed ledger. This property has important implications forthe  censorship­resistance  and  resiliency of  the network,  as  an  adversary whodisrupts  this  consensus  process  can  prevent  any  new  economic  activity  fromhappening on the protocol. The task of determining which actor (or committeeof actors) in a decentralized network have the right to propose new blocks foraddition to the ledger has been addressed by different protocols:

Proof of Work (PoW): The actors with the highest computational powercompete  for  the  ability  to  add  blocks,  resulting  in  massive  real­worldhardware  and  electricity  requirements  to  participate  in  block  generation("mining"). Anyone can permissionlessly join or leave this competition byadding  their  computing  power  to  the  network.  The  network  functionsproperly  as  long  as  51%  of  computing  power  ("hash  rate")  is  held  byhonest actors.Proof of Stake  (PoS): Network actors can  lock  ("stake") some or all oftheir  token  balance  as  a  security  deposit  in  order  to  earn  the  right  to

Page 2: Echo PoWR: Fast and Final Consensus Based on Proof of

participate  in block production. Their participation  is proportional  to  thenumber  of  tokens  staked,  and  this  token  deposit  can  be  destroyed("slashed") if they are proven to harm the network. The network is secureas long as 51% of the locked currency is staked by honest actors.Delegated Proof of Stake (dPoS): A fixed­size committee of actors hasthe  ability  to  generate  and  verify  blocks.  Actors  can  only  join  thiscommittee by a vote of the entire network and votes are weighted by thenumber of tokens that each network actor holds. This model most clearlyparallels  a  representative  democracy,  where  elected  leaders  are  knownpublicly and are competing to offer the best service to the network so theywill continue to be elected. The security assumption is that at least 51% ofthe committee members elected by the network votes are honest actors.Proof of Weighted Randomness (PoWR): A small committee of blockproducers or block validators are chosen randomly from the entire set ofnetwork  actors. There  is  no  requirement  to  lock up or  "stake"  currency,add  computing  power,  or  earn  the  votes  of  other  users  ­  every  networkuser  is  eligible.  The  likelihood  of  being  randomly  selected  for  thecommittee  is  proportional  to  a  user's  balance of  tokens. This  committeeexists only for a single block, and a new committee  is  randomly chosenfor each new block of transactions. The network remains secure as long asat least 33% of tokens are held by honest actors.

The concept for the Echo PoWR algorithm is the Algorand v9 [1]  theoreticalwork,  a  Byzantine  agreement  protocol  proposed  by  Jing  Chen,  SergeyGorbunov,  Silvio  Micali,  and  Georgios  Vlachos.  Algorand  v9  describes  analgorithm for reaching consensus in a decentralized network by with Byzantinefault  tolerance.  EchoRand  combines  techniques  from  early  proof  of  stakeblockchains like Bitshares [2] as well as delegated proof of stake blockchainslike EOS [3] with the cryptographic sortition of projects like DFINITY [4] andAlgorand. EchoRand also introduces a novel incentive and delegation schemeto increase network security.

1.2 Design Goals

In designing any distributed consensus system, one of the biggest challenges isbalancing  transaction  throughput  with  centralization.  On  one  end  of  thespectrum, Bitcoin is limited to ~7 transactions per second in order to minimizethe resource requirements necessary to run a full validating node. On the otherend,  EOS  requires  21  elected  block  producers  to  maintain  extremelysophisticated hardware setups, getting high  transaction  throughput at  the costof increased centralization.

However,  this  tradeoff  between  centralization  and  throughput  is  notfundamental.  Blockchains  rely  on  the  assumption  that  a  majority  of  thenetwork is always honest. If that is the case, it follows that a random sample ofthe network should also consist mostly of honest nodes  (provided, of course,that the sample is large enough). That is the principle that Echo relies on.

Rather  than  forcing  every  node  to  verify  every  transaction,  Echo  selects  arandom set of validators for every block. As long as enough of the validatorsattest  that  the  block  is  valid,  every  other  node  on  the  network  can  accept  itwithout needing to conduct their own verification. This allows Echo to achieve

Page 3: Echo PoWR: Fast and Final Consensus Based on Proof of

high  throughput  without  requiring  each  individual  node  to  verify  everytransaction  like  Bitcoin  or  compute  every  virtual  machine  state  change  likeEthereum.

Echo  operates  with  a  different  trust  model  than  Delegated  Proof  of  Stakesystems, where only a limited set of selected actors can advance the network,thus bringing an undesired element of centralization and trust into the network.Instead, EchoRand allows for a greater degree of decentralization through theinvolvement  of  all  users  in  the  consensus  process,  produces  trust  throughverifiable randomness and delivers performance by limiting the proportion ofusers required for consensus in each round.

The major goal for creating the EchoRand consensus mechanism is to reducethe  amount  of  explicit  synchronization  needed  for  reaching  consensus  in  adistributed ledger. Other design goals include:

Maximizing  network  throughput  in  terms  of  number  of  transactions  persecond for fixed bandwidthMinimization  of  bandwidth  and  compute  resources  needed  for  theoptimization of network operationsDecentralization  ­  all  decisions  within  the  network  are  made  by  aconsensus of the network participantsHigh resistance to any malicious actions by any network actors, includingfailure to propagate messages and sending contradictory messagesFast finality, meaning that once a transaction has been successfully addedto a block, it cannot be revertedResistance to blockchain forks and reorganizations

Practical requirements, conditions, and goals:

Source code that is as simple and easy to audit as possibleIsolation of the consensus algorithm implementation from other aspects ofthe networkProgrammatic  separation  of  the Graded  Consensus  (GC)  and  BinaryByzantine  Agreement  (BBA)  steps,  to  allow  each  to  be  changed  orreplaced independently

2 Overview

In  EchoRand,  as  in  other  distributed  consensus  systems,  sets  of  networktransactions  are  organized  into  a  block,  which  is  logical  database  unit  forstoring  a  transaction  set  and  the  related  data  (e.g.  signatures),  that  can  beverified by external means.

EchoRand  is  based  on  the  concept  of  splitting  the  process  of  adding  a  newblock of transactions to the distributed ledger into separate parts and randomlyassigning each role to a set of nodes. A network node is a server running the echo_node   process  (with  a  local  configuration and database),  connected  toother Echo network nodes and running an instance of EchoRand consensus.

There are three distinct roles in EchoRand consensus:

Page 4: Echo PoWR: Fast and Final Consensus Based on Proof of

Producers  are  a  set  of  nodes  responsible  for  the  construction  of  a  newblock from unconfirmed transactions. Producers propose the next block tobe added to the distributed ledger.Verifiers are a set of nodes responsible for validating a block proposed bythe  producers  and  reaching  Byzantine  agreement  among  the  set  ofverifiers  about  which  proposed  block  to  add  to  the  distributed  ledger.There is a different set of verifiers for each consensus step.Acceptors are all other network nodes. They play a passive role, simplyaccepting an approved block signed by verifiers and appending the blockto their own local instance of the distributed ledger.

EchoRand  consensus  is  performed  in  rounds,  with  either  a  new  block  oftransactions or an empty block being appended  to  the distributed  ledger aftereach round. Each EchoRand round consists of three main steps:

1. Cryptographic Sortition2. Block Generation3. Best Block Voting and Application

2.1 Cryptographic Sortition

At each round, a new set of producers and verifiers is selected from all nodesin the network in such a way that:

The  distribution  of  roles  for  the  round  is  not  known  to  any  node  in  thenetwork before the round begins.The assignment of roles for the round can be computed independently byevery network node, without the need for any explicit communication ornetwork­wide coordination to occur.The  distribution  of  roles  for  any  future  round  cannot  be  predicted  inadvance by any network node.

To  accomplish  this  deterministic  yet  random  assignment  of  roles,  EchoRanduses  a  verifiable  random  function  (VRF)  [5],  which  is  a  pseudo­randomfunction  that  provides  publicly  verifiable  proofs  of  its  outputs'  correctness,originally  introduced  by  Micali,  Rabin,  and  Wadhan.  Using  a  VRF,  eachnetwork node can independently check if it  is assigned the role of a produceror  verifier  for  a  given  round  and  send  cryptographically  proof  of  thatassignment  to  other  network  nodes  along with  the  proposed  next  block  (forproducers) or signed next block (for verifiers).

The size of sets of producers and verifiers is globally­known and configurable.It  can  be  dynamically  adjusted  to  accomplish  the  best  trade­off  betweensecurity  and  performance.  As  a  safeguard  against  Sybil  attacks,  each  node'sprobability  of  becoming  a  verifier  or  a  producer  for  the  round  is  directlyproportional to that node's account balance.

Each  EchoRand  block  contains  a  set  of  proposed  transactions  and  arandomness  seed,  which  is  a  pseudo­random  value  that  changes  for  eachblock and round. This seed serves as the basis for generating the sets of blockproducers and verifiers using  the VRF. Every node  in  the network can verifythat seed was generated by a block producer in accordance with network rulesand thus it was not manipulated by the producer. However, there is no way to

Page 5: Echo PoWR: Fast and Final Consensus Based on Proof of

predict  what  seed  should  be  generated  by  each  producer  in  advance  ofreceiving that seed from the producer.

A  new  EchoRand  consensus  round  begins  after  a  node  receives  the  latestsigned block and its randomness seed from its peers. That seed is then used togenerate  secondary  random  numbers.  Using  the  same  publicly  knowndeterministic algorithm on every node of the network and the same seed as aninput  for  that  algorithm,  the  same  set  of  secondary  random  numbers  isindependently generated for each round by each node  in  the network withoutany  explicit  communication  between  nodes.  Each  node  in  the  EchoRandnetwork maintains  special  uniformly organized ordered map of  accounts  andtheir  balances.  Using  secondary  random  numbers  and  publicly  knownalgorithm,  each  node  in  the  network  can  independently  identify  the  set  ofproducers and verifiers for the round.

2.2 Block Generation

The distribution of roles for the round is performed before the set transactionsreceived  with  the  last  signed  block  are  applied  to  the  ledger  of  accountbalances. Therefore,  the block producer, who generates both the seed and theset of transactions, is unable to manipulate transactions in the proposed set toaffect  the  distribution  of  roles  for  the  next  round.  Similarly,  the  producer  isunable  to  manipulate  the  randomness  seed  for  the  next  round,  because  itsgeneration is verifiable by every node.

Once  each  node  computes  its  role  at  the  beginning  of  a  round,  the  set  ofproducers  compile  a  set  of  unconfirmed  transactions  into  a  newly  proposedblock  and  broadcast  it  to  their  peers  on  the  network,  along  with  a  newrandomness seed.

2.3 Best Block Voting and Application

The  set  of  verifiers  begin  listening  for  proposed  next  blocks  and  begin  theprocess  of  voting  for  the  best  block  using  a  2  stage Byzantine  fault  tolerant(BFT)  consensus  process. At  the  first  stage, Graded Consensus  (GC),  eachverifier announces their preliminary determination regarding the best block toappend  to  the  distributed  ledger  in  a  three­step  process.  The  second  stage,Binary  Byzantine  Agreement  (BBA),  Byzantine  consensus  is  reachedthrough the transfer of binary data between the verifiers and a reconciliation ofthe overall state of the network. At each step of each stage, the protocol selectsa new set of verifiers ­ accounts that must perform an action according to thestep  of  the  consensus.  The  selection  of  verifiers  is  similar  to  the  selectionprocess for block producers, using a VRF on input data from a previous block.After BBA  is  complete,  verifiers  sign  the  best  block  and  propagate  it  to  theEcho network, where acceptors verify  the  signatures by verifiers and appendthe block to their own local instance of the distributed ledger.

3 The EchoRand Mechanism

Page 6: Echo PoWR: Fast and Final Consensus Based on Proof of

3.1 Other Terms

Executor  ­  the  network  account  selected  in  the  step  of  the  round  forperforming a specific consensus actionLocal configuration  ­  a  certain  set of parameters accessible only  to  therunning network node.

Page 7: Echo PoWR: Fast and Final Consensus Based on Proof of

Base  (database)  ­  a  blockchain  with  a  certain  set  of  blocks,  possibly"lagging behind"  the  state of most other network nodes.  It  stores publicEDS keys of all the participants of the algorithm operation.Participant ­ a set of EdDSA private/public keys and an account balancewithin the Echo network. Basically, an Echo network user registered on aspecific network node. A user can be registered as a participant only on asingle  network  node  at  a  given  time.  One  network  node  permitsregistration of multiple participants.

3.2 Legend

Symbol Description

a message transmitted by a participating node to itspeers during a specific step

the EdDSA signature of 

the SHA­256 hash of 

the current round of the algorithm, which isequivalent to the number of blocks in the database

plus one. 

the current step number of the algorithm in the round. 

a block created in round  , which equals to {  , ,  ,  ,  ,  , 

,   }

the SHA­256 hash of 

the set of transactions contained in block 

the shared randomness seed of round 

the signature of a random vector of the   round

the signature of a block of the   round

the round   leader ­ determines  , creates and determines 

a   block certificate formed out of a set of bba_signature  messages

msg

sig(x) x

H(x) x

r

r >= 1

ss >= 1

B r

r r

IDproducer Q r H(B )r H(B )r−1 sig(B)PAY r CERT Br

H(B )r B r

PAY r B r

Q r r

sig(Q )r r

sig(B )r r

l(r)r PAY r B r

Q r

CERT r

B r

Page 8: Echo PoWR: Fast and Final Consensus Based on Proof of

Symbol Description

the ordered set of participants who act in step   ofround 

the ordered set of indexes of participants who are registered on the current node

and participate in step   of round 

an account identifier in the blockchain

an array of account identifiers selected as participantsin the step 

an array of   indexes which correspond to theidentifiers of users authorized on the current node in

the step 

the id of the producer who is the leader in this round

the context of the current round as an object whichcontains all received messages for the round

3.3 Parameters

The following algorithm parameters are set by constants, or configured at theecho_node startup and can potentially be adjusted within certain limits duringthe process of the algorithm operation.

Designation Description

"large" interval, the average time required to distribute a 1MB message across the network

"small" interval, the average time required to distribute a256­bit message across the network

the number of block producers in a round, used in thefunction 

the number of block verifiers in a round, used in thefunction 

V RF (r, s)s

r

V RFN(r, s)V RF (r, s)

s r

id

A ss

N s

A s

s

l

ctx

Λ

λ

N gV RF (r, 1)

N cV RF (r, s), s > 1

Page 9: Echo PoWR: Fast and Final Consensus Based on Proof of

Designation Description

the threshold for making a positive decision whenverifying, and can be selected by 

 ­ maximum number of algorithmsteps after which an empty new block is created

3.4 Cryptographic Primitives

[EdDSA][6]  ­  a  digital  signature  scheme  using  a  variant  of  Schnorrsignatures  as  a  deterministic  algorithm  for  creating  and  verifyingelectronic digital signatures

public key: 32 bytes (256 bits)private key: 32 bytes (256 bits)signature: 64 bytes (512 bits)

SHA­256[7] ­ a well known secure cryptographic hash algorithmhash: 32 bytes (256 bits)sequence function on a hashset ( std::less<hash_t, hash_t> )

VRF ­ verifiable random function

VRF

The concept of a verifiable random function (VRF) was introduced by Micali,Rabin,  and Vadhan. This  is  a  pseudo­random  function  that  provides  publiclyverifiable  evidence  for  the  correctness  of  its  conclusion.  For  a  given  inputvalue  ,  the  owner  of  the  secret  key    can  calculate  the  value  of  thefunction    and  the proof  . Using  the proof  and publickey  ,  everyone  can  verify  that  the  value  of    isindeed calculated correctly, but this information cannot be used to discover thesecret key.

The use of VRF in EchoRand is as follows: having a pseudo­random value for each round and the VRF function, each of the network nodes can determinethe list of   executors in   step of   round,and based on it, performthe  necessary  actions  if  the  authorized  account  on  the  node  is  part  of 

, and additionally verify whether the participants have the right toact at this step.

The function    returns a  list of participants of a given  length ofround    and  step  ,  which  is  the  same  for  all  the  nodes  in  the  network.  Itshould be noted that the function uses a fixed state of the blockchain databaseto calculate the participants' balances. In the general case, this function can usea  state  of  the  round  ,  where  .  To  calculate  thefunction, a random vector   from round   is required.

t h 0.69 ∗ N c

μ4 + 3 ∗ k, k > 0

x SK

y = F (x)SK P (x)SK

PK = gSK

y = F (x)SK

Q r

V RF (r, s) s r

V RF (r, s)

V RF (r, s)n

r s

max(0, r − k) k = 1Q r−k r − k

Page 10: Echo PoWR: Fast and Final Consensus Based on Proof of

Identification of Active Roles

The checked random function at each r round and s step is built iteratively, asfollows:

 

 

 

 

The result of this function is an array of random values:

A specific executor  is calculated from the   hash  in  such a way,that the probability of the choice of the participant as active, is proportional tohis balance in the system at the time of the   block.

The set   is an array of indexes that is different for each node ofthe network, and if  , then the user ID that is the executorfor the given round and step at the selected node is calculated using function 

.

In other words,   is a selection of participants from   who act ona particular node, round, and step.

At  the same round and step but on different network nodes of  the algorithm,the    selections will  be  different, while  the    selection will  bethe same.

Generation of Randomness Seed

The  starting  seed    is  selected  randomly  at  blockchain  databaseinitialization.

V RF (r, s) =0 H(Q , r, s)r−1

V RF (r, s) =1 H(V RF (r, s))0

V RF (r, s) =2 H(V RF (r, s))1

...

V RF (r, s) =n H(V RF (r, s))n−1

V RF (r, s) = [V RF (r, s),V RF (r, s), ...]0 1

V RF (r, s)i

r − 2

V RFN(r, s)i ∈ V RFN(r, s)

V RF (r, s)i

V RFN V RF

V RFN V RF

Q 0

Page 11: Echo PoWR: Fast and Final Consensus Based on Proof of

Then, at  the creation of a new block  in  round    the    vector  is  calculated.For a non­empty block  :

In  this  case,  the  signature  is  generated  using  the  EdDSA  private  key  of  theproducer that created the block. In case   block is empty:

Generating a Random Value During BBA Steps

At each step of the BBA algorithm, all network nodes сan be divided into twosets:

nodes  that  have  received  a  sufficient  number  of  messages  during  theprevious round(s) from their peers (with a certain equal value), allowingthem to be certain about the value that will be chosen by the networknodes  that  have  received  a  significant  number  of  messages  with  twosolution  variants,  meaning  the  nodes  are  uncertain  about  the  value  thatwill be chosen by the network

In the latter case, all uncertain nodes use a   to generate a shared randomvalue  from  the set  {0, 1}   for  deciding  between  the  two  valid  alternativesand relay their decision to the rest of the network. Since the random value willbe the same for all uncertain nodes, each will arrive at the same decision.

A random value for uncertain nodes is generated according to the formula:

Where   is the least significant bit.

3.6 Step 1 ­ Block Generation

For each block, a new list of possible producers is determined with the help ofa  verifiable  random  function    as  described  above.  As  a  result,each network node receives a   set and a   subset ­a list of accounts authorized at this node. If   is not empty, thenode  issues  a  block  proposal  based  on  the  transactions  that  are  in  the  nodemempool.

Since  all  input  data  for  the VRF  is  already  included  in  the  previous  blocks,each node in the network determines the list of producers independently, and itis the same for everyone (deterministic).

The mechanism  is  as  follows:  for  block    from  round  ,  we  have  a  hash , which  is  the  result  of  the producer's  signature    of

the previous block hash. Since the producer can’t manipulate the result of the

r Q r

B r

Q =r H(sig(Q ), r)r−1

B r

Q =r H(Q , r)r−1

V RF

BBA_RAND(s) = lsb {SHA256(Q , r)}r−1

lsb

V RF (r, s)V RF (r, s) V RFN(r, s)

V RFN(r, s)

B r

H(B )r sig(H(B ))r−1

Page 12: Echo PoWR: Fast and Final Consensus Based on Proof of

hash  function  (as  the  data  that  is  hashed  and  the  private  key  are  strictlydefined),  and  the  hashing  is  checked  using  the  producer's  public  key,  wereceive a new pseudo­random number in each block. This number (hash) fromthe block   is used as a random index to select the first producer on the listto generate a block. The index of this producer is used to get the next produceron  the  list,  etc.  until  a  complete  list  of  those  who  will  generate  a  block  iscreated.

Each network node generates a list of producers for the current block and if theauthorized account on the node is a member of the list, it generates and sends ablock to the network using the following mechanism:

Input Data

 from ,   from the context of the round

Start

Right after determining 

Steps

1. Verification:1. If  , complete the step2. Select participant  index with   as a creator of  this blockon the node

3. Get actual ID of the the participant in the blockchain: 4. Through   get all the private keys of a participant

2. Block assembly:1. If  all  the  previous  blocks    where    areavailable, build 

2. If at least one of the previous blocks is unavailable, build 

3. If  , create a new block 

3. Communication, generation, signature and a simultaneous broadcast:1. Sign  with  the  key    and  send  message   gc_block   =  { 

 }2. Sign  with  the  key    and  send   gc_signature   =  { 

 }

3.9 Graded Consensus (GC)

This stage consists of  three steps. At  this stage,  the goal of  the verifiers  is  tovote and announce to the network which of the potential next blocks broadcast

B r

H(B )r−1 CERT r−1

A 1 N 1

CERT r−1

N =1 ∅n = N [0]1

id =1 A [n]1

id 1

B k k = 1, 2, 3, ..., r − 1PAY r

PAY =r

∅PAY  ! =r ∅ B  =  r

 r,  PAY ,  Q ,  sig(Q ),  H(B ) r r−1 r−1 r−1

id 1

r, id ,B , sig(B )1 r r

id 1

r, id , sig(Q ),H(B )1 r−1 r

Page 13: Echo PoWR: Fast and Final Consensus Based on Proof of

by producers they consider to be the best candidate for addition to the network.     

Step 2 ­ Voting

Each  of  the  selected  verifiers  tells  the  network  which  of  the  blocks  theyconsider preferable for the current round.

Input Data

,   from ,  ,   from the context of the round

 is a local structure of a step that stores the hash of the block and the ID of theproducer  which  created  the  block.  The  empty  set  symbol  assigned  to  theelements   means "empty block" and "unknown leader". In the application, itcan be a predefined constant or a separate flag in the data structure.

Start

Right after determining 

Steps

1. Timer: schedule the timer after the time equal to  , by a trigger:1. To  define  ,  as    from  the  received  messages  in    with  aminimum index of 

2. If the local cache for   has the block 1. 

H(B )r−1 Q r−1 CERT r−1

A 1 A 2 N 2

v

v

CERT r−1

2 ∗ λ

l id ctx[id]A 1

l B r

v  =  

Page 14: Echo PoWR: Fast and Final Consensus Based on Proof of

2. Go to Communication2. Timer: schedule the timer after the time equal to  , by a trigger:

1. 

2. go to Communication3. Network: subscribe to network messages  gc_block ,   gc_signature at the start of a step1. After receiving a message  gc_block  of the round 

1. Verify the round number in the message2. Verify the message step equals 13. Verify that   and get the user's public key4. Verify the signature of the whole message5. Verify that msg.block is correct

1. Verify the block's round for equality to the current2. Verify 3. Verify    from  the  block,  if  it  already  has  the gc_signature 

4. Verify the block signature using producer­id of the block5. Verify   from the block for equality  to  the  localone from 

6. Verify the correctness of   in the block6. If   already exists

1. Verify 7. If it does not exist, save msg.id, msg.block in the context of theround:1. 2. 

8. If   and   are installed:1. 

2. Go to Communication2. After receiving a message  gc_signature  of the round 

1. Verify the round number in the message2. Verify that   and get the user's public key3. Verify the signature of the whole message4.  :  verify msg.rand  for  equality  to  thelocal one from 

5.  : verify the signature msg.rand using from 

6. Save    in  the  context  of  the  round  if  it’s  notsaved yet:1. 

 ctx[l].HB,  l 

λ + Λv  ==   ∅,  ∅ 

r

msg.id ∈ A 1

ID ∈producer A 1

Q r

H(B )r−1

CERT r−1

PAY r

ctx[msg.id]ctx[msg.id].HB == H(msg.block)

ctx[msg.id].B = msg.blockctx[msg.id].HB = H(msg.block)

l l == id

v  =   ctx[l].HB,  l 

r

msg.id ∈ A 1

msg.block ash =h ∅CERT r−1

msg.block ash ! =h ∅Q r−1 CERT r−1

msg.id => ∅

ctx[msg.id].B = ∅

Page 15: Echo PoWR: Fast and Final Consensus Based on Proof of

2. 3. 

4. Communication: generating, signing and sending of messages1. Stop timers, do not unsubscribe from network messages2. If  , end the step3.  :

1. Get real user’s ID in the blockchain: 2. Sign with the key   and send

1. if  :  gc_proposal  =

2. if  :  gc_proposal  =

Step 3 ­ Vote Counting

Based  on  the messages  received  from  other  verifiers  in  step  1,  each  verifiertallies the votes to determine which of the potential blocks got the most votesand announces the results of their count to the entire network.

Input Data

,  ,   from the context of the round

Start

Right after determining 

Steps

1. Timer:  schedule  the  timer  after  the  time  equal  to  ,  by  atrigger:1. 

2. Go to Communication2. Network: subscribe to network messages  gc_proposal  at the start of astep, after receiving1. Verify the round number and the step number in the message2. Verify that   and get the user's public key3. Verify the signature of the whole message4. Verify that 

 is in the context of the round. It should be collected in the context in the previous step, as a resultof  gc_block  and  gc_signature  message processing.1.    ­  a  record  for  such  a  potential  leaderexists in the context

ctx[msg.id].HB = msg.block ashh

ctx[msg.id].rand = msg.rand

N =2 ∅∀n ∈2 N 2

id =2 A [n ]2 2

id 2

v ! = ∅ r, 2, id , v 2

v == ∅ r, 2, id , ∅ 2

A 2 A 3 N 3

CERT r−1

3 ∗ λ + Λ

v == ∅, ∅ 

msg.id ∈ A 2

msg.v = msg.block ash,msg.leader h

∃ ctx[msg.leader]

Page 16: Echo PoWR: Fast and Final Consensus Based on Proof of

2.   ­ the blockhash coincides

5.  ,  where    is  anunordered_set

6. If  the  counter  is  more  than  the  threshold  : 

1. 

2. Go to Communication3. Communication: generating, signing and sending of messages

1. Stop timers, unsubscribe from network messages2. If  , end the step3.  :

1. Get real user’s ID in the blockchain: 2. Sign  with  the  user’s  key    and  send   gc_proposal   =  { 

 }

Step 4 ­ Primary evaluation of the vote count

After receiving the voting results of the previous steps, all nodes know whetherthe verifiers were able to agree on the choice of the best block for the currentround. Each verifier creates a message  including  information on  the outcome(whether  an  agreement  was  reached  or  not)  and  the  details  of  the  blockagreement and broadcasts this message to the network.

After this step, all nodes in the network have a preliminary idea of whether thebest  block  has  been  determined  or  not.  In  an  honest  network,  this would  beenough to complete the round and append the block to the existing ledger. Butsince we allow the possibility of unscrupulous participants, the network needsan additional step to verify the data. This is the objective of the next stage.

Input Data

,  ,   from the context of the round

Start

Immediately after completing step 3.

Steps

1. Timer: schedule the timer after the time equal to 2 * λ, by a trigger:1. if 

1. otherwise: 

2. 

ctx[msg.leader].HB == msg.block ashh

ctx[msg.leader].v3.push(msg.id) v3

t h

ctx[msg.leader].v3.size() > t h

v = msg.block ash,msg.leader h

N =3 ∅∀n ∈3 N 3

id =3 A [n ]3 3

id 3

r, 3, id , v3

A 3 A 4 N 4

∃l ∣ ctx[l].v4.size()  >  t /2 :  h v  =   ctx[l].HB,  l 

v  =   ∅,  ∅ 

b = 1

Page 17: Echo PoWR: Fast and Final Consensus Based on Proof of

3. Go to Communication2. Network: subscribe to network messages  gc_proposal  at the start of astep, after receiving1. Verify the round number and the step number in the message2. Verify that   and get the user's public key3. Verify the signature of the whole message4.   = {   }5. 

: verify that   is in the context of the round (should becollected in step 2)1.    ­  a  record  for  such  a  potential  leaderexists in the context

2.   ­  the blockhash coincides

3.  ,    is  anunordered_set

4. if 1. 

 , 2. Go to Communication

6. 

1.  ,    is  an  unordered_set  (valueempty)

2. if 1. 

, 2. Go to Communication

3. Communication: generating, signing and sending of messages1. Stop timers, unsubscribe from network messages2. If  , end the step3.  :

1. Get real user’s ID in the blockchain: 2. Sign with  the user’s key   and send  bba_signature   =  { 

 }

3.13 Binary Byzantine Agreement (BBA)

At each  step of  the algorithm work,  all nodes  in  the network can be dividedinto two groups:

1. Nodes that have received a sufficient number of messages in the previousrounds  with  identical  values,  allowing  them  to  settle  on  this  messagevalue as the correct one.

id  ∈  A{3}

msg.v msg.block ash,msg.leaderh

msg.v ! =   ∅,  ∅  msg.v

∃ ctx[msg.leader]

ctx[msg.leader].HB == msg.block ashh

ctx[msg.leader].v4.push(msg.id) v4

ctx[msg.leader].v4.size()  >  t h

v  =   msg.block ash,  msg.leader h b  =  0

msg.v  ==   ∅,  ∅ 

ctx.ve4.push(msg.id) ve4

ctx.ve4.size()  >  t h

v  =   ∅,  ∅  b = 1

N  =  4 ∅∀ n  ∈  4 N 4

id  =  4 A [n ]4 4

id 4

r, 4, id_4, b, v, sig(0, v)

Page 18: Echo PoWR: Fast and Final Consensus Based on Proof of

2. Nodes that have received messages with two different solutions which areunable to determine which is correct ("unsure" nodes).

In  the  latter  case,  undecided  nodes  again  use  a  VRF  to  generate  a  sharedrandom  number  from  the  set  of  {0,  1}  (e.g.  a  coin  flip)  to make  a  decisionabout which message to apply. Since the random number will be the same forall  “unsure”  nodes,  all  these  nodes  will  reach  the  same  decision  on  theoutcome.

The stage consists of rounds, which include 3 steps each. At each step  in  thecycle, a new set of verifiers chosen by VRF sends  their determination of  thevoting result in binary form. If, as a result of the round, 2/3rds + 1 (~67%) ofverifiers agree on the outcome, the block is considered valid and appended tothe chain. If consensus is not met, a new round begins.

If over 4 rounds (which involves 4 rounds x 3 verifiers = 12 unique, randomsets of verifiers) the network is unable to come to consensus about which blockto  add,  an  empty  block  is  applied  by  the  network  and  the  entire  consensusmechanism begins again  from the very  first  step  ­ cryptographic sortition  fornew block producers.

3.14 Block application by the network participants

All network nodes receive all messages sent by producers and verifiers at allstages  of  the  consensus.  All  the  network  nodes  perform  the  round  steps.Messages  are  sent  to  the  network  only  by  the  nodes  that  have  already  beenselected for participation at a given step using the   algorithm.

Accordingly,  each  node  individually  determines  when  consensus  has  beenreached on the next block and understands which block to apply and add to itsown local copy of the distributed ledger. Thus, all the network nodes reach theend of the round at one of the stages of the BBA algorithm and get a formed 

.  Therefore,  a  final  message  with  the  resulting  information  isn’tbroadcast by any node, as each node has already determined this  informationindependently.

If the value  , then the block is received. If the value  , then:

 means that an empty block has been created.  means  that  a  non­empty  block  has  been

created and the node has not received it.

4 Network Communication

4.1 Message Format

Each message broadcast by nodes is entirely signed with the EdDSA key of theparticipant  who  creates  the  message,  i.e  there  is  always  a

V RFN(r, s)

CERT r

ctx[l].B! = ∅ctx[l].B == ∅

ctx[l].signQ == Q r−1

ctx[l].signQ! = Q r−1

Page 19: Echo PoWR: Fast and Final Consensus Based on Proof of

 message_signature  field included with a broadcast message.

Separate fields or groups of fields are also signed with an EdDSA key of  theparticipant who creates the message.

Such a "double" signature is essential, since the signatures of certain groups offields  are  later  used  in  VRF  to  generate  a  random  round  value,  and  in  thesignature set  .

1. Candidate Block:  gc_block 

This message is sent in step 1 by producers to propose a newly created blockwith a non­empty set of transactions for addition to the distributed ledger.

Field Description

round the current round

step the current step

id the ID of the participant who created the block

signaturethe signature of the message with the participant’s key

corresponding to the id

blocka valid block containing the current round, the participant's

ID, the block signature, etc.

2. Random Value Signature:  gc_signature 

This message  is  sent  during  step 1  if  there  is  at  least  one  participant  for  thenode for this step.

Field Description

round the current round

step the current step

id the ID of the participant who created the block

signaturethe signature of the message with the participant’s

key id

rand, the signature of a previous randomnessseed with the participant’s key id

CERT r

sig(Q )r

Page 20: Echo PoWR: Fast and Final Consensus Based on Proof of

Field Description

block_hash the new block hash

prev_rand, the signature of the randomness seedfrom the previous block

prev_block_hash the previous block hash

3. Selection of a Leader and a Block:  gc_proposal 

This message is sent during step 2 and step 3 if there is at least one participantfor the node for this step.

Field Description

round the current round

step the current step

id the ID of the participant who created the block

signature the signature of the message with the participant’s key id

block_hash the selected block hash

leader the ID of a selected leader who created the block

4. BBA Consensus Result:  bba_signature 

This message is sent during step 4 and all the subsequent steps of the algorithmif there is at least one participant for the node for this step.

Field Description

round the current round

step the current step

id the ID of the participant who created the message

value the result of the BBA algorithm, either 0 or 1

block_hash the selected block hash

leader the ID of a selected leader, who created the block

sig(Q )r

Page 21: Echo PoWR: Fast and Final Consensus Based on Proof of

Field Description

_bba_signthe signature for the fields round, step, value,block_hash, leader with the participant’s key id

signaturethe signature for the fields value, block_hash, leader

with the participant’s key id

4.6 Message Processing

Network message processing begun in step 2 does not stop at the completion ofthe step but continues until the completion of the round.

Network message processing for steps BBA (s = 5, ...) is practically the sameand  does  not  depend  on  the  step  number.  For  these  steps,  the  messagingprocess differs based on a subsequent analysis of  the  internal counters of  theround.  Consequently,  network  processing  for  these  steps  can  be  effectivelyimplemented in the base class.

4.7 Messages Distribution via Gossip

Each node always forwards the first  gc_block  message received to its peers,followed by a  gc_signature  by that node.

For  each  subsequent   gc_block   messages  received  (along  with  a gc_signature ), the node checks the participant id included. This message isonly  forwarded  by  the  if  the  id  of  the  participant  in  this  message  has  thesmallest  index  in  array  ,  among  all  the  gc_block   messages  alreadyreceived by  the node.  In  this way, a candidate  is chosen among many blocksproposed by producers.

The rest of the round messages are processed and forwarded to peers by a nodeonly in the case that:

The node is receiving the message for the first timeThe message passes all the verification steps

4.8 Network Protocol Optimization

To reduce the number of messages with information about the proposed block,the following optimizations are implemented in the protocol:

If the network node receives a block proposal that is not the first for theround and is not better than the previous one, the node does not pass thismessage and block proposal to its peers.If several participants are authorized on the node for the block generationround, the node itself determines which of the blocks is the best candidateand sends a block proposal only for the best block.

A step

Page 22: Echo PoWR: Fast and Final Consensus Based on Proof of

4.9 Exceptional Situations

Fork Prioritization

The number of steps of the algorithm and dependence on the state of the wholeaccount database makes the possibility of forks unlikely. However, EchoRandstill  has  a  mechanism  for  choosing  between  diverging  chains.  The  forkselection takes place according to one of the following scenarios:

1. To  switch  to  the  longest  chain  (with  the  highest  number  of  completedrounds) in the presence of several chains.

2. If there is more than one long chain, to follow the one, in which the lastblock is not empty. If all of them have empty blocks in the end, to checkthe  second  and  subsequent  blocks  from  the  end  to  the  first  non­emptyblock.

3. If there is more than one long chain with non­empty blocks at the end of a­length  chain,  to  follow  the one  in which  the    block has  the  smallest

hash value.

This process is based on algorand­v9 (9. Handling Forks, page 70).

Network Unreachable

In  the  case  a  node  is  not  able  to  communicate with  peers  or  stops  receivingmessage broadcast, the node's internal state of the current round and step willonly advance when the timer is triggered.

Since  the  conclusion  of  the  current  round  at  the  moment  occurs  only  uponreceiving  a  successful  BBA  message  from  peers,  the  node  will  continueexecuting the BBA steps in a loop until reaching the μ constant. As a result, anempty block will be generated.

Network Restored

Nodes that receive messages only from the middle of a consensus round, as aresult of an interrupted network connection, will possess incomplete data aboutthe context and progress of the round. As a consequence, they will reach eitheran incorrect evaluation for the best block or vote for an empty block.

In either case, the node will act as if it was a malicious node, passing incorrectinformation  to  the network. Consequently,  the  information coming from suchnodes will  be  filtered by  the BBA  algorithm. Once  the node  realizes  that  itsview of the ledger is inconsistent with the rest of network, a reconciliation willoccur automatically, when the rest of the network goes forwards in the processof generating new blocks.

Incomplete Local Block Database

The  scenario  occurs  when  the  local  database  of  the  node  is  syncing  orreconciling  with  the  global  distributed  ledger.  During  this  sync  process,  the

r r

Page 23: Echo PoWR: Fast and Final Consensus Based on Proof of

node cannot participate in the consensus algorithm due to the fact that it lacksknowledge of the values:

, the hash of the last created block, the randomness seed of the last round of the algorithm

The syncing node must determine the moment when its local database will bein  sync  with  the  rest  of  the  network  and  begin  the  steps  of  the  consensusalgorithm at that time.

Block Producer Influence on VRF

Account balances  formed as a  result of  the    round will be used  in  the VRFonly  when  assigning  a  set  of  producers  and  verifiers  for  the  round  .However,  the  randomness  seed  for  the  round   will  be  affected  by  theoutcome of the round  .

So since the producer cannot predict the seed that will be received as a result ofthe  round  ,  he  cannot  predict  how  the  choice  of  performers  will  beaffected by manipulating account balances on the   round.

Insufficient Node Participation

Given  that each network node must  independently use  the VRF to determinetheir role in each consensus round, the distribution of roles does not depend onthe availability or actual participation of each node. The VRF distributes rolesbased on  the entire set of network nodes and  registered accounts, not merelythe active ones. Because of this, there exists the possibility that for some stepof the consensus algorithm, none of the nodes selected for that role are onlineor available.

In  this case,  the  timeout  threshold will be  reached  for  that  step of  the  round,and the active nodes will simply proceed to the next step or append an emptyblock  to  the  ledger  (in  case  this  occurs  at  the  final  step),  triggering  thedistribution of a new set of roles.

Network simulations suggest that:

When  70%  of  accounts  are  active,  the  network  generates  4%  emptyblocks and a 5.5s efficient block generation timeWhen  65%  of  accounts  are  active,  the  network  generates  16%  emptyblocks and a 14s efficient block generation timeWhen  60%  of  accounts  are  active,  the  network  generates  30%  emptyblocks and a 32s efficient block generation timeWhen 50%  of  accounts  are  active,  the  network  generates  70%+  emptyblocks and a 120s+ efficient block generation time

Delegating Consensus Participation

H(B )r−1

Q r−1

r

r + 2r + 2

r + 1

r + 1r

Page 24: Echo PoWR: Fast and Final Consensus Based on Proof of

Given that a high participation rate in the consensus mechanism (through blockproduction  and  verification)  is  important  in  order  to  maintain  maximumnetwork  throughput  and  avoid  the  generation  of  empty  blocks,  the  protocolprovides two levels of delegating this participation.

Level One ­ Explicit Delegation

Account  A  can designate for itself a trusted account  B  with a running nodeon  the  network  and  thus  provide  account   B   with  the  opportunity  to  issueconsensus  messages  at  the  moment  when  account   A   was  selected  toparticipate  in  some  step.  In  this  case,  the message  from  account  B   will  beconsidered  only  if  the  node  did  not  receive  the  message  from  the  originalverifier, i.e. from account  A .

By default, the trusted account  B  for the account  A  becomes the account thatregistered the account  B . This delegation mechanism is accomplished throughthe use of a specific delegation key that account  A  can provide to account  B to authorize it to participate on the behalf of  A .

Second Level ­ Automatic Delegation for Offline Nodes

The  protocol  provides  a  second,  fallback  level  of  delegators  who  areauthorized to participate in consensus on behalf of account  A  in the case that A  or another account that  A  has delegated to is offline or non­responsive.

Through  this mechanism, at each step of  the consensus  for each verifier  (butnot block producers), a fallback delegate is determined from the list of activecommittee members. As a result, each of the active members of the committeereceives its set of accounts delegated to him at a particular step of consensus.The  important  criteria  for  these  delegates  is  that  the  messages  from  thecommittee member  (on  behalf  of  account  A )  is  considered  when  countingvotes  only  if  during  the  full  time  interval  allocated  for  the  current  step,  thenode has not received any messages from the verifier selected for the round  A or from his explicit delegate  B .

The committee member corresponding to the   account at step round   is determined by the following formula:

where   is the number of active committee members.

5 Security and Performance

Because  the  selection  of  block  producers  and  verifiers  is  weighted  by  theaccounts  balance, EchoRand  transforms  the  typical Byzantine  fault  tolerancerequirement of 2/3rd of honest nodes to a more Sybil­resistant requirement that2/3rds of balances are held by honest nodes. This assumption is also improvedbecause the nodes with the highest balances have the most "skin in the game",and thus the most economic value to lose of the network is attacked. As long as2/3rds  of  balances  are  held  by  honest  nodes  participating  in  consensus,  thenetwork will run at maximum performance, with no loss of capacity.

V RF (r, s)n s

r

C =n ceil{ n ∗ K/N  }c

K

Page 25: Echo PoWR: Fast and Final Consensus Based on Proof of

In  the  case  that  less  than  2/3rds  of  balances  are  held  by  honest  usersparticipating  in  consensus,  the  network  will  begin  to  suffer  from  degradedperformance  in  the  form of  empty  blocks  being  added  to  the  ledger. As  thishonest participation rate declines from 67% to 33%, the statistical probabilityof empty blocks being added to the ledger increases linearly from 0 to 100%.

With  more  than  67%  of  tokens  held  by  an  attacker,  the  attacker  couldcontinually  disrupt  the  consensus  mechanism  and  prevent  new  blocks  frombeing  added  to  the  ledger  or  censor  transactions,  just  as  an  attacking minerwith 51% of the total hash rate in a proof of work­based currency.

6 Incentives

EchoRand  introduced  a  formal  incentive  scheme  to  reward  accounts  forparticipating  in  the  consensus  process  either  by  running  an  active  node  ordelegating to another active node. This incentive scheme is designed to balancethe optimal  security  and performance of EchoRand network by  incentivizingmore accounts to participate in consensus whenever performance drops belowoptimal levels while maintaining adequate security and decentralization.

Under  this  incentive mechanism,  the block producers which generate a blockwhich  is  successfully  added  to  the  ledger  are  reward  with  some  newlygenerated  balance,  similar  to  a  block  reward  in  Bitcoin.  Additionally,  allverifiers who participated in the voting and validation process of a successfulblock are also rewarded with a smaller balance. In the case that an empty blockis added to the network, no nodes receive a block reward.

When  the  network  begins  to  generate  empty  blocks  due  to  a  failure  ofconsensus  (whether  because  of  an  attacker  or  through  low  participation  inconsensus  by  honest  users),  the  protocol  increases  the  block  reward  throughinflation in order to incentivize more rational users to participate in consensus.When the performance returns to the acceptable threshold, the block reward isdecreased over time until it returns to the minimum inflation rate. Research isongoing into the idea rate of change and limits for the inflation rate.

7 Conclusion

EchoRand  is  the consensus mechanism used by  the Echo protocol  to providefast  and  final  consensus.  In  EchoRand  consensus,  every  account  isautomatically  able  to  participate  in  the  block  production  and  validationprocess, either by running a node or delegating to an existing node. Each newblock of  transactions  is generated by a committee  randomly chosen  from  theset  of  all  network  accounts.  There  is  no  requirement  to  lock  up  or  "stake"currency,  add  computing  power,  or  earn  the  votes  of  other  users  ­  everynetwork user is eligible. However, the task of securely choosing this committeeout  of  the  pool  of  all  users  would  typically  require  a  large  coordination,communication,  or  computation overhead  for  the network.  In  addition, whenthis  committee  of  block  producers  is  announced  by  the  network,  the  chosenactors could become the subject of bribe or DDoS attacks.

By randomly selecting validators for each block rather than forcing every nodeto  validate  every  block,  EchoRand  minimizes  the  resource  requirements  ofrunning a node without compromising speed or security.

Page 26: Echo PoWR: Fast and Final Consensus Based on Proof of

1. Silvio  Micali  and  Jing  Chen.  Algorand.  Jul.  2016.  URL:https://arxiv.org/abs/1607.01341v9. 

2. Daniel  Larimer  and  Fabian  Schuh.  Bitshares  2.0:  Financial  SmartContract  Platform.  URL:  https://whitepaperdatabase.com/bitshares­bts­whitepaper/. 

3. Block.One.  EOS.IO  Technical  White  Paper  v2.  URL:https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md. 

4. Timo  Hanke,  Mahnush  Movahedi  and  Dominic  Williams.  DFINITYTechnology  Overview  Series  Consensus  System.  URL:https://dfinity.org/pdf­viewer/pdfs/viewer?file=../library/dfinity­consensus.pdf. 

5. Silvio Micali, Michael O. Rabin, and Salil P. Vadhan. Verifiable  randomfunctions.  1999.  Proceedings  of  the  40th  IEEE  Symposium  onFoundations of Computer Science. 

6. Daniel  Bernstein, Niels Duif,  Tanja  Lange,  Peter  Schwabe,  and Bo­YinYang.  High­speed  high­security  signatures".  2012.  Journal  ofCryptographic Engineering. 

7. Descriptions  of  SHA­256,  SHA­384,  and  SHA­512  from  NIST.  URL:https://web.archive.org/web/20130526224224/http://csrc.nist.gov/groups/STM/cavp/documents/shs/sha256­384­512.pdf