A (belated) Christmas present from BSV blockchain team.

Published On

24 Dec 2020

It’s taken us a bit longer than we hoped, but the beta version of BSV 1.0.7 (Dynastic) will be released in early January (hence the “belated” part of this article’s title).

The Dynastic release is the result of almost a year of work to untangle a particularly nasty mess we inherited from Bitcoin Core. As such, it is a huge code change which requires more than the usual level of care in testing. But I think most BSV app devs will agree it was worth it. Here’s the first hint (hey it’s Christmas, we need to unwrap this slowly!).

This is an animated chart over time of submitting 2 million transactions to a BSV node. The y-axis is the number of transactions accepted and the x-axis is seconds elapsed (sped up a bit). The orange line is the new beta version of SV, the blue is the previous 1.0.6 version. On the first chart you can see that 1.0.6 and 1.0.7 are almost identical. On the 2nd you can see a difference start to emerge and by the 3rd you can see that difference has become dramatic.

Why are there 3 charts side by side?  The answer is at the top. The three charts show sets of transactions made of descendant chains of length 1, 50 and 1000. What you’ll notice on the blue lines is the reason why we’ve been plagued with an ancestor chain limit of 25. The performance hit is exponential as the chain length grows. We’ll explain why later in this article. The nice bit is the orange line, which shows zero degradation when chain length increases, in fact it even speeds up. Which brings us to the part where we tear open the Christmas wrapping:

The 25 chained ancestor limit is history!

In BSV 1.0.7 beta we have raised the default limit from 25 to 1000. We have tested much longer chains and the same linear performance is observed, in fact we see no obvious reason not to remove it completely other than an abundance of caution in an adversarial environment. However, rest assured, after a few months of this 1000 limit being in the wild our intent is to get rid of it altogether. In fact we expect removing it to even result in a slight performance increase as we don’t need to do the accounting of chain lengths anymore.

So why was there a limit in the first place and why did it take so long to remove?

The history of block building

In the beginning, bitcoind v0.1.0 did it fairly simply.  Once a second or so, it would take an in memory map of all the transactions it had received, check any new ones to ensure they met the minimum fee requirement and if so, add them to the block template which was basically an ordered list of valid transactions. It would then calculate a merkle tree from that set of transactions and build a block header to start doing proof of work upon. It could have been optimised but it was fairly efficient and didn’t do much unnecessary work.

Then along came a 1MB block size limit and ideas about a fee market. The idea was that limiting the block size would create demand for block space and drive up the transaction fees users would effectively bid to get included in a block.  But this created a new requirement for the Bitcoin software to manage. If a miner can’t select all the available transactions due to the 1MB limit, they need to ensure they select the ones that pay the highest fee rates to maximise their revenues, leaving the less lucrative transactions for another miner to pick up later.

The consequences of limiting block size

And thus was the block building code turned into a nightmare of spaghetti accounting and other policy based limitations. Doing this job of selecting high paying transactions is not as simple as it sounds. When you have unconfirmed ancestors and child-pays-for-parent (CPFP) to account for there is a lot of graph traversal and other horrible complexity involved. Much of this involves traversing these graphs of related transactions every time you add a new one which brings with it quadratic computation cost. That is, the bigger a set gets, the more expensive every operation on that set becomes and the result is exponential degradation in speed.  This is clearly visible in the above chart where we see that the rate we can get transactions to the mempool falls dramatically as it gets larger.

You can also observe the effects of this in the layout of blocks mined with Bitcoin Core, Bitcoin ABC and older versions of BSV. The first transactions in blocks pay the highest fee rates and these get lower as you move toward the end of the block. This unfortunately removes the time ordering property of transactions in blocks which is a very useful feature of Bitcoin.

The solution

As is so often the case with Bitcoin, the solution to the problem was largely to just put it back the way it was. But this is easier said than done after 12 years of developer jiggery pokery on the code base.

Several releases of BSV this year contained preparatory work that needed to be proven stable. Culminating in SV 1.0.6 where we replaced the default Legacy block assembler (LBA) module with the new Journaling block assembler (JBA) which returns to the simple model of:

  1. Is the transaction valid? – yes
  2. Does it pay our minimum fee? – yes
  3. Append it to the transaction list

You see when block size is assumed to be unbounded there’s no need to worry about how high a transaction’s fee is with respect to other transactions, you simply select them all if they are above your minimum. This makes block building embarrassingly simple but also has profound effects on how Bitcoin fee markets work. It changes the dynamic from users bidding the price up, to miners competing to offer the lowest price and thus encouraging volume.

The fee selection logic we mentioned above was heavily intertwined with the LBA which meant we couldn’t remove this logic without breaking the LBA. So the sensible course was to remove the LBA entirely and in order to do that, we needed the replacement JBA to be fully stable. But the fee logic doesn’t just touch the block assembler, it touches almost everything in BSV with tendrils that reach deep into very sensitive code.  And some of that code affects the performance of the JBA.

And so the final step which we have achieved in the Dynastic release is to remove the LBA, clearing the path to removing the fee selection code and vastly simplifying the transaction selection logic.

Needless to say, this needed a lot of testing given the extent of the surgery it required. Our QA team is being forced to take a Christmas break this year after working through the holidays last year on Genesis (they’d probably work through the break if we let them because they’re rather a dedicated bunch). So we will have it out for beta testing in early January.

I really like this chart so I’m going to be indulgent and post it again. Not only because it solves this problem but because it demonstrates the structural principle that must be applied to solve all scaling challenges in Bitcoin:

  1. Don’t do work you don’t need to do
  2. If you think you need to do it, question yourself ruthlessly
  3. Keep the throughput/set size chart linear.

This particular problem is much easier to solve in Teranode than in BSV since we don’t have to worry about surgically removing rubbish code whilst ensuring we don’t break anything. It’s simply a matter of applying such Satoshi-esque principles to the initial design. Satoshi was able to do it in alpha code.

Anyway, it’s a few weeks away so that will give app developers a bit more time to dream up ways to make use of longer chains. Like the explosion of script experimentation we saw post-Genesis I’m expecting to see a new wave of innovation with long transaction chains.

Merry Christmas from Team SV and stay safe.

Blogs

Our blog articles cover the latest in blockchain technology.
Solutions, trends, and news.

post-image

22 Jun 2022

Miner Advisory June 2022 – Transaction Fee Configuration

Bitcoin was designed to distribute coins to miners through the block subsidy. The subsidy halves every 210,000 blocks.

post-image

12 May 2021

On the governance of Bitcoin limits

The BSV blockchain team recently received this request on the BSV github issue tracker.

post-image

24 Dec 2020

A (belated) Christmas present from BSV blockchain team.

It’s taken us a bit longer than we hoped, but the beta version of BSV 1.0.7 (Dynastic) will be released in early January (hence the “belated” part of this article’s title). The Dynastic release is the result of almost a year of work to untangle a particularly nasty mess we inherited from Bitcoin Core. As […]

post-image

09 Oct 2020

BSV Blockchain Capacity Report

Transaction volume on the BSV blockchain approximately doubled for a few days last week – due to “multi source stamina testing”

post-image

30 Sep 2020

Realising (Finally) Satoshi’s Peer to Peer Vision for Bitcoin

When Bitcoin V0.1.0 was released in 2009, it contained a proof of concept feature that is perhaps the most overlooked in its history.

post-image

16 Sep 2020

Beyond micropayments: The rise of nano-services

The Rails release of BSV (v1.0.5) introduces several game changing features that have long been in the making. This release is code-named RAILS because its major features are aimed to open new and innovative payment cases using the BSV blockchain protocol and ledger, and empower BSV blockchain companies to build more infrastructure for payments – […]

post-image

04 Feb 2020

Genesis activation successful

At 1:28am GMT block 620,537 was mined and BSV nodes of v1.0.0 or greater began accepting transactions under the restored Genesis protocol.  At 1:55am at block height 620,539 the first block containing a Genesis-only transaction was mined, locking in the change. Old node software did not accept this block and forked off onto a legacy […]

post-image

10 Jan 2020

Genesis specification finalized

The draft Genesis specification was published in December 2019 in order to elicit feedback from BSV miners and other ecosystem participants.

post-image

23 Dec 2019

BSV blockchain – Blocking potential P2SH replay attack after Genesis hard fork

The BSV Node team notes the recent public disclosure on Reddit by Gregory Maxwell (a.k.a. /u/nullc) from the Bitcoin Core (BTC) of a potential replay attack vector on BSV.

post-image

06 Dec 2019

BSV blockchain Genesis hard fork implementation plan – in advance of February 4, 2020

On February 4, 2020, the BSV blockchain network will undergo its “Genesis” hard forking upgrade.  This hard fork represents a significant milestone in BSV’s journey to restore the original Bitcoin protocol.  To allow the BSV blockchain ecosystem adequate time to prepare for the hard fork, the BSV Node team would like to communicate the rollout […]

post-image

24 Nov 2019

On the future of Bitcoin transaction fees

Cheaper transaction fees, fiat stable pricing and a highly flexible framework for dynamic fee rate discovery are all on the horizon for BSV blockchain.

post-image

06 Aug 2019

The BSV blockchain & False Reports of a “Three-way Fork”

In recent days there have been a couple of articles which incorrectly suggest that the BSV Blockchain has suffered from a “three-way fork” over the last few weeks. These articles seem to stem from the same source, a tweet from BitMEX Research. Here are the facts.  The BSV Blockchain had a planned hard-fork upgrade on […]

post-image

13 Jul 2019

Quasar upgrade 24th July recommendations – roadmap to Genesis part 2

This upgrade has very limited scope with just changing the block size hard cap but it warrants some further explanation. It was first detailed in part one of this post series.

post-image

22 May 2019

First gigabyte+ blocks mined in STN stress test

Background On May 21st 2019 the BSV blockchain Scaling Test Network (STN) saw its maximum mined block size record broken eight times in rapid succession. In the latest release of BSV Node (0.2.0) one of the standout changes was lifting the hard cap block size limit from 128MB to 10GB. The reason for setting the […]

post-image

29 Apr 2019

BSV blockchain [BSV] Scaling Test Network is open for business

The BSV Scaling Test Network (STN) is an initiative of the BSV blockchain Node project, owned by Bitcoin Association and operated by nChain (with funding by CoinGeek) to scale and test Bitcoin beyond gigabyte and eventually to terabyte blocks. In February 2019, the BSV blockchain team publicly released client software with full support for the […]

post-image

11 Mar 2019

BSV Scaling Test Network Sustains 128MB Blocks for 36 Hours

A new milestone was achieved recently on the Bitcoin SV Scaling Test Network with continuous 128MB blocks over a period of 36 hours. The test ran from about midday on the 7th of March through to midnight on the 8th. 246 blocks were produced during this period and each one was 128MB large. The blocks […]

post-image

01 Mar 2019

Denial of Service Vulnerabilities Repaired in BSV version 0.1.1

As part of its commitment to professionalise the Bitcoin development process.

post-image

24 Jan 2019

BSV blockchain (BSV) Weekly – Jan 23, 2019

The BSV blockchain ecosystem has benefited from significant developments in the past week – with six (count them six!) new releases just from Bitcoin developer unwriter. That alone deserves a special Satoshi Shout-Out below! Along with increased scaling achievements, the BSV blockchain ecosystem continues to grow at a rapid pace. Read below for a summary of […]

post-image

24 Jan 2019

Warming Up the Scaling Test Network for BSV blockchain – 24 hours of Sustained 64 MB Blocks

The BSV blockchain network is committed to massive on-chain scaling, and nChain’s team is progressing with technical work needed to achieve this Satoshi Vision. In fact, our recent tests have demonstrated the BSV blockchain network’s capacity to handle sustained 64 MB blocks over a full 24 hour period, and we are already moving towards showing […]

