The Bitcoin Optech newsletter provides readers with a high-level summary of the most important technical news happening in Bitcoin, along with resources to help them learn more. To help our readers stay up to date with Bitcoin, we’re republishing the latest edition of this newsletter below. Remember to subscribe to receive this content straight to your inbox.
This week’s newsletter describes a proposal to allow for the replacement of blanket transactions with fees and includes the first post in a new weekly series on getting ready for rootstock. Also included are our regular sections describing updates to customers and services, new releases and release candidates, and changes observed in popular Bitcoin infrastructure projects.
- Allow transactions to be overwritten by default: Almost all full Bitcoin nodes today are believed to be running BIP125 Subscription “Redeem at Fee” (RBF), which allows unconfirmed transactions in node pools to be replaced with alternative versions that pay a higher fee – but only if the transaction originator set a flag in the original transaction. This enabling behavior has been suggested as a compromise between people who want to allow transaction substitution, such as paying a fee or Additional Payment Collection, and people who objected that allowing substitution simplifies construction tools that defraud merchants who accept uncertain transactions as final.
Over five years later, it appears that very few merchants accept unconfirmed transactions as final, and it’s unclear how many of those check the BIP125 opt-in signal and treat those transactions differently. If no one relies on BIP125 signals, allowing each transaction to be overwritten can provide some advantages, such as:
- Simplify analysis for predefined transaction protocols (eg LN, lockers) as ideas for using RBF charge impingement need to account for the ability of the harmful counterparty to prevent tuning of the BIP125 signal. If every transaction could be exchanged, this wouldn’t be a concern.
- Reduce the chances of transaction parsing because transactions that share an RBF look different on the chain than transactions that don’t. With most wallets continually opting in or not opting out, this provides evidence that monitoring companies could use it in their attempts to determine who owns which bitcoins. If each transaction is replaceable, then there is no need to adjust the BIP125 signal.
- This week, Antoine Riard Spread A proposal for the Bitcoin-Dev mailing list to eventually change the Bitcoin Core token to allow RBF for all transactions regardless of whether or not they set the BIP125 subscription flag. The idea was also discussed in the first transaction migration workshop Meeting. Several participants in the meeting mentioned Bitcoin Core PR # 10823 As an alternative approach – it allows any transaction to be overwritten, but only after the transaction has spent a certain amount of time in the node mempool (originally suggested as 6 hours; later suggested as 72 hours).
Both Riard’s email and meeting participants note that any proposal to replace transactions without the BIP125 opt-in signal requires feedback from merchants currently based on BIP125’s behaviour. Optech encourages any of these merchants to respond to this thread.
Changes to Services and Customer Programs
In this monthly feature, we highlight interesting updates to Bitcoin wallets and services.
Preparing for taproot #1: bech32 Submit support
Part one in a weekly series on how developers and service providers can prepare for the upcoming activation of root master at block height 709632.
Starting with block 709632, expected in November, Bitcoin users will be able to securely receive payments to master root addresses. Given user enthusiasm for taproot and the five months in which wallet developers have to implement support for it, Optech expects there will be many popular wallets that will allow its users to generate headlines as soon as possible.
This means that any wallet or other service that sends bitcoins to user-supplied addresses must be able to send to root addresses via block 709632 or risk confusing and frustrating its users. Pay to TapRoot (P2TR) addresses you use bech32m as specified in BIP 350, which is slightly different from BIP173bech32 algorithm used for segwit v0 addresses P2WPKH and P2WSH. Bech32m uses the constant 0x2bc830a3 instead of bech32’s 0x01 in the checksum function.
Changing this single constant provides the ability to check bech32m’s checksums, but the code still needs to use the original constant for the current P2WPKH and P2WSH addresses. The code needs to decode the address without checking the checksum, determine whether it is using v0 segwit (bech32) or v1 + segwit (bech32m), and then validate the checksum using the appropriate constant. For examples, see Public relations Updated bech32 reference implementations for C, C++, JS and Python. If your code already uses reference libraries, it can be updated to the latest code from this repository, although note that some APIs have minor changes. The BIP350 and reference applications provide test vectors that all bech32m applications should use.
although Receiving Payments to root addresses will not be secure until block 709632, send Payments should not cause any problems for the sender. Bitcoin Core has supported rooted output mining and paging transactions since version 0.19 (released November 2019). Optech encourages wallet and service developers to implement support for pushing 32 million root addresses now rather than waiting until after the root master is activated.
Releases and releases candidates
New Releases and Candidate Releases for Popular Bitcoin Infrastructure Projects. Please consider upgrading to new releases or help test release candidates.
- LND 0.13.0 Beta It is a new major release that improves tight management by making it Anchor outputs Default Commit Transaction Format, adds support for using a full-trimmed Bitcoin node, and allows receiving and sending payments using Atomic MultiPath (AMP), and increases LND’s PSBT capabilities, among many other improvements and bug fixes.
Notable changes to code and documentation
Notable changes this week in Bitcoin CoreAnd the C- lightningAnd the EclairAnd the LNDAnd the rust and lightningAnd the libsecp256k1And the Hardware Wallet Interface (HWI)And the rust bitcoinAnd the BTCPay serverAnd the Bitcoin Improvement Proposals (BIPs), And the lightning bolt.
- Bitcoin Core #21365 Adds wallet ability to create signatures for root Expends – Both the keypath is spent using only the public key P2TR and the script path is spent using tab script. The wallet can also sign up for root spending PSBTs, but only if the wallet already contains all the keypath or script path information you need. Somewhat related compact PR # 22156 It is only allowed to import keypath and script path information after the root has been activated (block 709632 on the main network, but on test networks where the master root is already enabled, import can now be used).
- Bitcoin Core #22144 It randomly arranges the peer service in the message processing chain, and is responsible for analyzing and processing P2P messages from peers and sending messages to these peers. Previously, a message processing thread served each round robin peer in the order in which communications with those peers were first established. PR changes this logic so that the order of the peer service is randomized on each iteration of the message processing loop. Peers are still serviced at the same frequency (each peer is served once per iteration), but any vulnerabilities or exploits that depend on a deterministic arrangement of peer service are avoided.
- Bitcoin Core #21261 It is easy to extend intercom protection to more networks and then use this framework to add I2P to the list of protected networks. Diversity protection (often called evacuation protection) allows a few peers with desirable characteristics to stay connected when Bitcoin Core trims high-latency connections. Maintaining some communication with peers on anonymity networks is highly desirable because it allows transaction originators to use these networks to anonymize their network and because the ability to receive bans over those networks in addition to the normal IP can prevent some types of Eclipse attacks.
- Bitcoin Rust #601 Adds support for analysis bech32m addresses and requires v1 encryption + native segwit addresses using bech32m and not bech32.
- BTCPay server number 2450 makes obstetrics payjoin– Virtual compatible billing when the user chooses to use a hot wallet to receive payments. The button on the wallet creation screen allows the user to opt out of this default setting.
- BTCPay server #2559 It adds a separate screen to guide the user through his choices of how to sign the transactions he spends from his wallet. For hot wallets, only the server can sign, but for wallets where the keys are stored elsewhere, an attractive and useful GUI now guides the user through signing options such as entering their retrieval memory, using a hardware signing device, or creating a PSBT for Transfer to a signature wallet.
Excuse me Subscribe to the Bitcoin Optech Newsletter Direct to receive this content straight to your inbox every month.