Coming to SVNode in 2023: adjusted Tx eviction and fee logic

Coming to SVNode in 2023

Bitcoin Association has become increasingly aware of negative experiences while using mAPI to broadcast transactions. In this scenario the mAPI instance responds “accepted”, but the tx never actually gets mined. This is due to the node software deciding independently to silently evict the tx from its mempool.

While it’s understandable that developers would point the finger at mAPI, its failures in this regard are merely a symptom of legacy code that has become irrelevant for Bitcoin’s Big Block era.

The backstory of Bitcoin’s transaction eviction and fee logic

The logic for prioritising and evicting transactions within SVNode has been inherited from the Bitcoin Core developers who thought that a hard block size limit was imperative. Limiting block size caused a congestion problem which the transaction priority logic attempts to then solve. Given that limiting block size is an erroneous premise, this logic has become not only redundant but somewhat of a hindrance to user experience.

Supporting developers by proactively professionalising Bitcoin’s code

In BSV, the block size is unbounded at the protocol level, and the network is already processing 4GB blocks. Bitcoin builders are creating businesses that push the limits of existing infrastructure as well as inventing entirely new use cases that depend on the scale that BSV promises.

The transaction priority logic has been causing unnecessary bottlenecks in node performance and unpredictable eviction of valid transactions. This has been a negative experience for application developers, and business owners who then have to complicate their architecture due to this uncertainty. The SV Node team has been working with BSV miners to carefully identify and remove the offending code, aiming to release improved logic as part of version 1.0.14.

Problem-solving transaction chains

In a future article, we’ll be delving into this topic in more detail:

  • The use cases of transaction chains
  • Identifying the things people are doing and their reasoning for it
  • Recommended solutions and example implementations to show how it is better and how it can be used