Skip to content

Latest commit

 

History

History
58 lines (40 loc) · 2.33 KB

UIP-0017.md

File metadata and controls

58 lines (40 loc) · 2.33 KB

UIP-17: No Nonce or Extra Nonce

Author:   Julian Fleischer <[email protected]>
Status:   Proposed
Created:  2018-11-05

Context

Bitcoin uses a nonce to implement Proof-of-Work. The nonce is iteratively incremented until the block hash meets a certain difficulty. The nNonce field is part of a block header (a uint32_t).

Since the available search space for nonces is less than the available space for block hashes (2^32 vs 2^256), miners adopted an extra nonce which is part of the coinbase transaction.

Neither the nonce nor the extra nonce are required in the Proof-of-Stake setting of unit-e.

Particl, Blackcoin, and PeerCoin – which implement Proof-of-Stake – keep the nonce field in their blocks. This is due to the fact that they also support Proof-of-Work blocks (which are never used though).

In Particl it can be seen (use a block explorer) that the nonce field is actually always 0.

Decision

The nonce field is removed from the block header. Support for extra nonce in the coinbase transaction is dropped.

Consequences

Dropping the extra nonce does not have visible effects – the extra nonce is purely an invention by miners. Bitcoin core already does not have mining support. The extra nonce in bitcoin core is merely used in the block template.

Dropping the nonce field is a change of the header structure. It saves 4 bytes. It requires a lot of tests to be touched. It affects the generate and generatetoaddress rpc calls. All of these things need to be touched and changed in order to support Proof-of-Stake properly anyway. Also we're touching these things for UIP-3 and for UIP-10 and UIP-11 (which includes the UTXO Set Hash into the coinstake transaction and makes it required for validation).

Reference implementation

Unit-e pull request

Changelog

  • 2019-04-16 Added reference implementation and changed status to proposed
  • 2018-12-12 Moved to UIP repository as UIP-17
  • 2018-11-03 Accepted as ADR-17

Copyright

This document is dual-licensed under CC0 and MIT.