|
| 1 | +--- |
| 2 | +title: 'Bitcoin Optech Newsletter #347' |
| 3 | +permalink: /en/newsletters/2025/03/28/ |
| 4 | +name: 2025-03-28-newsletter |
| 5 | +slug: 2025-03-28-newsletter |
| 6 | +type: newsletter |
| 7 | +layout: newsletter |
| 8 | +lang: en |
| 9 | +--- |
| 10 | +This week's newsletter describes a proposal to allow LN to support |
| 11 | +upfront and hold fees based on burnable outputs, summarizes discussion |
| 12 | +about testnets 3 and 4 (including a hard fork proposal), and announces a |
| 13 | +plan to begin relaying certain transactions containing taproot annexes. |
| 14 | +Also included are our regular sections summarizing selected questions |
| 15 | +and answers from the Bitcoin Stack Exchange, announcing new releases and |
| 16 | +release candidates, and describing notable changes to popular Bitcoin |
| 17 | +infrastructure projects. |
| 18 | + |
| 19 | +## News |
| 20 | + |
| 21 | +- **LN upfront and hold fees using burnable outputs:** John Law |
| 22 | + [posted][law fees] to Delving Bitcoin the summary of a [paper][law fee |
| 23 | + paper] he's written about a protocol nodes can use to charge two |
| 24 | + additional types of fees for forwarding payments. An _upfront fee_ |
| 25 | + would be paid by the ultimate spender to compensate forwarding nodes |
| 26 | + for temporarily using an _HTLC slot_ (one of the limited number of |
| 27 | + concurrent allocations available in a channel for enforcing |
| 28 | + [HTLCs][topic htlc]). A _hold fee_ would be paid by any node that |
| 29 | + delays the settlement of an HTLC; the amount of this fee would scale with |
| 30 | + the length of the delay up until the maximum amount was reached at the |
| 31 | + time the HTLC expired. His post and paper cite several prior |
| 32 | + discussions about upfront and hold fees, such as those summarized in |
| 33 | + Newsletters [#86][news86 reverse upfront], [#119][news119 trusted |
| 34 | + upfront], [#120][news120 upfront], [#122][news122 bi-directional], |
| 35 | + [#136][news136 more fee], and [#263][news263 dos philosophy]. |
| 36 | + |
| 37 | + The proposed protocol builds on the ideas of Law's _offchain payment |
| 38 | + resolution_ (OPR) protocol (see [Newsletter #329][news329 opr]), which |
| 39 | + has channel co-owners each allocate 100% of the amount of funds at stake |
| 40 | + (so 200% total) to a _burnable output_ that either of them can |
| 41 | + unilaterally destroy. The funds at stake in this case are the upfront |
| 42 | + fee plus the maximum hold fees. If both parties are later satisfied |
| 43 | + that the protocol has been followed correctly, e.g. that all fees were |
| 44 | + paid correctly, they remove the burnable output from future versions |
| 45 | + of their offchain transactions. If either party is unsatisfied, they |
| 46 | + close the channel and destroy the burnable funds. Although the |
| 47 | + unsatisfied party loses funds in this case, so does the other party, |
| 48 | + preventing either party from benefiting from violating the protocol. |
| 49 | + |
| 50 | + Law describes the protocol as a solution for [channel jamming |
| 51 | + attacks][topic channel jamming attacks], a weakness in LN first |
| 52 | + described [almost a decade ago][russell loop] that allows an attacker |
| 53 | + to almost costlessly prevent other nodes from using some or all of |
| 54 | + their funds. In a [reply][harding fee], it was noted that the |
| 55 | + addition of hold fees might make [hold invoices][topic hold invoices] |
| 56 | + more sustainable for the network. |
| 57 | + |
| 58 | +- **Discussion of testnets 3 and 4:** Sjors Provoost [posted][provoost |
| 59 | + testnet3] to the Bitcoin-Dev mailing list to ask whether anyone was |
| 60 | + still using testnet3 now that testnet4 has been available for about |
| 61 | + six months (see [Newsletter #315][news315 testnet4]). Andres |
| 62 | + Schildbach [replied][schildbach testnet3] with an intention to |
| 63 | + continue using testnet3 in the testnet version of his popular wallet |
| 64 | + for at least a year. Olaoluwa Osuntokun [noted][osuntokun testnet3] |
| 65 | + that testnet3 has recently been much more stable than testnet4. He |
| 66 | + illustrated his point by including screenshots of the |
| 67 | + block trees for both testnets taken from the [Fork.Observer][] |
| 68 | + website. Below find our own screenshot showing the state of testnet4 |
| 69 | + at the time of writing: |
| 70 | + |
| 71 | +  |
| 72 | + |
| 73 | + After Osuntokun's post, Antoine Poinsot started a [separate |
| 74 | + thread][poinsot testnet4] to focus on the testnet4 issues. He argues |
| 75 | + that the testnet4 problems are a consequence of the difficulty reset |
| 76 | + rule. This rule, which only applies to testnet, allows a block to be |
| 77 | + valid with minimum difficulty if its header time is 20 minutes later |
| 78 | + than its parent block. Provoost goes into more [detail][provoost |
| 79 | + testnet4] about the problem. Poinsot proposes a testnet4 hard fork |
| 80 | + to remove the rule. Mark Erhardt [suggests][erhardt testnet4] a date |
| 81 | + for the fork: 2026-01-08. |
| 82 | + |
| 83 | +- **Plan to relay certain taproot annexes:** Peter Todd [announced][todd |
| 84 | + annex] to the Bitcoin-Dev mailing list his plan to update his Bitcoin |
| 85 | + Core-based node, Libre Relay, to begin relaying transactions |
| 86 | + containing taproot [annexes][topic annex] if they follow particular |
| 87 | + rules: |
| 88 | + |
| 89 | + - _0x00 prefix:_ "all non-empty annexes start with the byte 0x00, to |
| 90 | + distinguish them from [future] consensus-relevant annexes." |
| 91 | + |
| 92 | + - _All-or-nothing:_ "All inputs have an annex. This ensures that use |
| 93 | + of the annex is opt-in, preventing [transaction pinning][topic |
| 94 | + transaction pinning] attacks in multi-party protocols." |
| 95 | + |
| 96 | + The plan is based on a 2023 [pull request][bitcoin core #27926] by |
| 97 | + Joost Jager, which was itself based on a prior discussion started by |
| 98 | + Jager (see [Newsletter #255][news255 annex]). In Jager's words, the |
| 99 | + previous pull request also "limit[ed] the maximum size of unstructured |
| 100 | + annex data to 256 bytes [...] somewhat protect[ing] participants in a |
| 101 | + multi-party transaction that uses the annex against annex inflation." |
| 102 | + Todd's version does not include this rule; he believes "the |
| 103 | + requirement to opt-in to annex usage should be sufficient". If it's |
| 104 | + not, he describes an additional relay change that could prevent |
| 105 | + counterparty pinning. |
| 106 | + |
| 107 | + As of this writing, nobody in the current mailing list thread has |
| 108 | + described how they expect the annex to be used. |
| 109 | + |
| 110 | +## Selected Q&A from Bitcoin Stack Exchange |
| 111 | + |
| 112 | +*[Bitcoin Stack Exchange][bitcoin.se] is one of the first places Optech |
| 113 | +contributors look for answers to their questions---or when we have a |
| 114 | +few spare moments to help curious or confused users. In |
| 115 | +this monthly feature, we highlight some of the top-voted questions and |
| 116 | +answers posted since our last update.* |
| 117 | + |
| 118 | +{% comment %}<!-- https://bitcoin.stackexchange.com/search?tab=votes&q=created%3a1m..%20is%3aanswer -->{% endcomment %} |
| 119 | +{% assign bse = "https://bitcoin.stackexchange.com/a/" %} |
| 120 | + |
| 121 | +FIXME:bitschmidty |
| 122 | + |
| 123 | +## Releases and release candidates |
| 124 | + |
| 125 | +_New releases and release candidates for popular Bitcoin infrastructure |
| 126 | +projects. Please consider upgrading to new releases or helping to test |
| 127 | +release candidates._ |
| 128 | + |
| 129 | +- [Bitcoin Core 29.0rc2][] is a release candidate for the next major |
| 130 | + version of the network's predominate full node. Please see the |
| 131 | + [version 29 testing guide][bcc29 testing guide]. |
| 132 | + |
| 133 | +- [LND 0.19.0-beta.rc1][] is a release candidate for this popular LN |
| 134 | + node. One of the major improvements that could probably use testing |
| 135 | + is the new RBF-based fee bumping for cooperative closes described |
| 136 | + below in the notable code changes section. |
| 137 | + |
| 138 | +<!-- FIXME:harding to update Thursday --> |
| 139 | + |
| 140 | +## Notable code and documentation changes |
| 141 | + |
| 142 | +_Notable recent changes in [Bitcoin Core][bitcoin core repo], [Core |
| 143 | +Lightning][core lightning repo], [Eclair][eclair repo], [LDK][ldk repo], |
| 144 | +[LND][lnd repo], [libsecp256k1][libsecp256k1 repo], [Hardware Wallet |
| 145 | +Interface (HWI)][hwi repo], [Rust Bitcoin][rust bitcoin repo], [BTCPay |
| 146 | +Server][btcpay server repo], [BDK][bdk repo], [Bitcoin Improvement |
| 147 | +Proposals (BIPs)][bips repo], [Lightning BOLTs][bolts repo], |
| 148 | +[Lightning BLIPs][blips repo], [Bitcoin Inquisition][bitcoin inquisition |
| 149 | +repo], and [BINANAs][binana repo]._ |
| 150 | + |
| 151 | +- [Bitcoin Core #31603][] descriptor: check whitespace in keys within fragments |
| 152 | + |
| 153 | +- [Eclair #3044][] Remove amount-based confirmation scaling |
| 154 | + |
| 155 | +- [Eclair #3026][] Support p2tr bitcoin wallet |
| 156 | + |
| 157 | +- [LDK #3649][] Add BOLT12 support to bLIP-51 / LSPS1 |
| 158 | + |
| 159 | +- [LDK #3665][] lightning-invoice: explicitly enforce a 7089 B max length on BOLT11 invoice deser |
| 160 | + |
| 161 | +- [LND #9610][] multi: integrate rbf changes from staging branch |
| 162 | + |
| 163 | +- [BIPs #1792][] BIP119 language overhaul & cleanup |
| 164 | + |
| 165 | +- [BIPs #1782][] BIP94: reformat specification section for clarity and readability |
| 166 | + |
| 167 | +{% include snippets/recap-ad.md when="2025-04-01 15:30" %} |
| 168 | +{% include references.md %} |
| 169 | +{% include linkers/issues.md v=2 issues="31603,3044,3026,3649,3665,9610,1792,1782,27926,8453,9559,9575,9568,1205" %} |
| 170 | +[bitcoin core 29.0rc2]: https://bitcoincore.org/bin/bitcoin-core-29.0/ |
| 171 | +[bcc29 testing guide]: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/29.0-Release-Candidate-Testing-Guide |
| 172 | +[lnd 0.19.0-beta.rc1]: https://github.com/lightningnetwork/lnd/releases/tag/v0.19.0-beta.rc1 |
| 173 | +[news255 annex]: /en/newsletters/2023/06/14/#discussion-about-the-taproot-annex |
| 174 | +[news315 testnet4]: /en/newsletters/2024/08/09/#bitcoin-core-29775 |
| 175 | +[fork.observer]: https://fork.observer/ |
| 176 | +[law fees]: https://delvingbitcoin.org/t/fee-based-spam-prevention-for-lightning/1524/ |
| 177 | +[law fee paper]: https://github.com/JohnLaw2/ln-spam-prevention |
| 178 | +[news329 opr]: /en/newsletters/2024/11/15/#mad-based-offchain-payment-resolution-opr-protocol |
| 179 | +[harding fee]: https://delvingbitcoin.org/t/fee-based-spam-prevention-for-lightning/1524/4 |
| 180 | +[provoost testnet3]: https://mailing-list.bitcoindevs.xyz/bitcoindev/[email protected]/ |
| 181 | +[schildbach testnet3]: https://mailing-list.bitcoindevs.xyz/bitcoindev/[email protected]/ |
| 182 | +[osuntokun testnet3]: https://groups.google.com/g/bitcoindev/c/jYBlh24OB-Y/m/vbensqcZAwAJ |
| 183 | +[poinsot testnet4]: https://mailing-list.bitcoindevs.xyz/bitcoindev/hU75DurC5XToqizyA-vOKmVtmzd3uZGDKOyXuE_ogE6eQ8tPCrvX__S08fG_nrW5CjH6IUx7EPrq8KwM5KFy9ltbFBJZQCHR2ThoimRbMqU=@protonmail.com/ |
| 184 | +[provoost testnet4]: https://mailing-list.bitcoindevs.xyz/bitcoindev/[email protected]/ |
| 185 | +[erhardt testnet4]: https://mailing-list.bitcoindevs.xyz/bitcoindev/[email protected]/ |
| 186 | +[todd annex]: https://mailing-list.bitcoindevs.xyz/bitcoindev/[email protected]/ |
| 187 | +[russell loop]: https://diyhpl.us/~bryan/irc/bitcoin/bitcoin-dev/linuxfoundation-pipermail/lightning-dev/2015-August/000135.txt |
| 188 | +[news263 dos philosophy]: /en/newsletters/2023/08/09/#denial-of-service-dos-protection-design-philosophy |
| 189 | +[news136 more fee]: /en/newsletters/2021/02/17/#renewed-discussion-about-bidirectional-upfront-ln-fees |
| 190 | +[news122 bi-directional]: /en/newsletters/2020/11/04/#bi-directional-upfront-fees-for-ln |
| 191 | +[news86 reverse upfront]: /en/newsletters/2020/02/26/#reverse-up-front-payments |
| 192 | +[news119 trusted upfront]: /en/newsletters/2020/10/14/#trusted-upfront-payment |
| 193 | +[news120 upfront]: /en/newsletters/2020/10/21/#more-ln-upfront-fees-discussion |
| 194 | +[news342 closev2]: /en/newsletters/2025/02/21/#bolts-1205 |
0 commit comments