Genesis upgrade

Genesis is a major update to the BitcoinSV mining client which is used by the majority of miners on the BitcoinSV network.

The upgrade is seen as a return to the original Bitcoin protocol, and includes the removal of all limit based consensus rules, and their replacement with miner configurable settings that give node operators the autonomy needed to set their own limits as they determine are practical.

The full specification is available here.

A short summary of the specification is given here.

Genesis is scheduled to go into effect on or around the 4th of February 2019.

See also:

https://bitcoinsv.io/2020/01/15/changes-for-the-genesis-upgrade/

The four following areas of the protocol and specification contain the changes implemented by the Genesis upgrade.

Block Consensus Rules

These consensus rules apply to blocks that are produced after Genesis activation.

  • Block Size - The consensus rule that restricts the maximum size of a block to a specific number of bytes has been converted into a configurable consensus rule. The size of a block is the size in bytes of the serialized form of the block including the block header and all of the transactions confirmed by the block. MINERS ARE EXPECTED TO REACH CONSENSUS ON THIS VALUE AND CONFIGURE IT MANUALLY.
  • Number of CheckSig Operations per MB of Block Space - The consensus rule that limits the number of checksig operations per megabyte of block space has been removed.

Transaction Consensus Rules

These consensus rules apply to transactions that are confirmed in blocks after Genesis activation.

  • Maximum Transaction Size - The size of a transaction is the size in bytes of the serialized form of the transaction. The maximum size of a transaction is 1GB (1,000,000,000 bytes). This limitation is expected to be lifted in the future.
  • Maximum Number of CheckSig Operations per Transaction - The consensus rule that limits the number of checksig operations per transaction has been removed.
  • nLockTime and nSequence - After Genesis activation, the functionality of the nLockTime field of a transaction and the nSequence fields of transaction inputs revert to their original purpose. The rules defined here only apply to transactions that are confirmed after Genesis activation.

Script Language Rules

This section contains changes to the Script Language Rules. Bitcoin Script is the programming language that is used to lock and unlock transaction outputs. More can be found at: Advanced Bitcoin Scripting. The rules defined here apply to locking and unlocking scripts for transaction outputs that are created after the Genesis activation. The previous rules apply to transaction outputs created prior to Genesis activation.


OP_RETURN Functionality

The functionality of the OP_RETURN operation is being restored. OP_RETURN will cause termination of the script and the validity of the script is determined by the value of the top item on the stack. See OP_RETURN.


Data Types

All data items in Bitcoin Script as a byte sequence. Some operations interpret their parameters as numeric or boolean values and require the itme to fulfill the requirements of those types. Some operations produce items on the stack which are valid numeric or boolean values.


Formal Grammar for Bitcoin Script

A formal grammar has been defined for Bitcoin Script.