Protocol

Bitcoin Protocol Rules

The rules of the Bitcoin protocol are the rules that precisely define the Bitcoin system.

There are different classes of rule in the Bitcoin system including:

  • Immutable rules
  • Mutable rules
  • Communication rules

Consensus Rules

The consensus rules reached by general agreement and are necessary to implement the Bitcoin specification in software [1]. They are a set of rules that define the format and constraints that transactions and blocks must follow. These include:

  • All the rules that govern the Bitcoin cryptocurrency including values of inputs and outputs, and the block subsidy schedule
  • Rules governing transaction data formatting, including sizes of different fields and overall transaction/block sizes
  • Rules governing proof-of-work
  • The Bitcoin scripting language and its specification

All transactions and blocks must follow the consensus rules to be considered valid. Consensus Rules require a well organised Protocol Upgrade be changed as changes risk forking the network.

The set of rules is quite large and not fully documented yet. It includes obvious things like “the sum of the values of the outputs in a transaction must be less than or equal to the sum of the values of the inputs” and also extreme technical detail such as the encoding of transactions, blocks, and the data types (this is required because the validity of the signature depends on the exact encoding, as does the validity of the Proof-of-Work).

The Bitcoin SV philosophy is that these rules should be returned to be as close to the original rules as possible and then “set in stone”, will no further changes.

Policy Rules

Policy rules are “optional” or “non-mandatory” rules that clients implement. An example is the “minimum fee” rule, which specifies that the node will only accept and relay unconfirmed transactions that pay above a certain fee. Some nodes will refuse to accept transactions that do not comply with this rule but policy rules are not consensus rules. If a transaction is present in a block which violates a policy rule but complies with the consensus rules, then the transaction and block is valid.

Local Policies

Policies are “local” by definition. They apply to the instance of software that is running, they do not apply to the validation of blocks, or the transactions within a block. A block accepted from another miner may contain transactions that do not conform to local policy.

Standard Policies

Common local policies that are used by a significant proportion of network nodes. They are defined as a "Standard" to facilitate common application across independent software implementations but it is important to note that it is not required that software implement or adhere to these policies.

P2P Protocol

The P2P Protocol is a well defined method for Bitcoin nodes to communicate. The P2P Protocol can change and a re-implementation is planned for the future. Software can use any method of communication. A large amount of the innovation that scales Bitcoin SV is done by improving the peer-to-peer protocol.

See Also

References

[1] - https://github.com/bitcoin-sv-specs/protocol/blob/master/updates/genesis-spec.md