Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One simple algorithm, just to convince you that this is possible, would be as follows:

* All of the members generate a key-pair, and introduce themselves to each other with their public key as their identity.

* After a certain time interval, all members individually pick their own random number, and publish just the hash of it, thereby "pre-committing" to it (signing it with their private key).

* Once all the hashes are known, the members reveal the random numbers that were the inputs (and the other members check that they hash to the pre-committed values).

* The members then XOR all the random numbers together (and then maybe hash the result) to produce a single final random number.

* That random number is reduced modulo the number of members, producing a number which is then used as an index into the list of members (sorted by public key).

There are edge cases with malicious or badly connected nodes potentially dropping out at each stage, so this requires a bootstrapped consensus system that can agree on which nodes are bad and punish them financially.



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: