From c9dc4486e6c1b066abf0fa6f1986d34ac587a6b9 Mon Sep 17 00:00:00 2001 From: "David A. Harding" Date: Mon, 14 Jun 2021 16:20:20 -1000 Subject: [PATCH 1/5] Topics: create topic about fee sniping/anti fee sniping --- _topics/en/fee-sniping.md | 182 ++++++++++++++++++ img/posts/2021-06-afs.plantuml | 40 ++++ img/posts/2021-06-afs.png | Bin 0 -> 7883 bytes img/posts/2021-06-sniping-size-limit.plantuml | 46 +++++ img/posts/2021-06-sniping-size-limit.png | Bin 0 -> 7994 bytes 5 files changed, 268 insertions(+) create mode 100644 _topics/en/fee-sniping.md create mode 100644 img/posts/2021-06-afs.plantuml create mode 100644 img/posts/2021-06-afs.png create mode 100644 img/posts/2021-06-sniping-size-limit.plantuml create mode 100644 img/posts/2021-06-sniping-size-limit.png diff --git a/_topics/en/fee-sniping.md b/_topics/en/fee-sniping.md new file mode 100644 index 0000000000..9cc5039278 --- /dev/null +++ b/_topics/en/fee-sniping.md @@ -0,0 +1,182 @@ +--- +title: Fee sniping + +## Optional. Shorter name to use for reference style links e.g., "foo" +## will allow using the link [topic foo][]. Not case sensitive +# shortname: foo + +## Optional. An entry will be added to the topics index for each alias +aliases: + - Anti fee sniping + +## Required. At least one category to which this topic belongs. See +## schema for options +categories: + - Mining + - Security Problems + - Security Enhancements + +## Optional. Produces a Markdown link with either "[title][]" or +## "[title](link)" +primary_sources: + - title: "Bitcoin Core #2340: discourage fee sniping with nLockTime" + link: https://github.com/bitcoin/bitcoin/pull/2340 + + - title: Anti-fee-sniping protection with nSequence in taproot transactions + link: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-June/019048.html + +## Optional. Each entry requires "title", "url", and "date". May also use "feature: +## true" to bold entry +optech_mentions: + - title: "LND #2063 updates sweeper to use nLockTime anti fee sniping" + url: /en/newsletters/2018/10/23/#lnd-1978 + + - title: "Suggestion to use anti fee sniping for interactive LN funding transactions" + url: /en/newsletters/2020/02/05/#interactive-construction-of-ln-funding-transactions + + - title: "C-Lightning #3465 implements anti fee sniping for withdrawal transactions" + url: /en/newsletters/2020/02/12/#c-lightning-3465 + +## Optional. Same format as "primary_sources" above +# see_also: +# - title: +# link: + +## Required. Use Markdown formatting. Only one paragraph. No links allowed. +## Should be less than 500 characters +excerpt: > + **Fee sniping** occurs when a miner deliberately re-mines one or more + previous blocks in order to take the fees from the miners who + originally created those blocks. Although re-mining a previous block + is less likely to succeed than simply extending the chain with a new + block, it can be more profitable if the previous block is worth much + more in transaction fees than the transactions currently in the + miner's mempool. + +--- +Fee sniping is a problem that may occur as Bitcoin's subsidy +continues to diminish and transaction fees begin to dominate +Bitcoin's block rewards. If transaction fees are all that matter, +then a miner with `x` percent of the hash rate has a `x` percent +chance of mining the next block, so the expected value to them of +honestly mining is `x` percent of the [best feerate set of +transactions][csb] in their mempool. + +Alternatively, a miner could dishonestly attempt to re-mine the +previous block plus a wholly new block to extend the +chain. This behavior is referred to as fee sniping, and the dishonest +miner's chance of succeeding at it if every +other miner is honest is `(x/(1-x))^2`. Even though fee sniping has an +overall lower probability of success than honest mining, attempting +dishonest mining could be the more profitable choice if transactions in +the previous block paid significantly higher feerates than the +transactions currently in the mempool---a small chance at a large amount +can be worth more than a large chance at a small amount. + +The problem is actually worse than described above because every miner +who chooses to mine dishonestly reduces the number of honest +miners trying to extend the chain. The smaller the share of hash +rate controlled by honest miners, the greater the probability that a +dishonest miner will be successful, so a single large miner +rationally choosing to mine dishonestly can set off a cascade of +ever smaller miners also rationally defecting to dishonest mining. +If that persists for an extended period of time, confirmation scores +cease to be a proxy for transaction finality and Bitcoin becomes +unusable until the problem is resolved. We expect the most likely +resolution would be centralization of mining---a cartel representing +a majority of hash rate agreeing to never reorg each others' blocks +can restore stability to the system, but that comes with the +increased risk that they'll later +censor certain transactions. + +### Mitigations + +- **Block transaction limit:** without a limit on the number of + transactions that can be contained within a block, such as a block + size or block weight limit, dishonest miners could take all the + transactions they know about now and try to put them into the oldest block + they're working to re-mine. All other blocks would be empty, with + miners only creating them to bury their re-mined block under as much + proof of work as possible. + + {:.center} + ![Illustration of fee sniping without block limits](/img/posts/2021-06-sniping-size-limit.png) + + Limiting the number of transactions that can be contained within a + Bitcoin block produces two desirable effects: + + 1. It tends to prevent any new block at the tip of the chain from + containing all pending transactions, leaving some transactions + for the next block. If the amount of transaction fee expected + from honestly mining the next block is close to the amount of + transaction fee available from dishonestly re-mining the previous + block, all rational miners will behave honestly. + + 2. It ensures that, even if dishonest miners do re-mine blocks, they + won't be able to achieve maximum revenue by leaving the blocks + near the tip empty---those blocks will need to contain fee-paying + transactions. Other dishonest miners may attempt themselves to + fee snipe those transactions, reducing the revenue of the initial + fee sniping miner and possibly discouraging them from fee sniping + in the first place. + +- **Rearrangement protection (anti fee sniping):** even with a block size + limit, a dishonest miner doesn't need to use the exact same set of + transactions included in the block that they're attempting to re-mine. + They can replace any low feerate transactions in that block with + higher feerate transactions from their mempool. This has the benefit + of burying higher feerate transactions further back in the chain where + other dishonest miners will have to work harder to re-mine them a + second time. + + {:.center} + ![Illustration of honest mining compared to fee sniping](/img/posts/2021-06-afs.png) + + It's possible to limit this abuse by preventing miners from being + able to include pending high-feerate transactions in the re-mined + version of any previous block. Miners would only be allowed to + include pending transactions in blocks after the current chain tip. + In other words, in an ideal situation, there wouldn't be any + difference between the regular transactions in blocks created by + economically rational dishonest miners and blocks created by honest + miners. This can reduce the revenue available to the dishonest + miner and make them more vulnerable to fee sniping by other + dishonest miners---again reducing the initial dishonest miner's + expected rewards possibly enough to keep them mining honestly in + the first place. + + This rearrangement protection is commonly called **anti fee + sniping.** Originally [implemented][bitcoin core #2340] in Bitcoin + Core, anti fee sniping is now also used by several other wallets. + + All wallets that implement anti fee sniping today use nLockTime + height locks to prevent a transaction from being included in the + re-mined version of a previous block. It's also [possible][belcher + post] to implement the same protection using [BIP68][] nSequence + height locks, which could help make regular wallet transactions look + like contract protocol transactions and vice versa. + +We're unaware of any developers who think the above mechanisms are a +complete solution to the fee sniping problem, but every other mitigation +that has been proposed so far seems to have significant downsides. None +of those alternatives appears to be an active area of research and +development. + + + +{% include references.md %} +{% include linkers/issues.md issues="2340" %} +[csb]: /en/newsletters/2021/06/02/#candidate-set-based-csb-block-template-construction +[belcher post]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-June/019048.html +[news18 lnd afs]: /en/newsletters/2018/10/23/#lnd-1978 +[news84 cl afs]: /en/newsletters/2020/02/12/#c-lightning-3465 diff --git a/img/posts/2021-06-afs.plantuml b/img/posts/2021-06-afs.plantuml new file mode 100644 index 0000000000..a89f24673e --- /dev/null +++ b/img/posts/2021-06-afs.plantuml @@ -0,0 +1,40 @@ +@startditaa + Public Information + + Block n Mempool ++------+------+------+ +------+------+------+ +| c000 | c111 | c222 | | c111 | c222 | c666 | ++------+------+------+ +------+------+------+ +| c333 | c444 | c555 | | c888 | cAAA | cBBB | ++------+------+------+ +------+------+------+ +| c666 | c777 | cCCC | | cCCC | cDDD | cEEE | ++------+------+------+ +------+------+------+ + +------------------------------------------------ + + Honest miner works on Block n+1 + using mempool txes + + Block n Block n+1 ++------+------+------+ +------+------+------+ +| c000 | c111 | c222 | | c111 | c222 | c666 | ++------+------+------+ +------+------+------+ +| c333 | c444 | c555 | | c888 | cAAA | cBBB | ++------+------+------+ +------+------+------+ +| c666 | c777 | cCCC | | cCCC | cDDD | cEEE | ++------+------+------+ +------+------+------+ + +------------------------------------------------ + + Dishonest miner works to move high feerate +transactions from mempool into alternative block n' + + Block n' Block n'+1 ++------+------+------+ +------+------+------+ +| c000 | c111 | c111 | | c666 | c777 | c888 | ++------+------+------+ +------+------+------+ +| c222 | c222 | c333 | | cAAA | cBBB | cCCC | ++------+------+------+ +------+------+------+ +| c444 | c555 | c666 | | cCCC | cDDD | cEEE | ++------+------+------+ +------+------+------+ +@endditaa diff --git a/img/posts/2021-06-afs.png b/img/posts/2021-06-afs.png new file mode 100644 index 0000000000000000000000000000000000000000..bf5c1ba93116ca1c2e19de12aaa3a5f865247075 GIT binary patch literal 7883 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 literal 0 HcmV?d00001 diff --git a/img/posts/2021-06-sniping-size-limit.plantuml b/img/posts/2021-06-sniping-size-limit.plantuml new file mode 100644 index 0000000000..2835518150 --- /dev/null +++ b/img/posts/2021-06-sniping-size-limit.plantuml @@ -0,0 +1,46 @@ +@startditaa + Public Information + + Block n Mempool ++------+------+------+ +------+------+------+ +| c000 | c111 | c222 | | c111 | c222 | c666 | ++------+------+------+ +------+------+------+ +| c333 | c444 | c555 | | c888 | cAAA | cBBB | ++------+------+------+ +------+------+------+ +| c666 | c777 | cCCC | | cCCC | cDDD | cEEE | ++------+------+------+ +------+------+------+ + +------------------------------------------------ + + Honest miner works on Block n+1 + using mempool txes + + Block n Block n+1 ++------+------+------+ +------+------+------+ +| c000 | c111 | c222 | | c111 | c222 | c666 | ++------+------+------+ +------+------+------+ +| c333 | c444 | c555 | | c888 | cAAA | cBBB | ++------+------+------+ +------+------+------+ +| c666 | c777 | cCCC | | cCCC | cDDD | cEEE | ++------+------+------+ +------+------+------+ + +------------------------------------------------ + + Dishonest miner works to move everything + into alternative block n' + + Block n' Block n'+1 ++------+------+------+ +| c000 | c111 | c111 | (empty) ++------+------+------+ +| c222 | c222 | c333 | ++------+------+------+ +| c444 | c555 | c666 | ++------+------+------+ +| c666 | c777 | c888 | ++------+------+------+ +| cAAA | cBBB | cCCC | ++------+------+------+ +| cCCC | cDDD | cEEE | ++------+------+------+ +@endditaa diff --git a/img/posts/2021-06-sniping-size-limit.png b/img/posts/2021-06-sniping-size-limit.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba9ebe903cb5f005d624ccb7475967e66fc69cb GIT binary patch literal 7994 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 S{crqB@jFWDH}fE-u>S}72{ly! literal 0 HcmV?d00001 From 989d3d4499bd53064f40ecb6aed0c74101f71173 Mon Sep 17 00:00:00 2001 From: "David A. Harding" Date: Sat, 12 Jun 2021 01:10:10 -1000 Subject: [PATCH 2/5] Newsletters: add 153 (2021-06-16) --- .../en/newsletters/2021-06-16-newsletter.md | 125 ++++++++++++++++++ _topics/en/fee-sniping.md | 3 + _topics/en/taproot.md | 3 + 3 files changed, 131 insertions(+) create mode 100644 _posts/en/newsletters/2021-06-16-newsletter.md diff --git a/_posts/en/newsletters/2021-06-16-newsletter.md b/_posts/en/newsletters/2021-06-16-newsletter.md new file mode 100644 index 0000000000..1b7b31f35b --- /dev/null +++ b/_posts/en/newsletters/2021-06-16-newsletter.md @@ -0,0 +1,125 @@ +--- +title: 'Bitcoin Optech Newsletter #153' +permalink: /en/newsletters/2021/06/16/ +name: 2021-06-16-newsletter +slug: 2021-06-16-newsletter +type: newsletter +layout: newsletter +lang: en +--- +This week's newsletter celebrates the lock-in of the taproot soft fork, +describes a draft BIP for improving transaction +privacy by varying the fields used to implement anti fee sniping, and +features an article about the challenges of combining transaction +replacement with payment batching. Also included are our regular +sections with announcements of new software releases and release +candidates, plus notable changes to popular Bitcoin infrastructure +software. + +## News + +- **🟩 Taproot locked in:** the [taproot][topic taproot] soft fork and + related changes specified in BIPs [340][bip340], [341][bip341], and + [342][bip342] were locked in by signaling miners last weekend. + Taproot will be safe to use after block 709,632, which is expected in + early or mid November. The delay gives time for users to upgrade + their nodes to a release (such as Bitcoin Core 0.21.1 or later) that will + enforce taproot's rules, ensuring that funds received to taproot + scripts after block 709,632 are safe even if there's a problem with + miners. + + Developers are encouraged to start [implementing taproot][taproot + uses] so they can + be ready to take advantage of greater efficiency, privacy, and + fungibility as soon as the activation is complete. + + Readers celebrating the lock-in of taproot may also wish to read a + [short thread][wuille taproot] about taproot's origins and history by + developer Pieter Wuille. + +- **BIP proposed for wallets to set nSequence by default on taproot transactions:** + Chris Belcher [posted][belcher post] a draft BIP to the Bitcoin-Dev + mailing list suggesting an alternative way wallets can implement [anti + fee sniping][topic fee sniping]. The alternative method would enhance + the privacy and fungibility of transactions made by single-sig users, + [multisignature][topic multisignature] users, and users of certain + contract protocols such as taproot-enabled LN or advanced + [coinswaps][topic coinswap]. + + Anti fee sniping is a technique some wallets implement to discourage + miners from trying to steal fees from each other in a way that would + reduce the amount of proof of work expended on securing Bitcoin and + limit users' ability to rely on confirmation scores. All wallets + that implement anti fee sniping today use nLockTime height locks, + but it's also possible to implement the same protection using + [BIP68][] nSequence height locks. This wouldn't be any more + effective at preventing fee sniping, but it would provide a good + reason for regular wallets to set their nSequence values to the same + values that are required for transactions in certain + multisignature-based contract protocols, such as ideas for coinswaps + and taproot-enabled LN. This helps make regular wallet transactions + look like contract protocol transactions and vice versa. + + Belcher's proposal suggests wallets randomly choose between using + either nLockTime or nSequence with 50% probability when both options + are available. Overall, if the proposal is implemented, it will + allow users of regular single-sig transactions or uncomplicated + multisignatures to join together with users of contract protocols to + mutually improve each others' privacy and fungibility. + +## FIXME:article + +FIXME:harding to rebase on #582 on Tuesday + +## Releases and release candidates + +*New releases and release candidates for popular Bitcoin infrastructure +projects. Please consider upgrading to new releases or helping to test +release candidates.* + +- [Rust Bitcoin 0.26.2][] is the project's latest minor release. + Compared to the previous major version, it contains a several API + improvements and bug fixes. See the [changelog][rb changelog] for + details. + +- [Rust-Lightning 0.0.98][] is a minor release containing several + improvements and bug fixes. + +- [LND 0.13.0-beta.rc5][LND 0.13.0-beta] is a release candidate that + adds support for using a pruned Bitcoin full node, allows receiving + and sending payments using Atomic MultiPath ([AMP][topic multipath payments]), + and increases its [PSBT][topic psbt] capabilities, among other improvements + and bug fixes. + +## Notable code and documentation changes + +*Notable changes this week in [Bitcoin Core][bitcoin core repo], +[C-Lightning][c-lightning repo], [Eclair][eclair repo], [LND][lnd repo], +[Rust-Lightning][rust-lightning repo], [libsecp256k1][libsecp256k1 +repo], [Hardware Wallet Interface (HWI)][hwi repo], +[Rust Bitcoin][rust bitcoin repo], [BTCPay Server][btcpay server repo], +[Bitcoin Improvement Proposals (BIPs)][bips repo], and [Lightning +BOLTs][bolts repo].* + +- [Bitcoin Core GUI #4][] UI external signer support (e.g. hardware wallet) FIXME:dongcarl + +- [Bitcoin Core #21573][] updates the version of libsecp256k1 included + in Bitcoin Core. The most notable change is the use of the + optimized modular inverse code described in Newsletters [#136][news136 + safegcd] and [#146][news146 safegcd]. Performance evaluations posted + to the PR found it accelerated old block verification by about 10%. + +- [C-Lightning #4591][] bech32m support FIXME: Xekyo + +{% include references.md %} +{% include linkers/issues.md issues="4,21573,4591" %} +[Rust Bitcoin 0.26.2]: https://github.com/rust-bitcoin/rust-bitcoin/releases/tag/0.26.2 +[Rust-Lightning 0.0.98]: https://github.com/rust-bitcoin/rust-lightning/releases/tag/v0.0.98 +[LND 0.13.0-beta]: https://github.com/lightningnetwork/lnd/releases/tag/v0.13.0-beta.rc5 +[belcher post]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-June/019048.html +[news136 safegcd]: /en/newsletters/2021/02/17/#faster-signature-operations +[news146 safegcd]: /en/newsletters/2021/04/28/#libsecp256k1-906 +[taproot uses]: https://en.bitcoin.it/wiki/Taproot_Uses +[wuille taproot]: https://twitter.com/pwuille/status/1403725170993336322 +[rb changelog]: https://github.com/rust-bitcoin/rust-bitcoin/blob/master/CHANGELOG.md#0262---2021-06-08 diff --git a/_topics/en/fee-sniping.md b/_topics/en/fee-sniping.md index 9cc5039278..fea9379718 100644 --- a/_topics/en/fee-sniping.md +++ b/_topics/en/fee-sniping.md @@ -37,6 +37,9 @@ optech_mentions: - title: "C-Lightning #3465 implements anti fee sniping for withdrawal transactions" url: /en/newsletters/2020/02/12/#c-lightning-3465 + - title: BIP proposed for wallets to set nSequence by default on taproot transactions + url: /en/newsletters/2021/06/16/#bip-proposed-for-wallets-to-set-nsequence-by-default-on-taproot-transactions + ## Optional. Same format as "primary_sources" above # see_also: # - title: diff --git a/_topics/en/taproot.md b/_topics/en/taproot.md index c77d73a00e..0e57772354 100644 --- a/_topics/en/taproot.md +++ b/_topics/en/taproot.md @@ -176,6 +176,9 @@ optech_mentions: - title: "Bitcoin Core #22051 adds support for importing descriptors for taproot outputs" url: /en/newsletters/2021/06/09/#bitcoin-core-22051 + - title: "Taproot locked in; activation to occur at block 709,632" + url: /en/newsletters/2021/06/16/#taproot-locked-in + ## Optional see_also: - title: MAST From 47f655dc055dcf42dce07aee0e916fd8f6d6f70e Mon Sep 17 00:00:00 2001 From: Murch Date: Mon, 14 Jun 2021 12:08:53 -0400 Subject: [PATCH 3/5] News153: describe C-Lightning-4591 bech32m support Make Rusty famous: https://github.com/ElementsProject/lightning/pull/4591 --- _posts/en/newsletters/2021-06-16-newsletter.md | 5 ++++- _topics/en/bech32.md | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/_posts/en/newsletters/2021-06-16-newsletter.md b/_posts/en/newsletters/2021-06-16-newsletter.md index 1b7b31f35b..14e09591c0 100644 --- a/_posts/en/newsletters/2021-06-16-newsletter.md +++ b/_posts/en/newsletters/2021-06-16-newsletter.md @@ -110,7 +110,10 @@ BOLTs][bolts repo].* safegcd] and [#146][news146 safegcd]. Performance evaluations posted to the PR found it accelerated old block verification by about 10%. -- [C-Lightning #4591][] bech32m support FIXME: Xekyo +- [C-Lightning #4591][] adds support for parsing [bech32m][topic bech32] + addresses. C-Lightning will now permit a peer that has negotiated the feature + `option_shutdown_anysegwit` to specify any v1+ native segwit address as + a closing or withdrawal destination. {% include references.md %} {% include linkers/issues.md issues="4,21573,4591" %} diff --git a/_topics/en/bech32.md b/_topics/en/bech32.md index 6a20829225..c6f69e8c0f 100644 --- a/_topics/en/bech32.md +++ b/_topics/en/bech32.md @@ -90,6 +90,9 @@ optech_mentions: - title: Electrum 4.1.0 adds support for bech32m url: /en/newsletters/2021/05/19/#electrum-4-1-0-enhances-lightning-features + - title: C-Lightning #4591 adds support for sending to bech32m addresses + url: /en/newsletters/2021/06/16/#c-lightning-4591 + ## Optional. Same format as "primary_sources" above see_also: - title: Javascript bech32 demo decoder From 302f211fc1002d8ae0b6fd673cc154c0532924e2 Mon Sep 17 00:00:00 2001 From: Carl Dong Date: Mon, 14 Jun 2021 15:43:36 -0400 Subject: [PATCH 4/5] News153: Add Bitcoin Core GUI #4 description --- _posts/en/newsletters/2021-06-16-newsletter.md | 8 +++++++- _topics/en/hwi.md | 3 +++ img/posts/2021-06-gui-hwi.png | Bin 0 -> 24313 bytes 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 img/posts/2021-06-gui-hwi.png diff --git a/_posts/en/newsletters/2021-06-16-newsletter.md b/_posts/en/newsletters/2021-06-16-newsletter.md index 14e09591c0..5a710c2fd6 100644 --- a/_posts/en/newsletters/2021-06-16-newsletter.md +++ b/_posts/en/newsletters/2021-06-16-newsletter.md @@ -102,7 +102,13 @@ repo], [Hardware Wallet Interface (HWI)][hwi repo], [Bitcoin Improvement Proposals (BIPs)][bips repo], and [Lightning BOLTs][bolts repo].* -- [Bitcoin Core GUI #4][] UI external signer support (e.g. hardware wallet) FIXME:dongcarl +- [Bitcoin Core GUI #4][] adds initial support for using [Hardware Wallet + Interface (HWI)][topic hwi] external signers via the GUI. Once this feature is + finalized, users will be able to use their HWI-compatible hardware wallets + directly from the Bitcoin Core GUI. + + {:.center} + ![Screenshot of HWI path configuration option](/img/posts/2021-06-gui-hwi.png) - [Bitcoin Core #21573][] updates the version of libsecp256k1 included in Bitcoin Core. The most notable change is the use of the diff --git a/_topics/en/hwi.md b/_topics/en/hwi.md index dedc6ff088..405133740b 100644 --- a/_topics/en/hwi.md +++ b/_topics/en/hwi.md @@ -52,6 +52,9 @@ optech_mentions: - title: "Bitcoin Core #16546 adds external signer interface compatible with HWI" url: /en/newsletters/2021/03/03/#bitcoin-core-16546 + - title: "Bitcoin Core GUI #4 adds initial support for using HWI external signers via the GUI" + url: /en/newsletters/2021/06/16/#bitcoin-core-gui-4 + ## Optional. Same format as "primary_sources" above see_also: - title: Partially-Signed Bitcoin Transactions (PSBTs) diff --git a/img/posts/2021-06-gui-hwi.png b/img/posts/2021-06-gui-hwi.png new file mode 100644 index 0000000000000000000000000000000000000000..ab11a18b4b16982705ae7f21ccfd811751532788 GIT binary patch literal 24313 zcmeFZXH=8x);4Mf6hlz~C4h94UPMAwK#CMaR6v>mq(~?9s)7WhOAAO*P*5obL5g&O z^di!wNeduNdJ{M^y7v2idw=hD#yNk^ud~J)W3fU=o^s!FUTr?XH#L<{9zS>dz<~oN zRaF#k9XN34>VX3X8^{mAD|N!}+~7ZlG4iUn$;rtFMsNH$aKI=}Rq^U=_wV!NWbS9K z?Nmm*d`W$tqC5ccioINA(J*qD=FIK)s{$%f8Mm)0Ccfm+xE2+@N_%gbl{J8igW8?- zw${kve%w~x{z}U8qyvvRycetmb5YT#e9`>U_VRX=+Vk`F`3JujSaoJ-=o<{uT2lP^ z@dYwNg$&1$0^&7`xkUQe?!$PTrMGf4~;64%5PW;gZ>Lf-!Q@RSIGq_44*l1eV8K-e%(M@O966CF;gP@vIoL=f|1g?wT(|Bf$>wh&~J@flq! zRB$=)=hOzqrEID~SzMVYK5{rutR6+K`|WS|*#@?znfE-?=!~~>h{g8%#s&S%9V#rsCO|4#1_d>RjJMFiM!d z%OR|%QeNdRCOf00(DZ5k>jgJtkI66kyCwSti#m(HGOx&5Y$t5*er~VSR~s#LDcubx zi%70~e>Wodp3mRUQABv{_{pgmi4lr`?C5GgoPnLyz{uxay~zqX58GbJge)Pbk4FdHlc@Nee3-rQYsvF7JQE9 z-?b58xppjt>P>5e{@#cvQ#gXX-PAZkqdLz2Uw7jas>P0gj`RAv?8H&(e^!!JhzFLm zB;kLYaHMr;)yeg*7s3%)at?)mU!C zPWF>0rx`~`IZZUA$asm@i7;OPHnI ze>KJO>U=Od8F5L7A+WY8j$fZnnW?V9bhJkHi-JN-=#5jMH pomQu{j$Wl{XR146 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 JGL Date: Mon, 31 May 2021 06:55:19 -0500 Subject: [PATCH 5/5] Blog: add CardCoins RBF batching post --- _includes/articles/cardcoins-rbf-batching.md | 54 +++++++++++++++++++ .../en/2021-06-16-cardcoins-rbf-batching.md | 17 ++++++ .../en/newsletters/2021-06-16-newsletter.md | 4 +- 3 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 _includes/articles/cardcoins-rbf-batching.md create mode 100644 _posts/en/2021-06-16-cardcoins-rbf-batching.md diff --git a/_includes/articles/cardcoins-rbf-batching.md b/_includes/articles/cardcoins-rbf-batching.md new file mode 100644 index 0000000000..d72021b8c5 --- /dev/null +++ b/_includes/articles/cardcoins-rbf-batching.md @@ -0,0 +1,54 @@ +{:.post-meta} +*by [CardCoins][]* + +_"Additive batching" is a scheme in which additional outputs are +added to unconfirmed transactions in the mempool. This field report outlines +efforts [CardCoins][] has taken in introducing a reorg- and DoS-safe implementation +of such a scheme in its customer payout workflow._ + +[Replace By Fee][topic rbf] (RBF, BIP125) and [batching][payment batching] are +two important tools for any enterprises directly interacting with Bitcoin's +mempool. Fees go up, fees go down, but the business must always fight for fee efficiency. + +Each tool, while powerful, has its own complexities and nuances. For example, +batching customer withdrawals may save on fees for the enterprise, but will likely make +[child pays for parent][topic cpfp] (CPFP) uneconomical for a customer who wishes to speed up the transaction. +Similarly, RBF is useful for an enterprise who takes a fee-underbidding strategy +(their initial transaction broadcast starts at a low fee, and is slowly bid +upwards), but it exposes their customers to [potential confusion][rbf blog] as their +withdrawal transaction updates in their wallet. It would also be messy for the +customer to spend from this transaction while it remains unconfirmed, as the +enterprise will have to pay for this child spend when attempting to replace +the parent. Even worse, the enterprise may have a withdrawal [pinned][pinning] by another +service which received the customer's withdrawal. + +When combining these two tools, a service provider unlocks new functionality but +is similarly exposed to novel forms of complexity. In the base case, combining +RBF and a single, static batch carries a simple combination of the complexities +that RBF and batching carry discretely. However, when you combine RBF and +"additive batching," emergent edge cases and dangerous failure scenarios present +themselves. + +In additive RBF batching, the service provider introduces new outputs (and +confirmed inputs) to a transaction in the mempool to incorporate new customer +withdrawals into an unconfirmed transaction. This enables the service provider +to give +users the experience of an instantaneous withdrawal while still retaining much +of the fee savings from doing large batches of customer withdrawals at once. As +each customer requests a withdrawal, an output is added to the transaction in +the mempool. This transaction continues to be updated until it confirms or +reaches some other local optimum. + +There are many strategies to this type of additive RBF batching. At [CardCoins][] we +took a safety-first approach to our implementation (with the help of [Matthew +Zipkin][]), the details of which we described in a blog post, [RBF +Batching at CardCoins: Diving into the Mempool's Dark Reorg Forest][cardcoins +rbf blog]. + +{% include references.md %} +[CardCoins]: https://www.cardcoins.co/ +[payment batching]: /en/payment-batching/ +[rbf blog]: /en/rbf-in-the-wild/#some-usability-examples +[pinning]: /en/topics/transaction-pinning/ +[Matthew Zipkin]: https://twitter.com/MatthewZipkin +[cardcoins rbf blog]: https://blog.cardcoins.co/rbf-batching-at-cardcoins-diving-into-the-mempool-s-dark-reorg-forest diff --git a/_posts/en/2021-06-16-cardcoins-rbf-batching.md b/_posts/en/2021-06-16-cardcoins-rbf-batching.md new file mode 100644 index 0000000000..287579c9f1 --- /dev/null +++ b/_posts/en/2021-06-16-cardcoins-rbf-batching.md @@ -0,0 +1,17 @@ +--- +title: 'Field Report: Using RBF and Additive Batching' +permalink: /en/cardcoins-rbf-batching/ +name: 2021-06-16-cardcoins-rbf-batching +slug: 2021-06-16-cardcoins-rbf-batching +type: posts +layout: post +lang: en +version: 1 +excerpt: > + "Additive batching" is a scheme whereby additional outputs are + included to unconfirmed transactions in the mempool. This field report outlines + efforts CardCoins has taken in introducing a reorg and DoS safe implementation + of such a scheme in its customer payout workflow. + +--- +{% include articles/cardcoins-rbf-batching.md %} diff --git a/_posts/en/newsletters/2021-06-16-newsletter.md b/_posts/en/newsletters/2021-06-16-newsletter.md index 5a710c2fd6..7afd0dc7cc 100644 --- a/_posts/en/newsletters/2021-06-16-newsletter.md +++ b/_posts/en/newsletters/2021-06-16-newsletter.md @@ -67,9 +67,9 @@ software. multisignatures to join together with users of contract protocols to mutually improve each others' privacy and fungibility. -## FIXME:article +## Field Report: Using RBF and Additive Batching -FIXME:harding to rebase on #582 on Tuesday +{% include articles/cardcoins-rbf-batching.md %} ## Releases and release candidates