120 likes | 256 Views
Approximate Consensus with Crash Failures in Asynchronous Systems. Approximate Consensus with Crash Failures & Asynchrony. Validity: Output in the convex hull of inputs Agreement: Outputs within ε of each other, for a constant ε > 0. Termination in finite time. Asynchronous system
E N D
Approximate Consensus with Crash Failures in Asynchronous Systems
Approximate Consensus withCrash Failures & Asynchrony • Validity: Output in the convex hull of inputs • Agreement: Outputs within ε of each other, for a constant ε > 0. • Termination in finite time
Asynchronous system • Up to f processors crash • n > 2f
Algorithm for each processor Initial state = input Asynchronous rounds: Each message is indexed by the round number in which it is sent. For the first round, round (r) = 1
Algorithm for each processor Initial state = input In r-th round: • Send current state to all processors as a round-r message • Wait until round-r messages (state) received from n-f processors • New state = average of values in the above n-f messages
Liveness By induction • At least n-f non-faulty processors start round r > 0 • They send messages to everyone • Thus, all non-faulty processors eventually receive at least n-f round r messages • And progress to round r+1
Agreement Let M[r] = maximum state value over all processors that have not crashed at the end of r rounds M[0] = maximum over processors that send at least one message before crashing M[r] = minimum … (similar to M[r] but minimum instead of maximum)
M[0] – m[0] max difference between input values at processors that do not crash at the start of the algorithm We will show that M[r] – m[r] is bounded by a monotonically decreasing function of round index.
n > 2f • n – f > n/2 • Processors i and j that complete round r+1 receive state from at least one identical processor, say k
Let Vi[r] denote the state of processor i at the end of round r (if processor is is non-faulty at that time) • Vi[0] = input of processor I • Round r > 0 Vi[r] = average of n-f values, all upper bounded by M[r-1] Vj[r] = average of n-f values, all lower bounded by m[r-1]
Vi[r] & Vj[r] weighted average of n-f values. Determine an upper bound on Vi[r]-Vj[r] noting that at least one of the n-f values used in each case is common, and has weight 1/(n-f)
Termination • Algorithm as specified does not specify when processors terminate • Two alternatives: • If a bound is known on initial inputs, then we can statically determine the maximum number of rounds required to reach agreement within ε. • Otherwise, nodes can estimate the range of inputs initially, and use that to determine how many rounds are sufficient[Abraham,Amit,Dolev] use this approach for approximate Byzantine consensus.