Protocol Overview. The basic protocol operates in two phases, after which a pos- sible decision is taken. Each process maintains an estimate. In the first phase, each process broadcasts its estimate using a reliable broadcast service, bv-broadcast (discussed below), as introduced previously [1]. The protocol uses a rotating coordinator; whoever is the assigned coordinator for a round broadcasts its estimate with a special designation. All processes then wait until they receive at least one message, and until a timer expires. (The timeout is increased with each iteration, so that eventually once the network stabilizes it is long enough.) If a process receives a message from the coordinator, then it chooses the coordinatorβs value to βechoβ, i.e., to rebroadcast to everyone in the second phase. Otherwise, it simply echoes all the messages received in the first phase. At this point, each process ππ waits until it receives enough β β β compatible ECHO messages. Specifically, it waits to receive at least (π π‘0) messages sent by distinct processes where every value in those messages was also received by ππ in the first phase. In this case, it adopts the collection of values in those (π π‘0) messages as its candidate set. In fact, if a process ππ receives a set of (π π‘0) messages that all contain exactly the coordinatorβs value, then it chooses only that value as the candidate value. ππ has only one candidate value π£, then ππ adopts that value π£ as its estimate. In that case, it can decide π£ if it matches the parity of the round, i.e., if π£ = ππ mod 2. Otherwise, if ππ has more than one candidate value, then it adopts as its estimate ππ mod 2, the parity of the round. / β β + To see that this ensures agreement (when π‘ < π 3), con- sider a round in which some process ππ decides value π£ = ππ mod 2. Since ππ receives (π π‘0) echo messages containing only the value π£, we know that every honest process must have value π£ in every possible set of (π π‘0) echo messages, and hence every honest process included π£ in its candidate set. Every honest process that only had π£ as a candidate also decided π£. The remaining honest processes must have adopted π£ = ππ mod 2 as their estimate when they adopted the parity bit of the round. And if all the honest processes begin a round π with estimate π£, then that is the only possible decision due to the reliable broadcast bv-broadcast in Phase 1 (see below) and all honest processes decide at round π 2 or earlier (regardless of whether ππΊππ is reached). / Processes always continue to make progress, if π‘ < π 3. Termination is a consequence of the coordinator: eventually, after GST when the network stabilizes, there is a round where the coordinator is honest and the timeout is larger than the message delay. At this point, every honest process receives Polygraph 1: bin-propose(π£π ): 2: estπ = π£π 3: rπ = 0 4: timeoutπ = 0 [ ] β 5: ledgeri 0 = 6: repeat: d β + 7: ππ ππ 1; increment the round number and the timeout β + 8: timeoutπ timeoutπ 1 β β + d 9: coordπ ((ππ 1) mod π) 1 rotate the coordinator β² Phase 1: [ ] [ β ] 10: bv-broadcast(EST ππ , estπ , ledgerπ ππ 1 , π, bin_valuesπ ) binary value broadcast the current estimate
Appears in 1 contract
Sources: Byzantine Consensus Algorithm
Protocol Overview. The basic protocol operates in two phases, after which a pos- sible decision is taken. Each process maintains an estimate. In the first phase, each process broadcasts its estimate using a reliable broadcast service, bv-broadcast (discussed below), as introduced previously [1]. The protocol uses a rotating coordinator; whoever is the assigned coordinator for a round broadcasts its estimate with a special designation. All processes then wait until they receive at least one message, and until a timer expires. (The timeout is increased with each iteration, so that eventually once the network stabilizes it is long enough.) If a process receives a message from the coordinator, then it chooses the coordinatorβs value to βechoβΕechoΕΎ, i.e., to rebroadcast to everyone in the second phase. Otherwise, it simply echoes all the messages received in the first phase. At this point, each process ππ waits until it receives enough β β β compatible ECHO messages. Specifically, it waits to receive at least (β π π‘0) messages sent by distinct processes where every value in those messages was also received by ππ in the first phase. In this case, it adopts the collection of values in thoβ se (π π‘0) messages as its candidate set. In fact, if a process ππ receives a β set of (π π‘0) messages that all contain exactly the coordinatorβs value, then it chooses only that value as the candidate value. ππ has only one candidate value π£, then ππ adopts that value π£ as its estimate. In that case, it can decide π£ if it matches the parity of the round, i.e., if π£ = ππ mod 2. Otherwise, if ππ has more than one candidate value, then it adopts as its estimate ππ mod 2, the parity of the round. / β β + To see that this ensurπ/3es agreement (when π‘ < π 3), con- sider a round in which some process ππ decides value π£ = β ππ mod 2. Since ππ receives (π π‘0) echo messages containing only the value π£, we know that every honest process must havβ e value π£ in every possible set of (π π‘0) echo messages, and hence every honest process included π£ in its candidate set. Every honest process that only had π£ as a candidate also decided π£. The remaining honest processes must have adopted π£ = ππ mod 2 as their estimate when they adopted the parity bit of the round. And if all the honest processes begin a round π with estimate π£, then that is the only possible decision due to the reliable broadcast bv-broadcast in Phase 1 (see b+ elow) and all honest processes decide at round π 2 or earlier (regardless of whether ππΊππ is reached). / π/3Processes always continue to make progress, if π‘ < π 3. Termination is a consequence of the coordinator: eventually, after GST when the network stabilizes, there is a round where the coordinator is honest and the timeout is larger than the message delay. At this point, every honest process receives Polygraph 1: bin-propose(π£π )[: ] 2: estπ = π£π 3: rπ = 0 4: timeoutπ = 0 [ ] β
5: ledgeri 0 = 6: repeat: d β + 7: ππ ππ 1; increment the round number and the timeout β + 8: timeoutπ timeoutπ 1 β β + d 9: coordπ ((ππ 1) mod π) 1 rotate the coordinator β² Phase 1: [ ] [ β ] 10: bv-broadcast(EST ππ , estπ ,β
ledgerπ ππ 1 , π, bin_valuesπ ) binary value broadcast the current estimate
Appears in 1 contract
Sources: Byzantine Consensus Algorithm
Protocol Overview. The basic protocol operates in two phases, after which a pos- sible possible decision is taken. Each process pro- cess maintains an estimate. In the first phase, each process broadcasts its estimate using a reliable broadcast service, bv-broadcast (discussed below), as introduced previously [1]. The protocol uses a rotating coordinator; whoever is the assigned as- signed coordinator for a round broadcasts its estimate with a special designation. All processes then wait until they receive at least one messagemes- sage, and until a timer expires. (The timeout is increased with each iteration, so that eventually once the network stabilizes it is long enough.) If a process receives a message from the coordinator, then it chooses the coordinatorβs value to βechoβ, i.e., to rebroadcast to everyone in the second phase. OtherwiseOther- wise, it simply echoes all the messages received in the first phase. At this point, each process ποΏ½pi οΏ½ waits until it receives enough β β β compatible ECHO messages. Specifically, it waits to receive at least (πn t0 π‘0) messages sent by distinct processes where every value in those messages was also received bypi ππ in the first phase. In this case, it adopts the collection of values in thosen t0 (π π‘0) messages as its candidate set. In fact, if a propi cess ππ receives a sen t0t of (π π‘0) messages that all contain exactly the coordinatorβs value, then it chooses only that value as the candidatFinally, the processes try to come to a decision. If process pi e value. ππ has only one canvdidate valpi ue π£, then ππ adov pts that value π£ as its estimate. In that casev , it can decide π£ if it matches the parity of thev rounri d, i.e., if π£ = ππ mopi d 2. Otherwise, if ππ has more than one candidate value, then it adopts as its estimate ππ mod 2, the parity of the round. / β β + To see that this t ensurn/3es agreement (consider when π‘ < π 3), con- sider a roupi nd in which somev procri ess ππ decidespi value π£ = πn t0π mod 2. Since ππ receives (π π‘0) echov messages containing only the value π£, we know that ev very honest process must have n t0value π£ in every possible set of (π π‘0) echo messages, av nd hence every honest process included π£ in its candidate v set. Every honest process that only had π£ as a candidate also decided π£. The remaining honest processes must have adopted π£ = ππ mod 2 as their estimate when they adopted the parity bit of the round. And if all the honest processes begin a round π with estimate π£, then that is the only possible decision due to the reliable broadcast bv-broadcast in Phase 1 (see below) and all honest processes decide at round π 2 or earlier (regardless of whether ππΊππ is reached). / Processes always continue to make progress, if π‘ < π 3. Termination is a consequence of the coordinator: eventually, after GST when the network stabilizes, there is a round where the coordinator is honest and the timeout is larger than the message delay. At this point, every honest process receives Polygraph 1: bin-propose(π£π ): 2: estπ = π£π 3: rπ = 0 4: timeoutπ = 0 [ ] β
5: ledgeri 0 = 6: repeat: d β + 7: ππ ππ 1; increment the round number and the timeout β + 8: timeoutπ timeoutπ 1 β β + d 9: coordπ ((ππ 1) mod π) 1 rotate the coordinator β² Phase 1: [ ] [ β ] 10: bv-broadcast(EST ππ , estπ ,decided ledgerπ ππ 1 , π, bin_valuesπ ) binary value broadcast the current estimate
Appears in 1 contract
Sources: Byzantine Consensus Algorithm
Protocol Overview. The basic protocol operates in two phases, after which a pos- sible decision is taken. Each process maintains an estimate. In the first phase, each process broadcasts its estimate using a reliable broadcast service, bv-broadcast (discussed below), as introduced previously [1]. The protocol uses a rotating coordinator; whoever is the assigned coordinator for a round broadcasts its estimate with a special designation. All processes then wait until they receive at least one message, and until a timer expires. (The timeout is increased with each iteration, so that eventually once the network stabilizes it is long enough.) If a process receives a message from the coordinator, then it chooses the coordinatorβs value to βechoβ, i.e., to rebroadcast to everyone in the second phase. Otherwise, it simply echoes all the messages received in the first phase. At this point, each process ππ waits until it receives enough β β β compatible ECHO messages. Specifically, it waits to receive at least (π π‘0) messages sent by distinct processes where every value in those messages was also received by ππ in the first phase. In this case, it adopts the collection of values in those (π π‘0) messages as its candidate set. In fact, if a process ππ receives a set of (π π‘0) messages that all contain exactly the coordinatorβs value, then it chooses only that value as the candidate value. ππ has only one candidate value π£, then ππ adopts that value π£ as its estimate. In that case, it can decide π£ if it matches the parity of the round, i.e., if π£ = ππ mod 2. Otherwise, if ππ has more than one candidate value, then it adopts as its estimate ππ mod 2, the parity of the round. / β β + To see that this ensures agreement (when π‘ < π 3), con- sider a round in which some process ππ decides value π£ = ππ mod 2. Since ππ receives (π π‘0) echo messages containing only the value π£, we know that every honest process must have value π£ in every possible set of (π π‘0) echo messages, and hence every honest process included π£ in its candidate set. Every honest process that only had π£ as a candidate also decided π£. The remaining honest processes must have adopted π£ = ππ mod 2 as their estimate when they adopted the parity bit of the round. And if all the honest processes begin a round π with estimate π£, then that is the only possible decision due to the reliable broadcast bv-broadcast in Phase 1 (see below) and all honest processes decide at round π 2 or earlier (regardless of whether ππΊππ is reached). / Processes always continue to make progress, if π‘ < π 3. Termination is a consequence of the coordinator: eventually, after GST when the network stabilizes, there is a round where the coordinator is honest and the timeout is larger than the message delay. At this point, every honest process receives Polygraph 1: bin-propose(π£π ): 2: estπ = π£π 3: rπ = 0 4: timeoutπ = 0 [ ] β
5: ledgeri 0 = 6: repeat: d β + 7: ππ ππ 1; increment the round number and the timeout β + 8: timeoutπ timeoutπ 1 β β + d 9:[ ] coordπ ((ππ 1) mod π) 1 rotate the coordinator β² Phase 1: ππ [ ] [ β ] 10: bv-broadcast(EST ππ , estπ , ledgerπ ππ 1 , π, bin_valuesπ ) binary value broadcast the current estimate
Appears in 1 contract
Sources: Accountable Byzantine Agreement