What is Proof-of-Work?
Proof-of-work in the context of distributed computing can refer to two distinct ideas. In a traditional setup, there is a “proof-of-work” that authenticates the set of initial conditions for a particular computer system or an information system. With a proof-of-work, the verifier (who may be a third party or an internal group) verifies that the system works as described. It usually refers to a mathematical proof, which is transmitted to a group of computational engineers who are managing some aspect of the system.
Proof-of-work is also a kind of digital cryptographic proof where one entity demonstrates to other entities that a certain level of computational effort was spent proving the existence and/or functionality of some data. Verifiers can then verify this spending by making little or no effort on their own part. This is unlike traditional cryptographic protocols in that there must be a cryptographic key that will guarantee execution of the protocol. Proof-of-work can be thought of as a safety feature that prevents Byzantine crisis in networks that rely on Byzantine Fault Tolerance. Byzantine crisis occurs when two sides try to prove the legitimacy of the other through different means, such as by producing conflicting outputs, at the same time.
The proof-of-work is generated using a hash function. The hash function creates a unique output called the “differing block,” which serves as a reference point for further work. The hash function also allows multiple, parallel calculations to take place, which is necessary to solve the Byzantine crisis. One drawback of proof-of-work is that it creates a dependency on one specific hash function.