|
| 1 | +--- |
| 2 | +title: 'Bitcoin Optech Newsletter #181' |
| 3 | +permalink: /en/newsletters/2022/01/05/ |
| 4 | +name: 2022-01-05-newsletter |
| 5 | +slug: 2022-01-05-newsletter |
| 6 | +type: newsletter |
| 7 | +layout: newsletter |
| 8 | +lang: en |
| 9 | +--- |
| 10 | +This week's newsletter describes an alternative proposal to slowly phase |
| 11 | +in full replace-by-fee and announces a series of meetings to review the |
| 12 | +proposed `OP_CHECKTEMPLATEVERIFY` soft fork. Also included are our |
| 13 | +regular sections with announcements of releases and release candidates |
| 14 | +and summaries of notable changes to popular Bitcoin infrastructure |
| 15 | +projects. |
| 16 | + |
| 17 | +## News |
| 18 | + |
| 19 | +- **Brief full RBF, then opt-in RBF:** Jeremy Rubin [replied][rubin rbf] |
| 20 | + to an older Bitcoin-Dev mailing list thread described in [Newsletter |
| 21 | + #154][news154 rbf] about enabling full [replace by fee][topic rbf] |
| 22 | + (RBF) in Bitcoin Core. Currently, any transaction that signals |
| 23 | + according to [BIP125][] can be replaced by a higher-feerate |
| 24 | + alternative (with some restrictions). The previous proposal was to |
| 25 | + eventually allow any transaction to be replaced ("full RBF")---not just |
| 26 | + those that set the opt-in signal that replaceability is wanted. Some merchants have |
| 27 | + indicated that they prefer that relay nodes make replaceability as hard |
| 28 | + as reasonably possible, at least optionally, so that they can |
| 29 | + immediately accept unconfirmed transactions in exchange for low-cost |
| 30 | + goods and services. |
| 31 | + |
| 32 | + Rubin's alternative still encourages moving to full RBF, but |
| 33 | + suggests starting by allowing full RBF of any transaction for *n* |
| 34 | + seconds after it is first received by a node. After *n* seconds, |
| 35 | + the BIP125 opt-in flag is honored the same as now. This can allow |
| 36 | + merchants to accept unconfirmed transactions like they do now after |
| 37 | + those *n* seconds have elapsed. More importantly, it may allow |
| 38 | + protocols that depend on replaceability for security to not have to |
| 39 | + worry about non-opt-in transactions as long as a protocol node or |
| 40 | + watchtower can reasonably respond within a fraction of *n* seconds |
| 41 | + of first learning of a transaction. |
| 42 | + |
| 43 | +- **BIP119 CTV review workshops:** Jeremy Rubin [announced][rubin |
| 44 | + ctv-review] on the Bitcoin-Dev mailing list that he will be hosting |
| 45 | + recurring meetings to discuss [BIP119][]'s specification of |
| 46 | + [OP_CHECKTEMPLATEVERIFY][topic op_checktemplateverify], including how |
| 47 | + it could be deployed on the network. The first meeting will be held |
| 48 | + Tuesday, January 11th, at 20:00 UTC in [##ctv-bip-review][] on |
| 49 | + Libera.Chat. Subsequent meetings will be held at the same time every |
| 50 | + two weeks indefinitely. |
| 51 | + |
| 52 | +## Releases and release candidates |
| 53 | + |
| 54 | +*New releases and release candidates for popular Bitcoin infrastructure |
| 55 | +projects. Please consider upgrading to new releases or helping to test |
| 56 | +release candidates.* |
| 57 | + |
| 58 | +- [Rust-Lightning 0.0.104][] is the latest release of this LN node |
| 59 | + library containing several API improvements. |
| 60 | + |
| 61 | +## Notable code and documentation changes |
| 62 | + |
| 63 | +*Notable changes this week in [Bitcoin Core][bitcoin core repo], |
| 64 | +[C-Lightning][c-lightning repo], [Eclair][eclair repo], [LND][lnd repo], |
| 65 | +[Rust-Lightning][rust-lightning repo], [libsecp256k1][libsecp256k1 |
| 66 | +repo], [Hardware Wallet Interface (HWI)][hwi repo], |
| 67 | +[Rust Bitcoin][rust bitcoin repo], [BTCPay Server][btcpay server repo], |
| 68 | +[BDK][bdk repo], [Bitcoin Improvement Proposals (BIPs)][bips repo], and |
| 69 | +[Lightning BOLTs][bolts repo].* |
| 70 | + |
| 71 | +- [Bitcoin Core #23789][] wallet: Strictly match tx change type to improve privacy FIXME:glozow maybe mention https://bitcoinops.org/en/preparing-for-taproot/#output-script-matching or https://bitcoinops.org/en/newsletters/2021/06/30/#bitcoin-core-22154 |
| 72 | + |
| 73 | +- [Bitcoin Core #23711][] documents several aspects of Bitcoin Core's |
| 74 | + *policy* for accepting and relaying unconfirmed transactions. The |
| 75 | + documentation may be especially useful for authors of wallets and |
| 76 | + contract protocols who need to depend on acceptance and relay |
| 77 | + behavior. |
| 78 | + |
| 79 | +- [Bitcoin Core #17631][] adds a new REST endpoint that provides |
| 80 | + [compact block filters][topic compact block filters] on nodes that |
| 81 | + have filters and REST endpoints enabled. |
| 82 | + |
| 83 | +- [Bitcoin Core #22674][] adds the logic for validating a package of |
| 84 | + transactions and testing it against the node's transaction relay |
| 85 | + policy. A package in this case is one child transaction and all of |
| 86 | + its unconfirmed parents. Follow-up PRs are expected to extend |
| 87 | + the validation logic by adding support for [CPFP][topic cpfp] and |
| 88 | + [RBF][topic rbf]. |
| 89 | + |
| 90 | + In a later follow-up PR, a method may be added to allow peers to |
| 91 | + submit packages of transactions to the local node which will be |
| 92 | + validated using the now-available logic. That will enable [package |
| 93 | + relay][topic package relay], enhancing the reliability and |
| 94 | + security of contract protocols such as LN. The PR also adds |
| 95 | + [documentation][package doc] about the package validation rules. |
| 96 | + |
| 97 | +[package doc]: https://github.com/glozow/bitcoin/blob/046e8ff264be6b888c0f9a9d822e32aa74e19b78/doc/policy/packages.md |
| 98 | + |
| 99 | +- [Bitcoin Core #23718][] adds support for retaining and displaying any |
| 100 | + hashes and preimages contained in a [PSBT][topic psbt]. PSBTs used |
| 101 | + for [HTLCs][topic htlc] or other contract protocol primitives may |
| 102 | + contain a hash whose preimage is known by one of the PSBT *updaters* |
| 103 | + or *signers*. That preimage may need to be provided in order to |
| 104 | + generate the desired final transaction. This PR brings Bitcoin Core |
| 105 | + closer to being able to effectively participate in the creation, |
| 106 | + management, and finalization of such transactions. Additional |
| 107 | + improvements are expected if Bitcoin Core adopts support for |
| 108 | + [miniscript][topic miniscript]. |
| 109 | + |
| 110 | +- [Bitcoin Core #17034][] adds support for version 2 PSBTs (see |
| 111 | + [Newsletter #128][news128 psbt]) and additional PSBT fields, including |
| 112 | + the fields for proprietary PSBT extensions described in [Newsletter |
| 113 | + #72][news72 psbt]. Bitcoin Core doesn't understand the proprietary |
| 114 | + extensions but will now preserve them in PSBTs it processes and |
| 115 | + display them in the results of the `decodepsbt` RPC. |
| 116 | + |
| 117 | +- [Bitcoin Core #23113][] updates the `createmultisig` and `addmultisig` |
| 118 | + RPCs to include a warning field if the user requests the creation of a |
| 119 | + segwit multisig address using an [uncompressed public key][]. Since |
| 120 | + the original implementation of segwit, Bitcoin Core has defaulted to |
| 121 | + not relaying or mining unconfirmed transactions that spend segwit |
| 122 | + inputs with uncompressed public keys. That means any user who creates |
| 123 | + an address using an uncompressed key may not be able to spend any |
| 124 | + funds received to that address. For that reason, these RPCs never |
| 125 | + create [bech32][topic bech32] addresses for uncompressed keys---they |
| 126 | + instead create legacy (base58check) addresses. The new warning field |
| 127 | + should help users in this situation understand why they're receiving a |
| 128 | + different address type than what they requested. |
| 129 | + |
| 130 | +- [Bitcoin Core GUI #459][] updates the generate-address dialog with the |
| 131 | + ability to create bech32m addresses in addition to older address |
| 132 | + types. |
| 133 | + |
| 134 | + {:.center} |
| 135 | +  |
| 136 | + |
| 137 | +- [Eclair #2090][] Rate limit onion messages FIXME:dongcarl |
| 138 | + |
| 139 | +- [Eclair #2104][] adds a log message that warns the local node operator |
| 140 | + when their immediately onchain spendable balance has dropped below the |
| 141 | + estimated amount necessary to use [CPFP fee bumping][topic cpfp] with |
| 142 | + [anchor outputs][topic anchor outputs] to close their channels in a |
| 143 | + timely manner. LN developers or operators choosing their own |
| 144 | + reserve values may wish to compare the estimates Eclair has made to |
| 145 | + [those][news113 lnd4908] used [in][news149 lnd5274] LND. |
| 146 | + |
| 147 | +- [Eclair #2099][] adds an `onion-messages` configuration option that |
| 148 | + can be set to never relay [onion messages][topic onion messages] (but |
| 149 | + still allow the node to send or receive messages), relay all messages |
| 150 | + (even those that require opening a connection to a new peer), or only |
| 151 | + relay messages over existing connections. |
| 152 | + |
| 153 | +- [Libsecp256k1 #964][] Add release-process.md FIXME:bitschmidty |
| 154 | + |
| 155 | +- [Rust Bitcoin #681][] adds support for [BIP371][]'s additional |
| 156 | + [PSBT][topic psbt] fields for [taproot][topic taproot]. |
| 157 | + |
| 158 | +- [Rust-Lightning #1177][] drops the need for Rust-Lightning itself to |
| 159 | + store information about payments the higher-level wallet application |
| 160 | + wants to receive. Instead, the essential information about the |
| 161 | + payment is encrypted and then encoded into the [payment secret][topic |
| 162 | + payment secrets]. When a payment is received, the encrypted payment |
| 163 | + secret is decrypted and the plaintext information is used to derive |
| 164 | + the [payment preimage][] used to satisfy the [payment hash][] used to |
| 165 | + secure the payment's [HTLC][topic htlc]. |
| 166 | + |
| 167 | + This is a simplified implementation of the idea described in |
| 168 | + [Newsletter #168][news168 stateless]. Other LN implementations |
| 169 | + may store information about an invoice (e.g. an arbitrary order |
| 170 | + identifier provided by a merchant's shopkeeping software), but |
| 171 | + Rust-Lightning sidesteps that as it is a library that expects to be |
| 172 | + integrated directly into a higher-level app and so allows the |
| 173 | + higher-level application to manage the details of its own payment |
| 174 | + requests. |
| 175 | + |
| 176 | +- [HWI #545][], [#546][HWI #546], and [#547][HWI #547] add support for |
| 177 | + [taproot][topic taproot] by enabling support for `tr()` |
| 178 | + [descriptors][topic descriptors], [BIP371][] support for taproot |
| 179 | + [PSBT][topic psbt] fields, and support for [bech32m][topic bech32] |
| 180 | + addresses for taproot scripts when available in the underlying hardware |
| 181 | + signing devices. Note, as of these PRs, HWI does not fully support |
| 182 | + some signing device firmware that does support taproot, so taproot |
| 183 | + support is not yet enabled on those devices. |
| 184 | + |
| 185 | +- [BIPs #1126][] adds [BIP52][] for *Optical Proof of Work* (OPoW), a |
| 186 | + proposed hard fork change to Bitcoin that is claimed will change the |
| 187 | + division of costs between mining equipment (capital expenditures) and |
| 188 | + electrical and operation costs (operational expenditures). The idea |
| 189 | + was [previously discussed][opow ml] on the Bitcoin-Dev mailing list, |
| 190 | + where it had both supporters and detractors. |
| 191 | + |
| 192 | +{% include references.md %} |
| 193 | +{% include linkers/issues.md issues="23789,23711,17631,22674,23718,17034,23113,459,2090,2104,2099,964,681,1177,545,546,547,1126,912" %} |
| 194 | +[opow ml]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-May/018951.html |
| 195 | +[##ctv-bip-review]: https://web.libera.chat/?channels=##ctv-bip-review |
| 196 | +[rust-lightning 0.0.104]: https://github.com/lightningdevkit/rust-lightning/releases/tag/v0.0.104 |
| 197 | +[rubin rbf]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-December/019696.html |
| 198 | +[rubin ctv-review]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-December/019719.html |
| 199 | +[news154 rbf]: /en/newsletters/2021/06/23/#allowing-transaction-replacement-by-default |
| 200 | +[news128 psbt]: /en/newsletters/2020/12/16/#new-psbt-version-proposed |
| 201 | +[news72 psbt]: /en/newsletters/2019/11/13/#bips-849 |
| 202 | +[uncompressed public key]: https://btcinformation.org/en/developer-guide#public-key-formats |
| 203 | +[payment preimage]: https://github.com/lightning/bolts/blob/master/00-introduction.md#payment-preimage |
| 204 | +[payment hash]: https://github.com/lightning/bolts/blob/master/00-introduction.md#Payment-hash |
| 205 | +[news168 stateless]: /en/newsletters/2021/09/29/#stateless-ln-invoice-generation |
| 206 | +[news113 lnd4908]: /en/newsletters/2021/01/27/#lnd-4908 |
| 207 | +[news149 lnd5274]: /en/newsletters/2021/05/19/#lnd-5274 |
0 commit comments