Skip to content

Instantly share code, notes, and snippets.

@elidourado
Created August 20, 2015 16:52
Show Gist options
  • Save elidourado/e62d6f97b8c5b605375f to your computer and use it in GitHub Desktop.
Save elidourado/e62d6f97b8c5b605375f to your computer and use it in GitHub Desktop.

  BIP: 1XX
  Title: Increase maximum block size to 8MB
  Author: Eli Dourado <elidourado@gmail.com>
  Status: Draft
  Type: Standards Track
  Created: 2015-08-20

Table of Contents

Abstract

This BIP proposes a one-time increase in the one megabyte maximum block size to eight megabytes.

Motivation

Transaction volume on the Bitcoin network has been growing, and will soon reach the one-megabyte-every-ten-minutes limit imposed by the one megabyte maximum block size. A one-time increase in the maximum block size will alleviate potential problems caused by this growth without specifying any particular path of future scaling.

Specification

After deployment (see the Deployment section for details), the maximum allowed size of a block on the main network shall be calculated based on the timestamp in the block header.

The maximum size shall be 8,000,000 bytes at a timestamp of 2016-01-11 00:00:00 UTC (timestamp 1452470400).

Deployment

Deployment shall be controlled by hash-power supermajority vote (similar to the technique used in BIP34), but the earliest possible activation time is 2016-01-11 00:00:00 UTC.

Activation is achieved when 750 of 1,000 consecutive blocks in the best chain have a version number with bits [TBD] set ([TBD] in hex)]. The activation time will be the timestamp of the 750th block plus a two week (1,209,600 second) grace period to give any remaining miners or services time to upgrade to support larger blocks. If a supermajority is achieved more than two weeks before 2016-01-11 00:00:00 UTC, the activation time will be 2016-01-11 00:00:00 UTC.

Block version numbers are used only for activation; once activation is achieved, the maximum block size shall be as described in the specification section, regardless of the version number of the block.

Test network

Test network parameters are the same as the main network, except starting immediately and with easier supermajority conditions and a shorter grace period:

    starting time: 1 Aug 2015 (timestamp 1438387200) (i.e., in the past)
    activation condition: 75 of 100 blocks
    grace period: 24 hours

Rationale

After listening very closely to all parties in the block size discussion, it is clear that there are conflicting long-term visions for what Bitcoin will become. This proposal is aimed at a compromise that alleviates short-run pressures on Bitcoin’s network without pre-committing any party to a particular long-run approach for scaling the network.

Gavin Andresen has tested the current reference implementation with a block size of 8,000,000 bytes and determined that it is feasible. An 8MB block size also has support from miners on the most bandwidth-constrained networks.

An increase in the maximum block size to 8MB represents three doublings of Bitcoin’s capacity, which may take the network several years to outgrow. In the meantime, developers can observe and gather information about the results of the increased block size on the stability and decentralization of the network before committing to any further scaling strategy.

Three doubling periods is long enough that we will not simply rehash the block size debate as soon as the new block size is adopted. In addition, developers will have time to explore alternatives to increasing the block size such as the Lightning network.

The technical aspects of this plan are taken from Gavin Andresen’s BIP 101. The only technical modifications are the elimination of the future growth trajectory and the addition of a different block version number.

Objections to this proposal

As a compromise proposal, many objections to all previous proposals continue to apply. Larger blocks have the potential to increase network centralization and enable new attacks. Not specifying a future growth trajectory means that the community may have to repeat the current block size debate if Bitcoin continues to grow.

Compatibility

This is a hard-forking change to the Bitcoin protocol; anybody running code that fully validates blocks must upgrade before the activation time or they will risk rejecting a chain containing larger-than-one-megabyte blocks.

Simplified Payment Verification software is not affected, unless it makes assumptions about the maximum depth of a transaction's merkle branch based on the minimum size of a transaction and the maximum block size.

Implementation

Not yet implemented

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment