0
In the usual proof-of-work consensus system, miners constantly compute hashes (“wasting” resources). What if hashing were restricted to a certain time window, e.g., 1 hour per day?
This could act as a leader election for the remainder of the day. These leaders are “representative” of the entire network since they’re sampled using PoW.
The leaders could then use some Byzantine fault tolerant consensus algorithm to decide what blocks to append — without mining — until their “term” is up.
Has such a system — or something (even vaguely) similar — already been discussed?
The obvious question is how vulnerable this system is to colluding attackers. (Clearly it is weaker than the usual “51%” majority rule, but exactly how bad is it?)
If we assume that the BFT consensus algorithm can tolerate a fraction of
1/3bad leaders, we can calculate the probability of a successful attack as a function of the bad PoW capacity share using some binomial distribution maths. Some back-of-the-envelope Python calculations suggest that perhaps 20% bad PoW share is tolerable, which isn’t absolutely terrible.- Maybe there is no known BFT consensus algorithm that would scale to anything close to the Bitcoin network (e.g., in PBFT the number of “replicas”, i.e., leaders, is << 100).
I’m sure there are plenty of other potential problems, I’m just wondering if it is feasible at all. Perhaps it has been discussed in some other context.
We need a way to ensure that hashes were actually calculated during the claimed window, because otherwise miners will cheat by performing hashes during off hours and lying about when they were done. How will that work? Time stamps in blocks can't be trusted because they're inserted by the miners themselves. You could have a central "timekeeper" authority that releases a magic key when mining is to start, and requires that all blocks for that day contain that key, but then you have to trust that the timekeeper can't be bribed to secretly share the key early... – Nate Eldredge – 2018-03-24T02:16:49.530
... thus giving his friends an advantage in mining. Likewise, the timekeeper might be able to lie and claim that hashes from his enemies arrived too late. One of the major design features of Bitcoin is that there is no single person or organization whom everyone must trust. – Nate Eldredge – 2018-03-24T02:19:39.373
I had imagined some block would act as the start block (making pre-mining impossible as usual in the blockchain), and after the election window is over, consensus rules reject further mined blocks. If using actual clock time is a problem, how about setting a fixed number of blocks rather than using time windows? – tjanson – 2018-03-24T12:13:52.233
You should look up Bitcoin-NG, it proposed a similar construct, where the miner that finds the last block publishes a chain of sub-blocks until the next miner finds a block (and reconfirms the transactions from the sub-blocks). – Murch – 2018-03-24T17:19:08.400
Thanks for the pointer, @Murch! That’s pretty much what I had in mind as an answer (i.e., anything even slightly similar, and that definitely is) and was very interesting. – tjanson – 2018-03-27T15:47:59.013