Through a post on his Github Gist, Gavin Andresen shared his thoughts on how to store the UTXO (Unspent Transaction Output) as a bit-vector or array into user’s wallets, effectively reducing the amount of data necessary for initial block downloads. As one of the developers entrusted with Bitcoin’s codebase permissions, Andresen’s fresh concept could help radicalize how transaction sets are stored in the Bitcoin Cash (BCH) network.
The idea explores the minimal limit with which a fully validating node could store transaction data. Whenever a new node is started, it has to sync its broadcast with the initial block. Instead of this, Andresen proposes shifting the time of broadcasting the full transaction data to the new transaction announcement.
The network protocol will ensure that wallets broadcast transactions as the transaction’s data, with confirmed inputs placing a Merkle path for the previous transaction, connecting to the root in the block header.
By allowing every node in the new network to store a bit-vector for every block, the new protocol reduces mempool congestion through compression.
While Andresen calls his ideas “half-baked thoughts,” the possibility of compressing gigabyte-sized blocks for the BCH network is a welcome thought, especially given the recent rise in BCH adoptions. If this idea gets full implementation after review, the BCH network will become better-equipped to handle the surge in BCH transactions due to popular user interest.
Andresen notes the current handling capabilities of typical node operators:
“This isn’t a problem today (the UTXO set easily fits in the RAM of an inexpensive server-class machine), but might eventually be at very large transaction volumes,” adding that the best solution to anticipate congestion is to allow “node operators hand-pick one or more semi-trusted nodes to get fast boot-strapping.”
According to Andresen, this new protocol can be easily adopted and implemented by full-node operators because they have the right incentives to reliably serve correct UTXO bit-vectors.
In a tweet last November, Andresen declared that Bitcoin Cash was exactly what he started working on in 2010, calling it “a store of value AND means of exchange.”
The developer also posed this thought challenge to his Github Gist followers:
“To ponder: is speeding up initial block download and saving memory at the cost of 2-3 times the bandwidth for new transaction announcements the right tradeoff? A gigabit per second connection is 75 gigabytes every ten minutes, so plenty of bandwidth for a few gigabytes of transaction data that translates into a gigabyte-sized block.”
These hints into Andresen’s increased involvement with development for the BCH network has given the Bitcoin Cash community a fresh and exciting start for 2018. Future proposals and contributions from a dev like Andresen who’s been there since the beginning will always be warmly received by the growing community.