RandomizedConsensus (1).doc

In order to implement the weak shared coin the

This preview shows page 4 - 5 out of 5 pages.

In order to implement the weak shared coin, the protocol uses the algorithm designed by Bracha and Rachman. This algorithm is based on a distributed voting protocol. Each process casts together many votes. The strong adversary can stop up to n-1 votes from being written, but if the number of votes is big enough, the n-1 votes cannot interfere in the majority. In Bracha/Rachman algorithm, votes are divided in three different categories. The first category is composed by the common votes: votes that all the process read. The second one is constituted by votes that not all process can read. These are called extra votes. These votes have been written after some
Image of page 4

Subscribe to view the full document.

processes finished reading the pool. Finally, there are the hidden votes, which are the (at most) n-1 votes killed by the adversary. A major question in Bracha/Rachman protocol is how to divide the votes in order to maximize the probability of a common decision able to defeat the strong adversary. There are n 2 common votes, which are seen by all the processes. The adversary can delete up to n-1 of the votes, and the number of extra votes is n 2 / logn. The reason the protocol works is that we can argue that the common votes have at least a constant probability of giving a majority large enough that neither the random drift of the extra votes, nor the selective pressure of the hidden votes is likely to change the apparent outcome of the election. The algorithm is as follows: Input : none Output : Boolean value Local data : Boolean preference p; integer round r; utility variables c, total, and ones Shared data : single-writer register r[p] for each process p, each of which holds a pair of integers (flips, ones), initially (0,0) begin repeat for i = 1 to n / log n do c = CoinFlip() r[p] = (r[p].flips + 1, r[p].ones + c) end read all registers r[p] total = sum(r[p].flips) until total > n 2 read all registers r[p] total = sum(r[p].flips) ones = sum(r[p].ones) if total/ones > 1/2 then return 0 else return 1 end In Bracha/Rachman algorithm, each process votes several times, until the total of votes equals n 2 . In order to reduce the complexity of the algorithm, each time a processor votes, it delivers n/logn votes. The internal loop may run up to n * logn times (in case a single processor casts all the votes). Each loop requires reading n registers, hence, the entire cost in time complexity will be n 2 * logn. The amortized voting police is the biggest contribution of Bracha and Rachman. Because the extra votes are not biased by the adversary, it is possible to tolerate more of them. That is why processors write n/logn votes each time. If each processor wrote one vote per turn, the algorithm could carry out n 3 operations.
Image of page 5

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern