|
| 1 | +--- |
| 2 | +title: 'Bitcoin Optech Newsletter #3' |
| 3 | +permalink: /en/newsletters/2018/07/10/ |
| 4 | +name: 2018-07-10-newsletter |
| 5 | +type: newsletter |
| 6 | +layout: page |
| 7 | +lang: en |
| 8 | +version: 1 |
| 9 | +--- |
| 10 | +This week's newsletter includes news and action items about minimum fees and |
| 11 | +the upcoming Bitcoin Core release, a special feature on a Schnorr signature |
| 12 | +proposal, and a write-up of the recent Building on Bitcoin conference in |
| 13 | +Lisbon. |
| 14 | + |
| 15 | +## Action items |
| 16 | + |
| 17 | +- Bitcoin Core minimum relay fee may be reduced in the next major |
| 18 | + release. Ensure your software doesn't make unsafe assumptions about 1 |
| 19 | + satoshi per vbyte being the lowest possible floor. See *News* section |
| 20 | + below for more information. |
| 21 | + |
| 22 | +- Ensure your software for calculating transaction size for dynamic fees |
| 23 | + computes signature size accurately or, at least, uses a worst-case |
| 24 | + assumption of Bitcoin signatures being 72 bytes. See *News* section |
| 25 | + below for more information. |
| 26 | + |
| 27 | +- As previous newsletters announced would happen, the Bitcoin alert |
| 28 | + key was [released][alert released] along with a disclosure of |
| 29 | + vulnerabilities affecting Bitcoin Core 0.12.0 and earlier. Altcoins |
| 30 | + may be affected. If you have not yet checked your infrastructure for |
| 31 | + affected services, it is advised to do so now. See [newsletter #1][] |
| 32 | + for more details |
| 33 | + |
| 34 | +[alert released]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-July/016189.html |
| 35 | +[newsletter #1]: https://bitcoinops.org/en/newsletters/2018/06/26/ |
| 36 | + |
| 37 | +## Dashboard items |
| 38 | + |
| 39 | +- **Transaction fees remain very low:** as of this writing, fee |
| 40 | + estimates for confirmation 2 or more blocks in the future remain at |
| 41 | + roughly the level of the default minimum relay fee in Bitcoin Core. |
| 42 | + It's a good time to [consolidate inputs][]. |
| 43 | + |
| 44 | +[consolidate inputs]: https://en.bitcoin.it/wiki/Techniques_to_reduce_transaction_fees#Consolidation |
| 45 | + |
| 46 | +- **Block production recovery:** following last week's news about |
| 47 | + flooding in China affecting miner operations, Bitcoin block production |
| 48 | + seems to have recovered to the expected level of about one block every |
| 49 | + 10 minutes. |
| 50 | + |
| 51 | +## Featured news: Schnorr signature proposed BIP |
| 52 | + |
| 53 | +In a [post][schnorr post] to the bitcoin-dev mailing list, Pieter Wuille |
| 54 | +submitted a [draft specification][schnorr draft] for a Schnorr-based |
| 55 | +signature format. The goal of the specification is to hopefully get |
| 56 | +everyone in agreement about what Schnorr signatures will look like on |
| 57 | +Bitcoin before work begins on an actual soft fork, so the BIP does not |
| 58 | +propose specific new opcodes, segwit witness flags, soft fork activation |
| 59 | +method, or anything else necessary to make this change part of the |
| 60 | +Bitcoin consensus rules. However, it is possible to say what this signature |
| 61 | +format will provide if it becomes the form of Schnorr signature adopted by |
| 62 | +Bitcoin. |
| 63 | + |
| 64 | +[schnorr post]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-July/016203.html |
| 65 | +[schnorr draft]: https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki |
| 66 | + |
| 67 | +1. Full compatibility with existing Bitcoin private keys and public |
| 68 | + keys, meaning that existing HD wallets that upgrade won't need to |
| 69 | + generate new recovery seeds. |
| 70 | + |
| 71 | +2. Roughly 10% smaller signatures, providing a slight increase to |
| 72 | + block chain capacity as Schnorr is adopted. |
| 73 | + |
| 74 | +3. Batch verification of signatures providing a roughly 2x speedup |
| 75 | + over individual verification for a block full of Schnorr |
| 76 | + signatures. This mainly affects nodes initially syncing or |
| 77 | + catching up after being offline. |
| 78 | + |
| 79 | +4. Full compression and significantly improved privacy for multisig use |
| 80 | + cases, but with required interaction: an unlimited number of |
| 81 | + participants can create a single 33-byte public key and 64-byte |
| 82 | + signature from the combination of their individual public keys and |
| 83 | + signatures, using secure multisig with the same efficiency of |
| 84 | + single-sig and increasing their privacy by making multisig look like |
| 85 | + single-sig. However, the scheme requires multistep interaction |
| 86 | + between the wallets participating in the multisig, both for creating |
| 87 | + the public key and the signature. |
| 88 | + |
| 89 | +5. Additional privacy-focused usecases. Examples include increased |
| 90 | + privacy for Lightning Network (LN), more private atomic swaps (either |
| 91 | + cross chain when both chains support Schnorr, or on the same chain as |
| 92 | + part of a coin mixing protocol), and fully [private signing oracles][dlc] |
| 93 | + (services that wait for something to happen in real life, like which |
| 94 | + team wins the world cup, and then provide a signature committing to |
| 95 | + that outcome, e.g. allowing Alice and Bob to settle a bet onchain or |
| 96 | + in a LN channel). Many of these cases also improve efficiency |
| 97 | + compared to alternatives that use current Bitcoin script. |
| 98 | + |
| 99 | +[dlc]: https://adiabat.github.io/dlc.pdf |
| 100 | + |
| 101 | +One thing of note not in the BIP proposal is a method for signature |
| 102 | +aggregation between multiple inputs in the same transaction. This was a |
| 103 | +desired feature that could allow consolidation transactions, coinjoins, |
| 104 | +and other high-input transactions to be much more efficient than they |
| 105 | +are now. But, as the author of the proposal notes, "With the emergence of |
| 106 | +so many ideas for improvements to Bitcoin's script execution (MAST, |
| 107 | +Taproot, Graftroot, new sighash modes, multisignature schemes, ...) |
| 108 | +there is simply too much to do everything at once. Since aggregation |
| 109 | +really interacts with all other things, it seems like the better choice |
| 110 | +to pursue later." ([source][pwuille comment]) |
| 111 | + |
| 112 | +[pwuille comment]: https://www.reddit.com/r/Bitcoin/comments/8wmj5b/pieter_wuille_submits_schnorr_signatures_bip/e1wwriq/ |
| 113 | + |
| 114 | +## News |
| 115 | + |
| 116 | +- **[Discussion][min fee discussion] about minimum relay fee:** several |
| 117 | + years ago when the Bitcoin price was a fraction of its current value |
| 118 | + in USD terms, Bitcoin Core set the minimum relay fee to 1 satoshi per |
| 119 | + byte (now vbyte). With the increase in prices and other network |
| 120 | + changes, several developers discussed lowering the minimum relay fee. |
| 121 | + Gregory Maxwell is planning to open a pull request to Bitcoin Core |
| 122 | + that may roughly halve the value (although the exact amount has not |
| 123 | + been determined yet). |
| 124 | + |
| 125 | + This may be included in the next major version of Bitcoin Core. If |
| 126 | + so, it'll mean that you may be able to create cheaper consolidation |
| 127 | + transactions once the change has been well deployed. However, it |
| 128 | + also means that if you don't upgrade any nodes you use for detecting |
| 129 | + unconfirmed transactions, they may not see unconfirmed transactions |
| 130 | + with low feerates unless you change the defaults. This could affect |
| 131 | + the information you display to your users. Those nodes will still |
| 132 | + see all confirmed transactions in valid blocks. |
| 133 | + |
| 134 | + Note that to lower the minimum relay fee in Bitcoin Core below its |
| 135 | + default, you need to change two settings. Shown below are the two |
| 136 | + settings with their default values in Bitcoin Core 0.16.1; to lower |
| 137 | + the values, change both of them to the same value, but be aware that |
| 138 | + reducing them too far (perhaps to less than 1/10th the default) |
| 139 | + exposes you to bandwidth-wasting attacks and reduces BIP152 compact |
| 140 | + block efficiency for your node. |
| 141 | + |
| 142 | + minrelaytxfee=0.00001000 |
| 143 | + incrementalrelayfee=0.00001000 |
| 144 | + |
| 145 | + If your organization produces end-user software, you may wish to |
| 146 | + ensure that it works with transactions and fee estimations set below |
| 147 | + the value of 1 satoshi per byte. Please contact Optech if you need |
| 148 | + more information about minimum relay fees. |
| 149 | + |
| 150 | +[min fee discussion]: http://www.erisian.com.au/meetbot/bitcoin-core-dev/2018/bitcoin-core-dev.2018-07-05-19.22.log.html#l-24 |
| 151 | + |
| 152 | +- **Unrelayable transactions:** At least two major services were |
| 153 | + identified as creating transactions with feerates below the current |
| 154 | + minimum due to a misunderstanding about the maximum size of a Bitcoin |
| 155 | + signature, which is 72 bytes. Bitcoin signatures vary in size, with |
| 156 | + half of all randomly-generated signatures being 72 bytes, slightly |
| 157 | + less than half being 71 bytes, and the small remainder being 70 bytes |
| 158 | + or smaller. |
| 159 | + |
| 160 | + At a guess, the developers of some software looked at a |
| 161 | + randomly-selected signature, saw that it was 71 bytes, and assumed |
| 162 | + all signatures would be 71 bytes. However, when the software |
| 163 | + generates a 72-byte signature, this makes the actual size of the |
| 164 | + transaction one byte larger per signature than the estimated size, |
| 165 | + causing the fees paid per byte to be slightly lower than expected. |
| 166 | + |
| 167 | + This didn't cause significant problems when fee estimates were high, |
| 168 | + but now that fee estimates are near the default minimum relay fee of |
| 169 | + 1 satoshi per byte, any transactions created with a fee slightly |
| 170 | + below that may not be relayed to miners and so remain unconfirmed |
| 171 | + indefinitely. |
| 172 | + |
| 173 | + It is recommended that organizations check their software to ensure |
| 174 | + it, at the least, makes a worst-case assumption of signatures being |
| 175 | + 72 bytes. |
| 176 | + |
| 177 | +- **Upcoming Bitcoin Core 0.17 feature freeze:** next week developers |
| 178 | + [plan][#12624] to stop merging new features for the next major |
| 179 | + version of Bitcoin Core. The features already present will be further |
| 180 | + tested and documented, translations will be updated, and other parts |
| 181 | + of the release process followed. If your organization will be |
| 182 | + depending on a feature in the next six months, now could be your last |
| 183 | + chance to ensure it's part of 0.17. Features currently not yet merged |
| 184 | + but likely to be added to Bitcoin Core 0.17.0 include: |
| 185 | + |
| 186 | + - `scantxoutset` RPC that allows searching the unspent transaction |
| 187 | + output set for addresses or scripts. Intended for use with |
| 188 | + address sweeping, e.g. finding funds that you own and bringing |
| 189 | + them into one of your current wallets. |
| 190 | + |
| 191 | + - [BIP174][] Partially-Signed Bitcoin Transactions (PSBTs) support, |
| 192 | + a protocol for exchanging information about Bitcoin transactions |
| 193 | + between wallets to facilitate better interoperability between |
| 194 | + multisig wallets, hot/cold wallets, coinjoins, and other |
| 195 | + cooperating wallets. |
| 196 | + |
| 197 | + - [Delayed transaction sending by network group][#13298], a proposal that is |
| 198 | + hoped will make it harder for spy nodes to determine which client |
| 199 | + first broadcast a transaction (indicating it may have been the |
| 200 | + spender). |
| 201 | + |
| 202 | +[#12624]: https://github.com/bitcoin/bitcoin/issues/12624 |
| 203 | +[BIP174]: https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki |
| 204 | +[#13298]: https://github.com/bitcoin/bitcoin/issues/13298 |
| 205 | + |
| 206 | +- **Efficient reimplementation of Electrum Server:** in an announcement |
| 207 | + to the bitcoin-dev mailing list this week was a claim that a |
| 208 | + Rust-based reimplementation of Electrum server is much more efficient |
| 209 | + than the Python version. Optech has not performed any testing on this |
| 210 | + and can't confirm, but Electrum server is known to be used by several |
| 211 | + Bitcoin businesses both internally and hosted on behalf of their |
| 212 | + customers, so some readers of this newsletter may wish to investigate. |
| 213 | + |
| 214 | +## Building on Bitcoin |
| 215 | + |
| 216 | +[**Building on Bitcoin**][bob website] was a Bitcoin technology conference that took |
| 217 | +place in Lisbon last week. It was well attended by both Bitcoin protocol |
| 218 | +developers and applications engineers. A [video][bob video] |
| 219 | +is available, as are several [transcripts][bob transcripts] by Bitcoin |
| 220 | +developer Bryan Bishop (kanzure). |
| 221 | + |
| 222 | +[bob website]: https://building-on-bitcoin.com/ |
| 223 | +[bob video]: https://www.youtube.com/watch?v=XORDEX-RrAI |
| 224 | +[bob transcripts]: http://diyhpl.us/wiki/transcripts/building-on-bitcoin/2018/ |
| 225 | + |
| 226 | +The following talks may be of particular interest to Bitcoin Optech |
| 227 | +companies: |
| 228 | + |
| 229 | +- [**Merchant adoption**][bitrefill video] - [Sergej Kotliar][sergej], CEO of |
| 230 | + Bitrefill gave a personal account of the fee market spike at the end of last |
| 231 | + year, important UX considerations for Bitcoin and Lightning payments, and |
| 232 | + Bitrefill's experiences in integrating Lightning. This talk was |
| 233 | + fascinating due to the real-world empirical data that Sergej shared and his |
| 234 | + first-hand experience of fees, scaling, and Lightning. |
| 235 | + |
| 236 | +[bitrefill video]: https://www.youtube.com/watch?v=Cpid31c6HZc&feature=youtu.be&t=8m49s |
| 237 | +[sergej]: https://twitter.com/ziggamon |
| 238 | + |
| 239 | +- [**Designing Lighning Wallets for the Bitcoin Users**][lightning ux video] - |
| 240 | + [Patrícia Estevão][patricia] gave a talk about UX considerations when |
| 241 | + extending Bitcoin wallets to support Lightning payments. An interesting |
| 242 | + talk for any business that is beginning to integrate Lightning payments into |
| 243 | + an existing Bitcoin product. |
| 244 | + |
| 245 | +[lightning ux video]: https://www.youtube.com/watch?v=XORDEX-RrAI&feature=youtu.be&t=6042 |
| 246 | +[patricia]: https://twitter.com/patestevao |
| 247 | + |
| 248 | +- [**Blind Signatures in Sciptless Scripts**][blind signatures video] - |
| 249 | + [Jonas Nick][jonas] spoke about using Schnorr signatures as the basis |
| 250 | + of doing blind coinswaps (where a server cannot link coins) or exchanging |
| 251 | + 'ecash tokens' on Bitcoin or Lightning, among other things. This talk |
| 252 | + presents leading edge thinking about what's possible with scriptless |
| 253 | + scripts and the ideas presented are quite a long way from being implementable |
| 254 | + on Bitcoin. However, it is interesting to see some of the new applications |
| 255 | + that will be unlocked by adopting Schnorr signatures into Bitcoin. |
| 256 | + |
| 257 | +[blind signatures video]: https://www.youtube.com/watch?v=XORDEX-RrAI&feature=youtu.be&t=25479 |
| 258 | +[jonas]: https://twitter.com/n1ckler |
| 259 | + |
| 260 | +- [**LN story**][ln video] - [Fabrice Drouin][fabrice] presented a history |
| 261 | + of the development of the Lightning Network. A lot of interesting background |
| 262 | + for anyone planning to integrate and use Lightning payments. |
| 263 | + |
| 264 | +[ln video]: https://www.youtube.com/watch?time_continue=2881&v=Cpid31c6HZc |
| 265 | +[fabrice]: https://twitter.com/acinq_co |
| 266 | + |
| 267 | +- [**CoinJoinXT ... and other techniques for deniable transfers**][coinjoin video] - |
| 268 | + [Adam Gibson][adam] talked about CoinJoinXT, a method for improving privacy in |
| 269 | + Bitcoin by mixing payments and breaking transaction graph analysis. Many wallets |
| 270 | + are planning to implement some form of CoinJoin, so Bitcoin engineers should be at |
| 271 | + least familiar with the high-level concepts. |
| 272 | + |
| 273 | +[coinjoin video]: https://www.youtube.com/watch?v=XORDEX-RrAI&feature=youtu.be&t=23359 |
| 274 | +[adam]: https://twitter.com/waxwing__ |
| 275 | + |
0 commit comments