Proof-of-Work

TOP

Every Nano transaction contains a small Proof-of-Work (PoW). Within the Nano Protocol, Proof-of-Work is used only as an anti-spam measure. It is not used in the consensus mechanism.

Within the Nano Protocol, Proof-of-Work is used only as an anti-spam measure.

PoW solutions take minimal resources to verify, but proportionally significant resources to generate.

In general, PoW is the solving of a simple math problem where a solution can only be found by repeatedly guessing and checking. The harder the problem, the more guesses it takes on average to find an answer. Once found, the non-unique solution can then be verified with a single check. This allows computers to prove (on average) that they spent a certain amount of computation power.

Nano's Proof of Work uses the blake2b cryptographic hash function

Calculating Work

The "work" field in transactions contains a 64-bit nonce found using the blake2b hash function. The nonce satisfies the equation.


blake2b(nonceprev_block_hash)>=thresholdblake2b(nonce || prev\_block\_hash) >= threshold

Currently the mainnet's threshold is 0xffffffc000000000.

Any random nonce has a 1.491081.49 * 10^{-8} chance of being a correct solution. This results in an average of 67,108,86467,108,864 guesses to generate a valid nonce that requires only a single blake2b hash to validate.

First Account Block

The first block on an account-chain doesn't have a previous (head) block, so a variant of the above equation is used to calculate the "work" field:


blake2b(noncepublic_key)>=thresholdblake2b(nonce || public\_key) >= threshold