7.1.3 Reduction Phase The Reduction phase utilized in SBA to reach agreement on a single candidate block to be nalized, is based on [TA84], which reduces the multivariable inputs to a single variable output before proceeding to Binary Agreement. However, unlike BBA(cid:70) [Mic17], the Turpin and Coan algorithm is not utilized as a reduction function for the Binary Agreement protocol. Reduction phase is a two-step phase dened as: Function F Reduction F Reduction(stakei, skBLS, candidateBlocki): 1. Start timer for step step, i.e. timerround,step StartTimer(REDUCTION) 2. If stakei.pkBLS Provisioners, 3. If stakei.heligibility round < stakei.hexpiration. 4. If stakei.pkBLS committeeround,step, where committeeround,step DeterministicSortition(), 5. F Propagate(BLS, pkBLS, round, step, Hblake2b(candidateBlocki)), BLS S BLS(Hblake2b(candidateBlocki)||round||step, skBLS),
id: f86d44a79584f8b238f6bb35d60f7263 - page: 18
If votethreshold messages for a single any candidate block candidateBlock are received before the expiration of timerround,step set candidateBlocki candidateBlock, otherwise set candidateBlocki , 7. Start step StartTimer(REDUCTION), timer for step + 1, i.e.
id: 14681b4aa828e00fa2f79650acdbe0e9 - page: 18
If stakei.pkBLS committeeround,step + 1, where committeeround,step + 1 DeterministicSortition(), 9. F Propagate(BLS, pkBLS, round, step + 1, Hblake2b(candidateBlocki)), 10. If votethreshold messages for any single candidate block candidateBlock are received before the expiration of timerround,step+1 set return candidateBlock, otherwise return candidateBlock . where StartTimer() is a function responsible for the instantiation of a timer for a corresponding step, committeeround,step is a set comprised of Provisioner public keys pkBLS who have been extracted into a committee for round and step, DeterministicSortition() is a function responsible for the extraction of committee members for round and step and votethreshold is a threshold of committee votes required to reach a quorum for round and step. 18
id: 4629f5ad770990a78836700b52c3fc83 - page: 18
7.1.4 Agreement Phase Agreement is an asynchronous phase running in parallel with the main consensus loop. Successful termination of the phase indicates that a candidate block for round round has been nalized. Agreement phase is dened as: Function F Agreement F Agreement(): 1. If votethreshold messages for any single candidate block candidateBlock are received for step step (if step mod 4 = 0), then return candidateBlock 7.1.5 Main Consensus Loop The main loop for SBA is dened as: where StartThread() is a function responAlgorithm 1 Main Consensus Loop 1: chain = Chain 2: round = 1 3: while do 4: 5: 6: 7: step = 1 thread = StartThread(F Agreement) while Running(thread) do timerround,step = StartTimer(GENERATION) F Generation(bidi, v, b, secret) if a valid candidateBlock is collected before the expiration of 8: 9: timerround,step then 10: 11: candidateBlocki = candidateBlock else 12: 13: 14: 15: 16: 17:
id: 5fc3283e91c9c984265475d9467de434 - page: 19