How can we use ‘Proof of work’ for Bitcoins more efficiently
In absence of a central governing body, individual users have to validate transactions in a distributed ledger system. However in order to validate a transaction, user’s machine has to execute a mathematically challenging question. Once the user’s machine solves this question (proof of work), the transaction can be validated. However, in bitcoins, which uses distributed ledgers, the mathematical questions do not solve a bigger, more ambitious question. My argument is that a system like Bitcoin can ask participating user machines to solve equally challenging questions which also serves one of the several big questions scientists are trying to solve.
If you have never heard of proof of work here is a gist:
Proof of work: A challenge question that has to be solved and responded to before a user can validate a transaction in a distributed ledger system. Once the user (node) validates the transaction, the user is rewarded in some way. For example in Bitcoin world, this is called mining where s fraction of bitcoin is awarded for spending the CPU capacity on validating the transaction. This mechanism helps to avoid spamming or gaming the system because the payoff (e.g. bitcoin) is balanced with CPU power expended to perform the function.
For proof of work to be effective, users have to validate each transaction in the chain and are rewarded in return. However, users (or nodes) have to pay in form of CPU cycles by computing certain mathematical problems thrown at them. This is to ensure that rogue machines have no incentive to manipulate the system because the rogue machine will have to be computationally more efficient than thousands of other machines combined in the network. This reward for using the CPU cycles is called Bitcoin mining in the world of Bitcoins.
But what are these ‘certain’ mathematical problems that the nodes are solving? There is no real value of these computations. The calculations are not trying to answer a bigger question. And this is where we can bring more efficiency to the overall system. I want to pose the question ‘Why are we performing meaningless calculations for Bitcoin?’ The challenge question posed by Bitcoin seem to be hash calculations for a block that links to the current block. The calculation lends no value to the overall system. Therefore all the computing power to mine Bitcoins is being squandered away.
There are several useful computations possible that can be thrown into the Bitcoin proof of work protocol. Several projects already use distributed computing where a central system distributes a problem to several participating machines and then aggregates the information. Here are some examples:
- Perform calculations for protein folding.
Special, high compute servers are being built to simulate protein folding and understand diseases.
2. Build climate change model.
NASA has already build distributed computing to perform these massive calculations and has amassed several giga flops of compute cycles. You can see the project details of Climate@Home.
3. Projects like Human Brain project can leverage the immense CPU (or GPU) power available to simulate the core of human brain, something the project aims to achieve.
In fact, there is a whole list of distributed computing projects listed on wikipedia.
So I hope that we find a better use of the computation power we are throwing behind blockchain like algorithms.