-
Notifications
You must be signed in to change notification settings - Fork 5.9k
BIP Full-RBF deployment schedule #165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,97 @@ | ||
| <pre> | ||
| BIP: ?? | ||
| Title: Full Replace-by-Fee Deployment Schedule | ||
| Author: Peter Todd <pete@petertodd.org> | ||
| Status: Draft | ||
| Type: Standards Track | ||
| Created: 2015-06-29 | ||
| </pre> | ||
|
|
||
| ==Summary== | ||
|
|
||
| This BIP proposes a deployment schedule for full replace-by-fee (full-RBF) | ||
| functionality, with an automatic activation of Tuesday April 5th, 2016, at 3pm | ||
| UTC upon which supporting relay nodes and miners will enable full-RBF mempool | ||
| behavior on mainnet. Prior to the activation deadline supporting nodes and | ||
| miners will support first-seen-safe(1) replace-by-fee (FSS-RBF) mempool behavior. | ||
|
|
||
|
|
||
| ==Motivation== | ||
|
|
||
| Full-RBF has significant efficiency advantages(2) over alternatives such as | ||
| FSS-RBF and Child-Pays-For-Parent for a wide variety of common transaction | ||
| patterns such as fee-bumping and multiple sequential payments, as well as smart | ||
| contract protocols such as payment channels and auctions. Miner support would | ||
| let the wider Bitcoin community use the blockchain more efficiently, supporting | ||
| more transactions per second in less blockchain space. | ||
|
|
||
| While full-RBF does allow users to "undo" transactions after they have been | ||
| sent, the ability of decentralized wallets to protect users from double-spends | ||
| has proven to be near-zero.(3) Centralized services have had some success in | ||
| doing so, albeit at the cost of having to sybil attack the network, a strategy | ||
| that cannot scale to more than a small handful of payment processing | ||
| companies.(3) | ||
|
|
||
| Even then success is not assured. Worryingly large payment providers have shown | ||
| willingness(4) to consider extreme measures such as entering into legal | ||
| contracts directly with large miners to ensure their transactions get mined. | ||
| This is a significant centralization risk as it is not practical or even | ||
| possible for small miners to enter into these contracts, leading to a situation | ||
| where moving your hashing power to a larger pool will result in higher profits | ||
| from hashing power contracts; if these payment providers secure a majority of | ||
| hashing power with these contracts inevitably there will be a temptation to | ||
| kick non-compliant miners off the network entirely with a 51% attack. | ||
|
|
||
| It does not make sense for the whole Bitcoin community to incur higher | ||
| transaction costs, sybil attacks, and centralization risk for the sake of a | ||
| small handful of companies. However an orderly, planned, upgrade is still | ||
| desirable. | ||
|
|
||
|
|
||
| ==Implementation== | ||
|
|
||
| As full-RBF usage patterns, unlike first-seen-dependent zeroconf, does not | ||
| depend on mempool syncronization this BIP won't specify detailed relay node | ||
| behavior. However the following implementation is reasonable and well-tested | ||
| with considerations such as DoS attacks taken into account: | ||
|
|
||
| https://github.com/bitcoin/bitcoin/pull/6352 | ||
|
|
||
| To maximize engineer availability the deadline date was chosen to be towards, | ||
| but not at, the start of the week, and away from any public holidays. 3pm UTC | ||
| was chosen as a compromise between Pacific West Coast and European timezones; | ||
| miners in the Asian timezones may choose to manually set their exact switchover | ||
| date a few hours ahead with little risk to themselves. Nine months into the | ||
| future was chosen on the basis of allowing time for affected companies to plan | ||
| for the upgrade, without pushing the upgrade unnecessarily far into the future. | ||
|
|
||
|
|
||
| ==Credits== | ||
|
|
||
| Thanks goes to Jeff Garzik for suggesting the idea of a full-RBF deployment | ||
| deadline. | ||
|
|
||
|
|
||
| ==References== | ||
|
|
||
| 1) "First-Seen-Safe Replace-by-Fee", | ||
| Peter Todd, Bitcoin-development mailing list, May 25th 2015, | ||
| http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-May/008248.html | ||
|
|
||
| 2) "Cost savings by using replace-by-fee, 30-90%", | ||
| Peter Todd, Bitcoin-development mailing list, May 25th 2015, | ||
| http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-May/008232.html | ||
|
|
||
| 3) "F2Pool has enabled full replace-by-fee", | ||
| Peter Todd, Bitcoin-development mailing list, June 19th 2015, | ||
| http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-June/008843.html | ||
|
|
||
| 4) "F2Pool has enabled full replace-by-fee", | ||
| Adrian Macneil, Director of Engineering, Coinbase, | ||
| Bitcoin-development mailing list, June 19th 2015, | ||
| http://lists.linuxfoundation.org/pipermail/bitcoin-dev/2015-June/008868.html | ||
|
|
||
| ==Copyright== | ||
|
|
||
| This document is placed in the public domain. | ||
|
|
||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Elaborate on how it is proven to be near-zero. This is an important point that deserves its own section imho, just just a reference to a mail (you sent, by the way) on the mailing list.
Even copy-pasting the contents of your mail + formatting would be much better.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I should do up a full writeup on this and post it to reddit...