-
Notifications
You must be signed in to change notification settings - Fork 137
Newsletters: add 65 #227
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
Newsletters: add 65 #227
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,133 @@ | ||
--- | ||
title: 'Bitcoin Optech Newsletter #65' | ||
permalink: /en/newsletters/2019/09/25/ | ||
name: 2019-09-25-newsletter | ||
slug: 2019-09-25-newsletter | ||
type: newsletter | ||
layout: newsletter | ||
lang: en | ||
--- | ||
This week's newsletter requests feedback on not allowing P2SH-wrapped | ||
addresses for taproot, describes proposed changes to script resource | ||
limits in tapscript, and mentions a discussion about watchtower storage | ||
costs. Also included are a selection of popular questions and answers | ||
from the Bitcoin StackExchange and a short list of notable changes to | ||
popular Bitcoin infrastructure projects. | ||
|
||
{% comment %}<!-- include references.md below the fold but above any Jekyll/Liquid variables-->{% endcomment %} | ||
{% include references.md %} | ||
|
||
## Action items | ||
|
||
- **Comment if you expect to need P2SH-wrapped taproot addresses:** | ||
recent [discussion][p2sh taproot] on the Bitcoin-Dev mailing list | ||
indicates that the [bip-taproot][] proposal may be amended to disallow | ||
creating taproot inputs by paying P2SH outputs (the way you can | ||
currently use P2WPKH and P2WSH inputs created from P2SH outputs). | ||
Anyone who expects to need P2SH-wrapped taproot should describe their | ||
planned use case on the mailing list or by contacting the bip-taproot | ||
author privately. | ||
|
||
## News | ||
|
||
- **Tapscript resource limits:** the [bip-tapscript][] proposal limits | ||
transactions to one signature-checking operation (sigop) for every 12.5 vbytes | ||
the witness data adds to the size of the transaction (plus one free | ||
sigop per input). Because signatures are expected to be 16.0 vbytes, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sigop or SigOp, perhaps a style guide candidate unless an obvious/pre-established choice There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: leading because; maybe "Signatures are expected to be 16 vbytes, so/therefore this limit should prevent abuse..." or similar |
||
this limit prevents abuse without affecting normal users. Compared to | ||
earlier abuse-prevention solutions, it means any valid taproot | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: can remove "it means" |
||
transaction can be included in a block regardless of how many sigops | ||
it contains---keeping miner transaction code simple and fast. | ||
|
||
In a mailing list [post][tapscript limits], bip-tapscript author | ||
Pieter Wuille notes that he and Andrew Poelstra examined other | ||
resource limits on scripts that were put in place to prevent nodes | ||
from using an excessive amount of CPU or memory during verification. | ||
He describes some of their findings and advocates the following rule | ||
changes: | ||
|
||
> * Replace the separate sigops counter with a "executed sigops must | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. suggestion: placing "rule" before the description may make the sentence easier to parse for the reader There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Sorry, I don't understand what change you're suggesting here. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. with a rule that "executed sigops must not exceed..." |
||
> not exceed (witness size / [12.5 vbytes]) + 1" rule (already in the BIP). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @harding should now drop the second instance of "rule" in the sentence? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ugh. I'm going to revert this to just sipa's text, I think it's good enough and anyone who's confused can just read his entire email. |
||
> * Drop the 10,000 byte limit for script size (and 3,600 byte | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit suggestion: s/limit for script size/script size limit/, like "standardness limit" |
||
> standardness limit) | ||
> * Drop the 201 non-push ops limit per script. | ||
> * Drop the 100 input stack elements standardness limit and | ||
> replace with a (consensus) 1,000 limit. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What is the unit of the 1,000 limit? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. From Pieter's email: "I believe we should keep this 1000 element stack limit for these reasons. " So I think we should state the unit "elements" in the newsletter. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That sentence does state the unit "stack elements". |
||
The removal of unneeded rules would simplify the construction of | ||
advanced Bitcoin scripts and the tools necessary to work with them. | ||
|
||
- **Watchtower storage costs:** a [discussion][watchtower discussion] on | ||
the Lightning-Dev mailing list examined the storage requirements for | ||
current watchtowers as well as watchtowers for proposed | ||
[eltoo-based][eltoo] payment channels. In the thread, Christian | ||
Decker notes that both current watchtowers (as implemented by LND) and | ||
future watchtowers for eltoo can have essentially O(1) costs (fixed | ||
costs) per user by having each person use a session key to update | ||
their latest state information on the watchtower. | ||
|
||
## Selected Q&A from Bitcoin StackExchange | ||
|
||
*[Bitcoin StackExchange][bitcoin.se] is one of the first places Optech | ||
contributors look for answers to their questions---or when we have a | ||
few spare moments of time to help curious or confused users. In | ||
this monthly feature, we highlight some of the top-voted questions and | ||
answers posted since our last update.* | ||
|
||
{% comment %}<!-- https://bitcoin.stackexchange.com/search?tab=votes&q=created%3a1m..%20is%3aanswer -->{% | ||
endcomment %} | ||
{% assign bse = "https://bitcoin.stackexchange.com/a/" %} | ||
|
||
- [Why does this coinbase transaction have two OP_RETURN outputs?]({{bse}}90127) | ||
Murch outlines that while there are some restrictions regarding the witness | ||
commitment output, there are no additional script or quantity restrictions | ||
regarding other coinbase transaction outputs. | ||
|
||
- [What happens to transactions included in invalid blocks?]({{bse}}90026) | ||
RedGrittyBrick and Murch explain that a transaction's inclusion in an invalid block | ||
does not have any impact on the validity of that transaction or its ability to | ||
be confirmed in subsequent blocks. | ||
|
||
- [Why was 550 (MiB) chosen as a minimum storage size for prune mode?]({{bse}}90140) | ||
Behrad Khodayar answers his own question about why 550 (MiB) was chosen | ||
as a minimum storage size for pruned nodes. The storage amount was originally chosen | ||
(pre-segwit) to keep 288 blocks worth of state transition data, about two days worth, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. blocks' ? unsure here There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Units of measure aren't possessive. E.g., "drink at least 3 liters of water a day." Very tangentially related to that, reading this sentence and thinking about units of measure made me realize that a (hypothetical average) day worth of blocks is a gross. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Makes sense. Reminds me, I had an econ professor who reprimanded students if they said or wrote "a lot of" to mean anything other than the unit of measure :D There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Right -- a gross is 12 dozen! |
||
on disk. | ||
|
||
- [How do orphan blocks affect the network?]({{bse}}90577) Pieter Wuille | ||
clarifies that since 0.10.0, Bitcoin Core uses [headers-first][] IBD | ||
(initial block download) which eliminates the possibility of orphan blocks | ||
(as defined by the questioner). | ||
|
||
## Notable code and documentation changes | ||
|
||
*Notable changes this week in [Bitcoin Core][bitcoin core repo], | ||
[LND][lnd repo], [C-Lightning][c-lightning repo], [Eclair][eclair repo], | ||
[libsecp256k1][libsecp256k1 repo], [Bitcoin Improvement Proposals | ||
(BIPs)][bips repo], and [Lightning BOLTs][bolts repo].* | ||
|
||
- [Bitcoin Core #16400][] refactors part of the mempool transaction | ||
acceptance code. We don't usually cover refactors, but this one has a | ||
tantalizing comment: "this is in preparation for re-using these | ||
validation components for a new version of `AcceptToMemoryPool()` that | ||
can operate on multiple transactions ('package relay')." Package | ||
relay could allow nodes to accept a transaction below the node's | ||
minimum feerate if the transaction came bundled with a child | ||
transaction whose fee was high enough to pay the minimum feerate for | ||
both it and its parent. If widely deployed, package relay would allow | ||
users who create transactions a long time before broadcasting them | ||
(e.g. timelocked transactions or LN commitment transactions) to safely | ||
pay the minimum possible fee. When it came time to broadcast the | ||
transaction, they could use Child-Pays-For-Parent (CPFP) fee bumping | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. unsure about those hyphens :D |
||
to set an appropriate fee for the current network conditions. | ||
|
||
- [BOLTs #557][] updates [BOLT7][] to allow for "extended queries" | ||
which allow nodes to request that they only receive gossip updates | ||
that are newer than a specified date or which differ from a specified | ||
hash. | ||
|
||
{% include linkers/issues.md issues="16400,557" %} | ||
[p2sh taproot]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-September/017307.html | ||
[tapscript limits]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-September/017306.html | ||
[watchtower discussion]: https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-September/002156.html | ||
[headers-first]: https://bitcoin.org/en/p2p-network-guide#headers-first |
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.
"contacting the author" -> perhaps more details, unless the idea is to not facilitate doing so :)