Version 0.4.1:

http://www.docdroid.net/ahms/forging0-4-1.pdf.htmlAdded a new section on a "randomization" algorithm.

Conclusions:

- The current forging algorithm is only pseudorandom (deterministic but unpredictable), and there is concern whether this situation could be potentially dangerous. I do think that this danger is not very serious, since the real world will not hesitate in introducing some ``real randomness'' to the system (because nodes go online and offline, money are transferred, etc.).

- Nevertheless, it is possible to propose an extra randomization algorithm, i.e., the network can achieve a consensus on a Uniform[0,1] random number independent of the previously published data.

- The procedure for obtaining this random number can be roughly described in the following way. First k

_{0} accounts (with respect to the inverse weights) choose some ``random" numbers locally (e.g., take a local output of

**rand()**), and publish their hashes. Then, they publish numbers themselves; if the published number does not correspond to the hash or is not published at all, then the corresponding account is penalized. If that happens for at least one account, the whole procedure is invalidated (and we wait for the next try).

- One can then ``mix'' the k

_{0} numbers (e.g., by summing them modulo 1); if at least one of the best k

_{0} accounts does not belong to the attacker, the result is ``truly random'' (it cannot be manipulated, even if we suppose that the attacker controls the otherk

_{0} accounts and cheats by choosing their numbers at will).

- The probability that the attacker controls the best k

_{0} accounts can be bounded from above by b

^{k0}, where b is the attacker's stake.

- As noted in the last section, the best strategy for the attacker is to split his money into many small accounts; so, it is good that the splitting is discouraged (as shown in Section 2.1).

Please feel free to criticize the algorithm; I don't have any knowledge in cryptography, so I'll be glad to take the opportunity to learn something.