Momentum

From Bitcoin Wiki
Jump to navigation Jump to search

Momentum is a memory-hard function proof of work algorithm proposed by Daniel Larimer. It is based on the birthday problem and requires miners to use large amounts of memory while searching for a valid collision.

Algorithm

Momentum uses a birthday-collision search. Given a hash of the block data, denoted as H, miners generate a large number of candidate nonces and calculate a birthday hash for each candidate. The goal is to find two distinct nonces A and B such that:

BirthdayHash(A + H) == BirthdayHash(B + H)

The intermediate hash results are stored in memory, allowing collisions to be detected efficiently. The algorithm therefore makes the amount of available memory an important part of the mining process.

Memory hardness

The main goal of Momentum is to make proof-of-work mining less suitable for specialized hardware such as application-specific integrated circuits (ASICs). Instead of relying only on a large number of hash calculations, a miner must maintain a large table of intermediate results in memory.

Momentum was designed so that solutions could be generated using significant amounts of memory while still being relatively inexpensive to verify. The original proposal argued that this could reduce the advantage of highly specialized mining hardware.

However, the memory-hardness of a proof-of-work algorithm also depends on its time-space tradeoff. A sufficiently effective tradeoff can allow a miner to reduce memory requirements by performing additional computation, weakening the intended hardware resistance.

Momentum effect

The name Momentum refers to a property of the search process. As a miner continues searching and its table of candidate hashes grows, the probability of finding a collision increases.

This gives miners an incentive to continue working with the same block data instead of repeatedly discarding their accumulated search state and starting again with a new block template.

History

Momentum was proposed by Daniel Larimer, who described it as a family of memory-hard proof-of-work algorithms based on finding birthday collisions. The proposal was intended to address the increasing efficiency of specialized hardware for conventional proof-of-work algorithms.

Momentum was not adopted by Bitcoin as its proof-of-work algorithm. Bitcoin instead uses SHA-256-based proof of work.

Comparison with Equihash

Momentum and Equihash both use the generalized birthday problem as part of their construction. Equihash was introduced by Alex Biryukov and Dmitry Khovratovich as an asymmetric memory-hard proof-of-work with fast verification. Its design uses a generalized birthday problem and introduces mechanisms intended to make reducing memory more costly.

Equihash subsequently saw practical use in cryptocurrencies such as Zcash.

See also

External links