This has been a banner week for Bitcoin Core. Days after the highly publicized Bitcoin Roundtable Consensus, Version 0.12.0 featuring libsecp256k1 was released today in accordance with the Bitcoin Core release schedule. Touted as “the biggest one yet” on the Bitcoin Core website, this major release includes 22 improvements. Here are some of the highlights:
- A new ECDSA signature validation library called libsecp256k1 has been developed to replace OpenSSL, thereby improving security. With this integration, the attack surface for signature validation code has been greatly reduced. Validation is also up to 7 times faster on 64-bit architecture, and raw reindexing and block validation times are cut in half.
- Node users now have the ability to set soft limits on how much data they upload and serve to their peers.
- An integration with ZeroMQ alers services to the arrival of new blocks and incoming transactions.
- Nodes now have default limitations on the size of their memory pools and the operator can configure this to the amount of memory they want to dedicate to the mempool. When the memory limit is reached, new transactions can still be accepted, while transactions with the lowest fees will be dropped from the mempool, thereby reducing crash incidents.
- Opt-in Replace-by-Fee gives transaction senders the option to configure their transaction fees. Senders can start with a low fee with the option to increase it until it gets accepted. This allows senders to both minimize the fees they pay and maximize the chance that their transactions will be included in a block.
- Nodes will no longer be guaranteed to relay a certain number of free transactions and will now be able to decide more freely which transactions to relay.
- Nodes will now automatically create Tor hidden services and connect to other nodes through the Tor network upon detection. Manual configuration is no longer required.
- For users who have limitations on storage capacity and still want to use a wallet with a full node, they now have the ability to run their wallet in pruned mode. Users will be able to run a full node while only storing around 2GB of data, a massive reduction from the previously-required 60GB.
- Consensus-critical calculations pertaining to individual transactions are no longer performed all at once during block assembly, but are pre-calculated on all transactions as soon as they hit the memory pool and then cached. Inputs of all the transactions in one’s memory pool no longer have to be pulled into the cache all at once, leading to a sizeable reduction in memory requirements.
Contributing developers on these updates include Pieter Wuille, Greg Maxwell, Cory Fields Jonas Schnelli, Matt Corallo, Suhas Daftuar, Peter Todd, Wladimir van der Laan, Johnathan Corgan and Adam Weiss.
Version 0.12.0 is available on the Core website.