post-image

16 Jan 2019

Bitcoin SV (BSV) Weekly – Jan 16, 2019

Along with scaling capacities, the Bitcoin SV ecosystem continues to grow at a rapid pace.  In our weekly post, we provide a summary of some of the past week’s developments from around the world. Today’s special “Satoshi Shout-Out” goes out to hivr; the social network built around a BSV wallet is sponsoring “one of the […]

post-image

04 Jan 2019

Bitcoin SV (BSV) Unveils Logo for Rebirth of Original Bitcoin

The bComm Association unveils an updated logo for Bitcoin SV (ticker: BSV), chosen from public voting after three Twitter polls in a new form of decentralized marketing.  The BSV logo is revealed on the 10th anniversary of the Bitcoin genesis block, to mark Bitcoin SV as rebirth of the original Bitcoin.  A modernized update of […]

post-image

21 Dec 2018

BSV blockchain (BSV) Weekly – Dec 19, 2018

BSV blockchain (BSV) is designed to preserve Bitcoin’s fundamental design and fulfil the Satoshi Vision .  BSV provides the enterprise-friendly blockchain – with a stable, scalable, secure, and regulation-friendly platform for businesses to confidently build upon. In just one month since it emerged, the BSV ecosystem has quickly grown.  Numerous Bitcoin applications and services have […]

post-image

04 Dec 2018

New, Exciting BSV blockchain Projects Announced During CoinGeek Week

The highly anticipated CoinGeek Week conference has drawn to a close and to say that it was a huge success is putting it mildly.

post-image

20 Nov 2018

BSV blockchain Mines 64 MB Block on Bitcoin Cash, Largest Ever on a Public Blockchain

20 November 2018 – BSV blockchain, the new full node implementation for Bitcoin Cash (BCH) mined a 64MB block, the world’s largest ever on a public blockchain. The huge block was mined by CoinGeek Mining, during an on-going Professional Stress Test of the BCH network. Just one hour before, a 38MB block was mined, also […]

post-image

15 Nov 2018

Bitcoin Cash (BCH) Protocol Upgrade: Coin Splitting Advisory

The upcoming Bitcoin Cash (BCH) hard fork on November 15 will likely cause two branches of the blockchain to exist, at least temporarily. Some actors believe both branches will persist, effectively creating two “coins.” Other observers believe that one chain will die off with the alternate “coin” simply becoming unusable, and leaving a single “coin” […]

post-image

14 Nov 2018

Bitcoin SV Notice to Cryptocurrency Exchanges, Wallet & Service Providers: Advisory about BCH Protocol Upgrade and Coin Splitting

We recently received inquiries from several cryptocurrency exchanges about the upcoming November 15 Bitcoin Cash (BCH) protocol upgrade and the role played by Bitcoin SV. There appears to be confusion by some exchanges and other cryptocurrency service providers about Bitcoin SV, perhaps caused by misleading statements made by supporters of other competing BCH implementations (such […]

post-image

08 Nov 2018

Bitcoin Cash (Bch) November 15, 2018 Protocol Upgrade – Notice to Cryptocurrency Exchanges & Bitcoin Cash Wallet Operators

On November 15, 2018, the Bitcoin Cash (BCH) network will undergo a scheduled protocol upgrade. This protocol upgrade has been different to previous upgrades due to differences in opinion as how best to evolve the Bitcoin Cash network to continue to meet the demands of enterprises and consumers who support Bitcoin Cash. We have developed […]

post-image

16 Aug 2018

BSV Full Node Implementation Launched to Fully Restore Original Bitcoin Protocol

nChain, the global leader in research and development of blockchain technologies, announces the creation of BSV, a new full node implementation of the original Bitcoin protocol now restored in the form of Bitcoin Cash (BCH).

Ready to add blockchain solutions to your business or government agency?

Send us a message and let us know about your needs. Please contact

Join Our Community

Stay updated with the BSV Blockchain's latest news and events.
Subscribe to our weekly newsletter.