Skip to content

Instantly share code, notes, and snippets.

Created July 24, 2016 15:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/9b1d7c655844f9c974761d4391886c79 to your computer and use it in GitHub Desktop.
Save anonymous/9b1d7c655844f9c974761d4391886c79 to your computer and use it in GitHub Desktop.

Extending Blockchain without a hard fork

Last year the debate about increasing Bitcoin block size became quite intensive. Proponents of the increase insist that the block size should be increased in order to allow Bitcoin scale, core developers are against it because they don't think that hard fork is a good idea for a number of reasons.

One possible solution to increase effective Blockchain capacity without hard fork is to create an additional chain with some special properties described below and allow Bitcoin miners to provide proof of work for both the main blockchain and the additional blockchain with zero additional work.

Additional blockchain

The additional blockchain has the same blocks and transactions format as the main one with two exceptions:

  • maximum allowed block size is significantly larger than 1 MB, for example 32 MB;
  • block hash is not mined by varying nonce/extranonce, instead it is just calculated by a Bitcoin miner once and included by this miner to output addresses section of coinbase transaction in each mined block of the main blockchain.

To clearly identify that block hash included to a coinbase transaction's outputs section is not a sequence of real bitcoin addresses it should be marked by a pre-defined sequence of bytes. This way the coinbase transaction is still valid for the main blockchain clients, but the additional blockchain clients can extract hashes they need from it.

The additional blockchain clients pull from peers both blocks from the main and the additional blockchains and verify them using the following algorithm:

  • check integrity of the main blockchain blocks as usual;
  • for each block from the additional blockchain check that:
    • there is a block in the main blockchain that contain a hash of the given block from additional blockchain in the coinbase transaction's output as described above;
    • this block from the main blockchain was mined after the block from the main blockchain corresponding to the previous to the given block from the additional blockchain.

This approach allows to have blocks of virtually unlimited size that all have proof of work from the trustworthy Bitcoin network. The main blockchain clients that don't use the additional blockchain can remain the same because extended coinbase transactions are still valid bitcoin transactions, so there are no hard forks of the Bitcoin blockchain.

Economy of the additional blockchain

The additional blockchain operates it's own coins that are emitted with each block, in fact they are independent from Bitcoin. These coins can be traded for bitcoins and vise versa outside of the the main and additional blockchains.

If not all miners adopt the additional blockchain than it is okay, additional blockchain blocks are just mined more rarely. Because blocks in the additional blockchain are larger it's not such a problem. But miners are interested to include hashes of blocks from the additional blockchain to their coinbase transactions because it allows them to earn coins from the additional blockchain almost for free.

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