Hi,
Despite the significant progress on the different implementations of ethereum clients (mainly C++ AlethZero and Go Ethereal), there is still one technical area where we miss a community consensus, and that's the mining algorithm. Different ideas have been raised: a "turing-complete proof-of-work", a "punitive proof-of-stake", or an hybrid system a la Peercoin.
I'd like to put in the discussion another possibility called
proof-of-retrievability and presented in the Permacoin paper [0]. The distributed storage (named
F
in the white paper) could be used to store any arbitrary data (encrypted "distributed dropbox"). Maybe it would also be possible to modify the Permacoin protocol to store the unencrypted static source code of Ðapps (currently the paper assume that the data are encrypted). Also this is the first time I read about proof-of-retrievability/storage as a mining puzzle, but maybe other projects (Maidsafe?) have proposed a similar design.
I think this option is worth considering either as a standalone solution, or as part of an hybrid system along with proof-of-{work|stake|excellence|velocity|burn|...}.
[0]:
http://cs.umd.edu/~amiller/permacoin.pdf
Comments
Why not all transactions, plus a canonical encoding of the block's contract state, as well as all contract code? This would reward miners for being full nodes. If designed to incentivize storing full state, it may incentivize against mining pools. (I believe Vitalik mentioned this or something similar at the meetup last night.)