-
Notifications
You must be signed in to change notification settings - Fork 37.7k
policy: Ephemeral anchors #26403
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
policy: Ephemeral anchors #26403
Conversation
8a1d01f
to
38bd244
Compare
38bd244
to
04c5ec5
Compare
495960d
to
a2e1bab
Compare
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code CoverageFor detailed information about the code coverage, see the test coverage report. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
a2e1bab
to
7966cce
Compare
7966cce
to
aee05d5
Compare
This will be used in following commits as the flag for ephemeral anchors, allowing dust values, but also requiring the output to be spend in the same relay package.
Anchor outputs are not yet required to be spent in same mempool package.
Does not have test coverage for making sure EA are spent, and package RBF cases, neither of which exist currently.
Either in the same relay package, or by transactions RBFing the CPFP.
e3622f7
to
c21489c
Compare
🐙 This pull request conflicts with the target branch and needs rebase. |
c21489c
to
08b575f
Compare
What's the point of having a non-malleable version? Okay, so a miner cannot add extra pushes to the input script that spends the anchor, but there is nothing to stop the miner from mining an alternative child transaction that spends only the anchor. Thus, the party that had broadcast the original child transaction will be forced to construct a new spending transaction with a different TxID anyway. Indeed, anyone (not only a miner) is free to propose a replacement child that spends only the anchor, so it will never be okay to depend upon the TxID of a transaction that spends an ephemeral anchor. So again I ask, what is the point of having a non-malleable ephemeral anchor? |
Canonical example here which motivated the change was that of LN channel splicing being used to cpfp bump another transaction, would could be another channel's commitment transaction itself. This requires the ephemeral anchor-spending tx(the splice) to retain txid stability otherwise funds are locked up in the new funding output. I understand that not all use-cases require such things, but two points:
|
The point I was missing is that a non-malleable anchor ensures that the other output(s) do not get spent in a transaction whose TxID was not known in advance of signing. Thank you for the answer. |
TODO:
I'll be updating to segwit variant soon, with updated BIP text.
Builds on top of #25038 for consideration of inclusion to the proposal. Requires V3, for simplicity of reasoning and usage. Implementation of idea written out at https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-October/021036.html
BIP text here: https://github.com/instagibbs/bips/blob/ephemeral_anchor/bip-ephemeralanchors.mediawiki