<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2023-06-09T12:14:33Z</updated>
  <generator>https://njump.me</generator>

  <title>Nostr notes by John Newbery [ARCHIVE]</title>
  <author>
    <name>John Newbery [ARCHIVE]</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://njump.me/npub1aprq807up25mkugnhlr9nc2jkqqxd3wyrct3uj0kzhsdunaj7q8s7608ff.rss" />
  <link href="https://njump.me/npub1aprq807up25mkugnhlr9nc2jkqqxd3wyrct3uj0kzhsdunaj7q8s7608ff" />
  <id>https://njump.me/npub1aprq807up25mkugnhlr9nc2jkqqxd3wyrct3uj0kzhsdunaj7q8s7608ff</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://njump.me/nevent1qqs8l5l5ga5m52uxr2k0ze84njg9aejvfdc92pdkvrqwyygjpww4qzczyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7djx8vw</id>
    
      <title type="html">📅 Original date posted:2020-05-05 📝 Original message: There ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs8l5l5ga5m52uxr2k0ze84njg9aejvfdc92pdkvrqwyygjpww4qzczyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7djx8vw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy3axwjrtcswdngj9mqtp0jhz0fkmgnlujmmwmrw7hwx68cppdlacdlafsn&#39;&gt;nevent1q…afsn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-05-05&lt;br/&gt;📝 Original message:&lt;br/&gt;There doesn&amp;#39;t seem to be anything in the original email that&amp;#39;s specific to&lt;br/&gt;BIP 157. It&amp;#39;s a restatement of the arguments against light clients:&lt;br/&gt;&lt;br/&gt;- light clients are a burden on the full nodes that serve them&lt;br/&gt;- if light clients become more popular, there won&amp;#39;t be enough full nodes to&lt;br/&gt;serve them&lt;br/&gt;- people might build products that depend on altruistic nodes serving data,&lt;br/&gt;which is unsustainable&lt;br/&gt;- maybe at some point in the future, light clients will need to pay for&lt;br/&gt;services&lt;br/&gt;&lt;br/&gt;The choice isn&amp;#39;t between people using light clients or not. People already&lt;br/&gt;use light clients. The choice between whether we offer them a light client&lt;br/&gt;technology that is better or worse for privacy and scalability.&lt;br/&gt;&lt;br/&gt;The arguments for why BIP 157 is better than the existing light client&lt;br/&gt;technologies are available elsewhere, but to summarize:&lt;br/&gt;&lt;br/&gt;- they&amp;#39;re unique for a block, which means they can easily be cached.&lt;br/&gt;Serving a filter requires no computation, just i/o (or memory access for&lt;br/&gt;cached filter/header data) and bandwidth. There are plenty of other&lt;br/&gt;services that a full node offers that use i/o and bandwidth, such as&lt;br/&gt;serving blocks.&lt;br/&gt;- unique-for-block means clients can download from multiple sources&lt;br/&gt;- the linked-headers/filters model allows hybrid approaches, where headers&lt;br/&gt;checkpoints can be fetched from trusted/signed nodes, with intermediate&lt;br/&gt;headers and filters fetched from untrusted sources&lt;br/&gt;- less possibilities to DoS/waste resources on the serving node&lt;br/&gt;- better for privacy&lt;br/&gt;&lt;br/&gt;&amp;gt; The intention, as I understood it, of putting BIP157 directly into&lt;br/&gt;bitcoind was to essentially force all `bitcoind` users to possibly service&lt;br/&gt;BIP157 clients&lt;br/&gt;&lt;br/&gt;Please. No-one is forcing anyone to do anything. To serve filters, a node&lt;br/&gt;user needs to download the latest version, set `-blockfilterindex=basic` to&lt;br/&gt;build the compact filters index, and set `-peercfilters` to serve them over&lt;br/&gt;P2P. This is an optional, off-by-default feature.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;John&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, May 5, 2020 at 9:50 AM ZmnSCPxj via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning ariard and luke-jr&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Trust-minimization of Bitcoin security model has always relied first&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; above on running a full-node. This current paradigm may be shifted by&lt;br/&gt;&amp;gt; LN&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; where fast, affordable, confidential, censorship-resistant payment&lt;br/&gt;&amp;gt; services&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; may attract a lot of adoption without users running a full-node.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; No, it cannot be shifted. This would compromise Bitcoin itself, which for&lt;br/&gt;&amp;gt; &amp;gt; security depends on the assumption that a supermajority of the economy is&lt;br/&gt;&amp;gt; &amp;gt; verifying their incoming transactions using their own full node.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The past few years has seen severe regressions in this area, to the point&lt;br/&gt;&amp;gt; &amp;gt; where Bitcoin&amp;#39;s future seems quite bleak. Without serious improvements&lt;br/&gt;&amp;gt; to the&lt;br/&gt;&amp;gt; &amp;gt; full node ratio, Bitcoin is likely to fail.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Therefore, all efforts to improve the &amp;#34;full node-less&amp;#34; experience are&lt;br/&gt;&amp;gt; harmful,&lt;br/&gt;&amp;gt; &amp;gt; and should be actively avoided. BIP 157 improves privacy of fn-less&lt;br/&gt;&amp;gt; usage,&lt;br/&gt;&amp;gt; &amp;gt; while providing no real benefits to full node users (compared to more&lt;br/&gt;&amp;gt; &amp;gt; efficient protocols like Stratum/Electrum).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For this reason, myself and a few others oppose merging support for BIP&lt;br/&gt;&amp;gt; 157 in&lt;br/&gt;&amp;gt; &amp;gt; Core.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; BIP 157 can be implemented as a separate daemon that processes the blocks&lt;br/&gt;&amp;gt; downloaded by an attached `bitcoind`, i.e. what Wasabi does.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The intention, as I understood it, of putting BIP157 directly into&lt;br/&gt;&amp;gt; bitcoind was to essentially force all `bitcoind` users to possibly service&lt;br/&gt;&amp;gt; BIP157 clients, in the hope that a BIP157 client can contact any arbitrary&lt;br/&gt;&amp;gt; fullnode to get BIP157 service.&lt;br/&gt;&amp;gt; This is supposed to improve to the situation relative to e.g. Electrum,&lt;br/&gt;&amp;gt; where there are far fewer Electrum servers than fullnodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course, as ariard computes, deploying BIP157 could lead to an effective&lt;br/&gt;&amp;gt; DDoS on the fullnode network if a large number of BIP157 clients arise.&lt;br/&gt;&amp;gt; Though maybe this will not occur very fast?  We hope?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that the thing that *could* be done would be to have&lt;br/&gt;&amp;gt; watchtowers provide light-client services, since that seems to be the major&lt;br/&gt;&amp;gt; business model of watchtowers, as suggested by ariard as well.&lt;br/&gt;&amp;gt; This is still less than ideal, but maybe is better than nothing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20200505/be23bd38/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20200505/be23bd38/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T13:00:06Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0aug0xl66ug2adzawk4qnmq2y25ydkyu88wvd3q36m6q6atvk7pszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7mcupch</id>
    
      <title type="html">📅 Original date posted:2015-12-23 📝 Original message: Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0aug0xl66ug2adzawk4qnmq2y25ydkyu88wvd3q36m6q6atvk7pszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7mcupch" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs953te78szhcdhnykd9nnu8q7ua846s9n6ax6hw4gpes909lp35qsqaslj4&#39;&gt;nevent1q…slj4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-12-23&lt;br/&gt;📝 Original message:&lt;br/&gt;Hi all,&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve created a gist describing this idea here:&lt;br/&gt;&lt;a href=&#34;https://gist.github.com/jonnynewbs/a8ac4d7d27cb74c5b486&#34;&gt;https://gist.github.com/jonnynewbs/a8ac4d7d27cb74c5b486&lt;/a&gt; with images.&lt;br/&gt;&lt;br/&gt;I recently watched Joseph Poon&amp;#39;s presentation at the scaling bitcoin HK&lt;br/&gt;conference. He argued that there&amp;#39;s a natural tendency *away* from hubs and&lt;br/&gt;centralization in lightning network, because a hub needs to hold bitcoin in&lt;br/&gt;reserve for each payment channel:&lt;br/&gt;&lt;br/&gt;image 1:&lt;br/&gt; &lt;img src=&#34;https://gist.githubusercontent.com/jonnynewbs/a8ac4d7d27cb74c5b486/raw/839cf9152630ee8c5596b55e206b6f7f42121c61/zHub1.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;In this example Hector has tied up 40 bitcoin in order to open channels&lt;br/&gt;with 4 nodes. He needs to place his bitcoin in those channels in order to&lt;br/&gt;have enough liquidity to route payments through the channels. If all the&lt;br/&gt;bitcoin in the channel had been fronted by the nodes, he wouldn&amp;#39;t be able&lt;br/&gt;to route payments.&lt;br/&gt;&lt;br/&gt;In this example Alice tries to pay Bob through Hector, but Hector&amp;#39;s channel&lt;br/&gt;to Bob is depleted on Hector&amp;#39;s side so he can&amp;#39;t pay:&lt;br/&gt;&lt;br/&gt;image 2:&lt;br/&gt; &lt;img src=&#34;https://gist.githubusercontent.com/jonnynewbs/a8ac4d7d27cb74c5b486/raw/839cf9152630ee8c5596b55e206b6f7f42121c61/zHub2.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;The velocity of money through each of those channels is going to be low, so&lt;br/&gt;Hector&amp;#39;s profit opportunity to charge transfer fees on those channels is&lt;br/&gt;low compared to the time that he&amp;#39;s tying up his assets.&lt;br/&gt;&lt;br/&gt;I started thinking about why it was that Hector would actually need to tie&lt;br/&gt;up those funds. A properly-functioning hub should always have a net balance&lt;br/&gt;of zero - all outflows from the hub are matched by inflows from another&lt;br/&gt;node, so if the hub is working properly, it should always be solvent. Why&lt;br/&gt;then does it necessarily need to hold a reserve for each node it connects&lt;br/&gt;to?&lt;br/&gt;&lt;br/&gt;Imagine someone wanted to create a hub in lightning *without* tying up&lt;br/&gt;funds in lots of channels. One way he might start thinking about it:&lt;br/&gt;&lt;br/&gt;1. Create some metatoken/coloured coin on top of bitcoin. Lets call it&lt;br/&gt;Hectorcoin.&lt;br/&gt;2. Open channels to different nodes, where the node provides the bitcoin&lt;br/&gt;for the channel, and the hub provides Hectorcoins in the other direction.&lt;br/&gt;The hub would only need to provide a negligable amount of actual bitcoin&lt;br/&gt;value with Hectorcoins encoded on top of that small input.&lt;br/&gt;3. If the channel gets closed and the node is net positive (ie in the&lt;br/&gt;channel the bitcoin they initially provided plus some Hectorcoin), the node&lt;br/&gt;can &amp;#39;sell&amp;#39; the Hectorcoin back to the hub for bitcoin.&lt;br/&gt;&lt;br/&gt;Hector&amp;#39;s network would initially look like this. Bitcoin are in black,&lt;br/&gt;Hectorcoin are in bold green:&lt;br/&gt;&lt;br/&gt;image 3:&lt;br/&gt; &lt;img src=&#34;https://gist.githubusercontent.com/jonnynewbs/a8ac4d7d27cb74c5b486/raw/839cf9152630ee8c5596b55e206b6f7f42121c61/zHub3.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Transactions flow through the hub, and eventually Alice is 10 &amp;#39;bitcoin&amp;#39; up.&lt;br/&gt;Hector hasn&amp;#39;t sent her 10 real bitcoin through the channel, but 10&lt;br/&gt;Hectorcoin. The network now might look like this:&lt;br/&gt;&lt;br/&gt;image 4:&lt;br/&gt; &lt;img src=&#34;https://gist.githubusercontent.com/jonnynewbs/a8ac4d7d27cb74c5b486/raw/839cf9152630ee8c5596b55e206b6f7f42121c61/zHub4.jpg&#34;&gt; &lt;br/&gt;&lt;br/&gt;Note that Hector&amp;#39;s balace of (Bitcoin &#43; Hectorcoin) always remains 40.&lt;br/&gt;&lt;br/&gt;Alice now wants to cash out her channel. She closes the channel as normal,&lt;br/&gt;and then presents the Hectorcoin to Hector in exchange for actual bitcoin.&lt;br/&gt;At this point either:&lt;br/&gt;&lt;br/&gt;- Hector is holding enough bitcoin in reserve to pay out to Alice; or&lt;br/&gt;- Hector doesn&amp;#39;t hold enough bitcoin in reserve (In this scenario Hector&lt;br/&gt;has a temporary *liquidity* issue, but remains *solvent*). He therefore&lt;br/&gt;needs to close down his channels to Dan and Claire to free up his bitcoin&lt;br/&gt;tied up in those channels.&lt;br/&gt;&lt;br/&gt;This basic example requires counterparty trust in Hector. That&amp;#39;s because&lt;br/&gt;there&amp;#39;s no way to prove that he actually holds enough bitcoin in his&lt;br/&gt;reserves/channels to pay out in exchange for Hectorcoin *unless* those&lt;br/&gt;coins are provable locked up somewhere (eg a multisig), which defeats the&lt;br/&gt;whole purpose - he&amp;#39;s trying to avoid tying up value. However, many people&lt;br/&gt;might consider the efficiency and connectedness of dealing with a hub to be&lt;br/&gt;a worthwhile trade-off on balance.&lt;br/&gt;&lt;br/&gt;Hector might think about improving his hub by:&lt;br/&gt;&lt;br/&gt;- somehow providing a proof that his net position is zero and so he&amp;#39;s&lt;br/&gt;provably solvent. That would eliminate the risk of a hub going rogue,&lt;br/&gt;extracting coins from the network and becoming insolvent&lt;br/&gt;- Having some way for Alice to automatically exchange Hectorcoin for that&lt;br/&gt;value without asking Hector&amp;#39;s permission.&lt;br/&gt;&lt;br/&gt;Both of those things feel like they&amp;#39;re possible, but perhaps someone&lt;br/&gt;smarter than I am can comment on whether they actually are.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not suggesting that this is the way we want to go, but thought it was&lt;br/&gt;interesting enough to share. Interested to hear people&amp;#39;s thoughts.&lt;br/&gt;&lt;br/&gt;John&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151223/2f9e7486/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20151223/2f9e7486/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T12:45:30Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsg35vsjnma62aqmqy5rm7zl3dp3xyuk7anm6w44s4mw37pd33mepszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7qkq5kn</id>
    
      <title type="html">📅 Original date posted:2021-04-27 📝 Original message:ACK. ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsg35vsjnma62aqmqy5rm7zl3dp3xyuk7anm6w44s4mw37pd33mepszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7qkq5kn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9apdxjf50jdpqeyrvyt00py8a8szjrenrm8wufsg34l0usw73u5ggkkccf&#39;&gt;nevent1q…kccf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-27&lt;br/&gt;📝 Original message:ACK. These seem like very reasonable next steps.&lt;br/&gt;&lt;br/&gt;On Mon, Apr 26, 2021 at 8:43 PM David A. Harding via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Sun, Apr 25, 2021 at 05:31:50PM -0400, Matt Corallo via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; In general, I think its time we all agree the BIP process has simply&lt;br/&gt;&amp;gt; failed&lt;br/&gt;&amp;gt; &amp;gt; and move on. Luckily its not really all that critical and proposed&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&amp;gt; &amp;gt; documents can be placed nearly anywhere with the same effect.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I recommend:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. We add additional BIP editors, starting with Kalle Alm (if there are&lt;br/&gt;&amp;gt;    no continuing significant objections).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. We seek Luke Dashjr&amp;#39;s resignation as BIPs editor.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3. We begin treating protocol documents outside the BIPs repository as&lt;br/&gt;&amp;gt;    first-class BIP documentation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The first recommendation permits continued maintenance of existing BIPs&lt;br/&gt;&amp;gt; plus gives the additional maintainers an opportunity to rebuild the&lt;br/&gt;&amp;gt; credibility of the repository.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The second recommendation addresses the dissatisfaction of many BIP&lt;br/&gt;&amp;gt; authors and potential authors with the current editor, which I think&lt;br/&gt;&amp;gt; will discourage many of them from making additional significant&lt;br/&gt;&amp;gt; contributions to the repository.  It also seems to me to be a better use&lt;br/&gt;&amp;gt; of Luke&amp;#39;s talents and interests for him to focus on protocol research&lt;br/&gt;&amp;gt; and review rather than procedurally checking whether a bunch of&lt;br/&gt;&amp;gt; documents are well formed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The third recommendation provides an escape hatch for anyone, such as&lt;br/&gt;&amp;gt; Matt, who currently thinks the process has failed, or for anyone who&lt;br/&gt;&amp;gt; comes to that same conclusion in the future under a different editing&lt;br/&gt;&amp;gt; team.  My specific recommendations there are:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; a. Anyone writing protocol documentation in the spirit of the BIP&lt;br/&gt;&amp;gt;    process can post their idea to this mailing list like we&amp;#39;ve always&lt;br/&gt;&amp;gt;    done and, when they&amp;#39;ve finished collecting initial feedback, they can&lt;br/&gt;&amp;gt;    assign themselves a unique decentralized identifier starting with&lt;br/&gt;&amp;gt;    &amp;#34;bip-&amp;#34;.  They may also define a shorter alias that they encourage&lt;br/&gt;&amp;gt;    people to use in cases where the correct document can be inferred&lt;br/&gt;&amp;gt;    from context.  E.g.,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;       bip-wuille-taproot (bip-taproot)&lt;br/&gt;&amp;gt;       bip-towns-versionbits-min-activation-height (bip-vbmah)&lt;br/&gt;&amp;gt;       bip-todd-harding-opt-in-replace-by-fee (bip-opt-in-rbf)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; b. The author then publishes the document to any place they&amp;#39;d like,&lt;br/&gt;&amp;gt; although&lt;br/&gt;&amp;gt;    they are strongly encouraged to make any document source available&lt;br/&gt;&amp;gt;    under an open license to ensure others can create their own&lt;br/&gt;&amp;gt;    modifications.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; c. Implementations of BIPs, whether original repository BIPs or&lt;br/&gt;&amp;gt;    decentralized BIPs, link to the BIPs they implement to ensure&lt;br/&gt;&amp;gt;    researchers and developers can find the relevant protocol&lt;br/&gt;&amp;gt;    documentation.  E.g.,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/fe5e495c31de47b0ec732b943db11fe345d874af/doc/bips.md&#34;&gt;https://github.com/bitcoin/bitcoin/blob/fe5e495c31de47b0ec732b943db11fe345d874af/doc/bips.md&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;      (It may also be advisable for implementations to mirror copies of&lt;br/&gt;&amp;gt;      the BIPs they implement so later modifications to the document&lt;br/&gt;&amp;gt;      don&amp;#39;t confuse anyone.  For this reason, extremely liberal&lt;br/&gt;&amp;gt;      licensing of BIP documents is encouraged.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; d. To help maintain quality and consistency between documentation, the&lt;br/&gt;&amp;gt;    BIP editors provide a BIP document template, guidelines similar to&lt;br/&gt;&amp;gt;    the existing BIP2, and an easy-to-run format linter.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this decentralized BIPs alternative also helps address some&lt;br/&gt;&amp;gt; longstanding problems with the BIPs system: that many casual Bitcoin&lt;br/&gt;&amp;gt; users and developers think of documents in the BIPs repo as&lt;br/&gt;&amp;gt; authoritative and that there are some development teams (such as for LN)&lt;br/&gt;&amp;gt; that have already abandoned the BIPs process because, in part, they want&lt;br/&gt;&amp;gt; complete control over their own documentation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The recommendations above were developed based on conversations I had&lt;br/&gt;&amp;gt; with a few stakeholders in the BIPs process, but I did not attempt a&lt;br/&gt;&amp;gt; comprehensive survey and I certainly don&amp;#39;t claim to speak for anyone&lt;br/&gt;&amp;gt; else.  I hope the recommendations are satisfactory and I look forward to&lt;br/&gt;&amp;gt; your feedback.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210427/274ceb28/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210427/274ceb28/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T22:52:13Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0nzjq4hymhrntge23lnhps03whg6c0pqdludnmuvjkej8w5ycddgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7gzlvqe</id>
    
      <title type="html">📅 Original date posted:2021-04-23 📝 Original message:ACK ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0nzjq4hymhrntge23lnhps03whg6c0pqdludnmuvjkej8w5ycddgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7gzlvqe" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfftzn4nj584qmemd5d8p87900ga7jn5tjedddqs40s3hkgjpgfdspvseut&#39;&gt;nevent1q…seut&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-23&lt;br/&gt;📝 Original message:ACK adding Kalle.&lt;br/&gt;&lt;br/&gt;On Fri, Apr 23, 2021 at 4:36 AM Jeremy via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; ACK adding Kalle.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Kalle is a qualified reviewer / editor and well suited for this role.&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Apr 22, 2021 at 7:09 PM Luke Dashjr via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Unless there are objections, I intend to add Kalle Alm as a BIP editor to&lt;br/&gt;&amp;gt;&amp;gt; assist in merging PRs into the bips git repo.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Since there is no explicit process to adding BIP editors, IMO it should&lt;br/&gt;&amp;gt;&amp;gt; be&lt;br/&gt;&amp;gt;&amp;gt; fine to use BIP 2&amp;#39;s Process BIP progression:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; A process BIP may change status from Draft to Active when it achieves&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; rough consensus on the mailing list. Such a proposal is said to have&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; rough consensus if it has been open to discussion on the development&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; mailing list for at least one month, and no person maintains any&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; unaddressed substantiated objections to it.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; A Process BIP could be opened for each new editor, but IMO that is&lt;br/&gt;&amp;gt;&amp;gt; unnecessary. If anyone feels there is a need for a new Process BIP, we&lt;br/&gt;&amp;gt;&amp;gt; can go&lt;br/&gt;&amp;gt;&amp;gt; that route, but there is prior precedent for BIP editors appointing new&lt;br/&gt;&amp;gt;&amp;gt; BIP&lt;br/&gt;&amp;gt;&amp;gt; editors, so I think this should be fine.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Please speak up soon if you disagree.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Luke&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210423/8b232111/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210423/8b232111/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T22:52:03Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsp8ap2suz6lp7kawxlsy8fw7a4wa68ae0ku2gfcyswcjag47nyhvszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7wqzka8</id>
    
      <title type="html">📅 Original date posted:2021-03-02 📝 Original ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsp8ap2suz6lp7kawxlsy8fw7a4wa68ae0ku2gfcyswcjag47nyhvszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7wqzka8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq8e9gdc5hdhxma9vxw8w3ay9rvjpryg0pd62qqms4vlrxt2jp32cv0p8z7&#39;&gt;nevent1q…p8z7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-03-02&lt;br/&gt;📝 Original message:Antoine,&lt;br/&gt;&lt;br/&gt;Nothing in my proposal below precludes introducing a more comprehensive&lt;br/&gt;feature negotiation mechanism at some later date. The only changes I&amp;#39;m&lt;br/&gt;proposing are to Bitcoin Core&amp;#39;s policy for how it treats its peer&lt;br/&gt;connections.&lt;br/&gt;&lt;br/&gt;&amp;gt; If we don&amp;#39;t want to introduce a new message and&lt;br/&gt;&amp;gt; corresponding code changes, it would be wise at least to extract VERSION&amp;#39;s&lt;br/&gt;&amp;gt; `fRelay` and how Core handles it in its own BIP.&lt;br/&gt;&lt;br/&gt;I believe this is what BIP 60 does, or did you have something else in&lt;br/&gt;mind?&lt;br/&gt;&lt;br/&gt;&amp;gt; Explicit addr-relay negotiation will offer more&lt;br/&gt;&amp;gt; flexibility&lt;br/&gt;&lt;br/&gt;I agree!&lt;br/&gt;&lt;br/&gt;&amp;gt; (and more hygienic code paths rather than triggering data&lt;br/&gt;&amp;gt; structures initialization in few different locations).&lt;br/&gt;&lt;br/&gt;Not sure what you mean by hygienic here. This seems like a code style&lt;br/&gt;preference.&lt;br/&gt;&lt;br/&gt;&amp;gt; Given inbound connections might be attacker-controlled and tx-relay&lt;br/&gt;opt-out&lt;br/&gt;&amp;gt; signaling is also attacker-controlled, wouldn&amp;#39;t this give a bias toward an&lt;br/&gt;&amp;gt; attacker in occupying our inbound slots ? Compared to honest inbound&lt;br/&gt;peers,&lt;br/&gt;&amp;gt; which in average are going to be full-relay.&lt;br/&gt;&lt;br/&gt;Sorry - I meant that Bitcoin Core should allow a certain number of&lt;br/&gt;inbound peers that do not relay txs. This would be in addition to the&lt;br/&gt;full-relay inbound peers.&lt;br/&gt;&lt;br/&gt;John&lt;br/&gt;&lt;br/&gt;On Mon, Mar 1, 2021 at 11:11 PM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi John,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think a good counter-argument against simply using `fRelay` for this&lt;br/&gt;&amp;gt; &amp;gt; purpose is that we shouldn&amp;#39;t reuse a protocol feature designed for one&lt;br/&gt;&amp;gt; &amp;gt; function to achieve a totally different aim. However, we know that nodes&lt;br/&gt;&amp;gt; &amp;gt; on the network have been using `fRelay` to disable transaction relay&lt;br/&gt;&amp;gt; &amp;gt; since Bitcoin Core version 0.12 (when `-blocksonly` was added), and that&lt;br/&gt;&amp;gt; &amp;gt; usage was expanded to _all_ nodes running Bitcoin Core version 0.19 or&lt;br/&gt;&amp;gt; &amp;gt; later (when block-relay-only connections were introduced), so using&lt;br/&gt;&amp;gt; &amp;gt; `fRelay` to disable transaction relay is now de facto part of the p2p&lt;br/&gt;&amp;gt; &amp;gt; protocol.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think this is good practice ecosystem-wise. To understand tx-relay&lt;br/&gt;&amp;gt; opt-out from peers correctly, a _non_ Bitcoin Core client has to implement&lt;br/&gt;&amp;gt; the `fRelay` subset of BIP37, but ignore the wider part around FILTER*&lt;br/&gt;&amp;gt; messages. Or implement those messages, only to disconnect peers sending&lt;br/&gt;&amp;gt; them, thus following BIP111 requirements.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thus, future developers of bitcoin software have the choice between&lt;br/&gt;&amp;gt; implementing a standard in a non-compliant way or implementing p2p messages&lt;br/&gt;&amp;gt; for a light client protocol in a way of deprecation ? Even further, an&lt;br/&gt;&amp;gt; interpretation of BIP 37 (&amp;#34;Being able to opt-out of _inv_ messages until&lt;br/&gt;&amp;gt; the filter is set prevents a client being flooded with traffic in the brief&lt;br/&gt;&amp;gt; window of time&amp;#34;) would make it okay to send TX messages to your inbound&lt;br/&gt;&amp;gt; block-relay-only peers. And that your client shouldn&amp;#39;t be disconnected for&lt;br/&gt;&amp;gt; such behavior.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the long-term, IMHO, better to have a well-defined standard with a&lt;br/&gt;&amp;gt; clean negotiation mechanism rather than relying on code specifics of a&lt;br/&gt;&amp;gt; given Bitcoin client. If we don&amp;#39;t want to introduce a new message and&lt;br/&gt;&amp;gt; corresponding code changes, it would be wise at least to extract VERSION&amp;#39;s&lt;br/&gt;&amp;gt; `fRelay` and how Core handles it in its own BIP.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think a better approach would be for Bitcoin Core to only relay addr&lt;br/&gt;&amp;gt; &amp;gt; records to an inbound peer if it has previously received an `addr` or&lt;br/&gt;&amp;gt; &amp;gt; `addrv2` message from that peer, since that indicates definitively that&lt;br/&gt;&amp;gt; &amp;gt; the peer actively gossips `addr` records. This approach was first&lt;br/&gt;&amp;gt; &amp;gt; suggested by AJ in the original block-relay-only PR[15].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If a node is willingly to opt-out from addr-relay from one of its inbound&lt;br/&gt;&amp;gt; peers, how is it supposed to do ? Of course, you can drop such messages on&lt;br/&gt;&amp;gt; the floor, your peer is just going to waste bandwidth for nothing. IIRC&lt;br/&gt;&amp;gt; from past irc p2p meetings, we&amp;#39;re really unclear about what a&lt;br/&gt;&amp;gt; good-propagation-and-privacy-preserving addr-relay strategy should look&lt;br/&gt;&amp;gt; like. Note, that distrusting your inbound peers with your addr-relay might&lt;br/&gt;&amp;gt; be a sane direction. Explicit addr-relay negotiation will offer more&lt;br/&gt;&amp;gt; flexibility (and more hygienic code paths rather than triggering data&lt;br/&gt;&amp;gt; structures initialization in few different locations).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; - update the inbound eviction logic to protect more inbound peers which&lt;br/&gt;&amp;gt; &amp;gt; do not have transaction relay data structures.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given inbound connections might be attacker-controlled and tx-relay&lt;br/&gt;&amp;gt; opt-out signaling is also attacker-controlled, wouldn&amp;#39;t this give a bias&lt;br/&gt;&amp;gt; toward an attacker in occupying our inbound slots ? Compared to honest&lt;br/&gt;&amp;gt; inbound peers, which in average are going to be full-relay.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le lun. 1 mars 2021 à 16:07, John Newbery via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi Suhas,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thank you for this proposal. I agree with your aims, but I think a new&lt;br/&gt;&amp;gt;&amp;gt; P2P message isn&amp;#39;t necessary to achieve them.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Motivation&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; There are two distinct (but interacting) motivations:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1. Allow a node to accept more incoming connections which will only be&lt;br/&gt;&amp;gt;&amp;gt;    used for block propagation (no transaction relay or addr gossip),&lt;br/&gt;&amp;gt;&amp;gt;    while minimizing resource requirements.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 2. Prevent `addr` gossip messages from being sent to peers which will&lt;br/&gt;&amp;gt;&amp;gt;    &amp;#39;black hole&amp;#39; those addrs (i.e. not relay them further).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; These motivations interact because if we simply increase the number of&lt;br/&gt;&amp;gt;&amp;gt; block-relay-only connections that nodes make without making any&lt;br/&gt;&amp;gt;&amp;gt; allowance for the fact those connections won&amp;#39;t gossip addr records, then&lt;br/&gt;&amp;gt;&amp;gt; we&amp;#39;ll increase the number of addr black holes and worsen addr gossip.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Using fRelay=false to signal no transaction relay.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; `fRelay` is an optional field in the `version` message. There are three&lt;br/&gt;&amp;gt;&amp;gt; BIPs concerned with `fRelay`:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - BIP 37[1] introduced the `fRelay` field to indicate to the recipient&lt;br/&gt;&amp;gt;&amp;gt;   that they must not relay transactions over the connection until a&lt;br/&gt;&amp;gt;&amp;gt;   `filteradd` message has been received.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - BIP 60[2] aimed to make the `fRelay` field mandatory. It is not clear&lt;br/&gt;&amp;gt;&amp;gt;   how widely this BIP has been adopted by implementations.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - BIP 111[3] introduced a `NODE_BLOOM` service bit to indicate that&lt;br/&gt;&amp;gt;&amp;gt;   bloom filters are served by this node. According to this BIP, &amp;#34;If a&lt;br/&gt;&amp;gt;&amp;gt;   node does not support bloom filters but receives a &amp;#34;filterload&amp;#34;,&lt;br/&gt;&amp;gt;&amp;gt;   &amp;#34;filteradd&amp;#34;, or &amp;#34;filterclear&amp;#34; message from a peer the node should&lt;br/&gt;&amp;gt;&amp;gt;   disconnect that peer immediately.&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Within Bitcoin Core:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - PR 1795[4] (merged in January 2013) added support for BIP 37 Bloom&lt;br/&gt;&amp;gt;&amp;gt;   filters.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - Since PR 2763[5] (merged in June 2013), Bitcoin Core will _always_&lt;br/&gt;&amp;gt;&amp;gt;   include the `fRelay` flag in `version` messages that it sends. Bitcoin&lt;br/&gt;&amp;gt;&amp;gt;   Core will tolerate the `fRelay` field being present or absent in any&lt;br/&gt;&amp;gt;&amp;gt;   `version` message that it receives[6].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - PR 6579[7] (merged in August 2015) implemented BIP 111. From that&lt;br/&gt;&amp;gt;&amp;gt;   point on, a Bitcoin Core node would disconnect peers that sent it&lt;br/&gt;&amp;gt;&amp;gt;   `filter*` messages if it hadn&amp;#39;t enabled `NODE_BLOOM`, provided the&lt;br/&gt;&amp;gt;&amp;gt;   peer&amp;#39;s version was &amp;gt;= 70011. In PR 7708[8] (merged in March 2016) this&lt;br/&gt;&amp;gt;&amp;gt;   was extended to disconnect any peer that sends a `filter*` message,&lt;br/&gt;&amp;gt;&amp;gt;   regardless of its version (in general, a &amp;#39;polite disconnect&amp;#39; for any&lt;br/&gt;&amp;gt;&amp;gt;   peer that requests an unsupported service is probably the best&lt;br/&gt;&amp;gt;&amp;gt;   behaviour). In PR 16152[9] (merged in July 2019), serving Bloom&lt;br/&gt;&amp;gt;&amp;gt;   filters was disabled by default, due to potential denial-of-service&lt;br/&gt;&amp;gt;&amp;gt;   attacks being possible against nodes which serve bloom filters on&lt;br/&gt;&amp;gt;&amp;gt;   public connections.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - PR 6993[10] (merged in November 2015) started reusing the `fRelay`&lt;br/&gt;&amp;gt;&amp;gt;   field for the new `-blocksonly` mode. If Bitcoin Core is started with&lt;br/&gt;&amp;gt;&amp;gt;   `-blocksonly` configured, then it includes `fRelay=false` in all of&lt;br/&gt;&amp;gt;&amp;gt;   the `version` messages it sends. In PR 15759[11] (merged  in September&lt;br/&gt;&amp;gt;&amp;gt;   2019), this usage of `fRelay` to permanently disable tx relay was&lt;br/&gt;&amp;gt;&amp;gt;   extended for use by the new block-relay only connection type.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The net effect is that `fRelay` is already being used to indicate that&lt;br/&gt;&amp;gt;&amp;gt; transactions should not be relayed over a connection. In the motivation&lt;br/&gt;&amp;gt;&amp;gt; for your BIP, you write:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The low-bandwidth / minimal-resource nature of these connections is&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; currently known only by the initiator of the connection; this is&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; because the transaction relay field in the version message is not a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; permanent setting for the lifetime of the connection.  Consequently, a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; node receiving an inbound connection with transaction relay disabled&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; cannot distinguish between a peer that will never enable transaction&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; relay (as described in BIP 37) and one that will...&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; However, as AJ points out in his response [12], the Bitcoin Core node&lt;br/&gt;&amp;gt;&amp;gt; _does_ know whether transaction relay can be supported as soon as the&lt;br/&gt;&amp;gt;&amp;gt; `version` message is received:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; [...] you either set m_tx_relay-&amp;gt;fRelayTxes to true via the VERSION&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; message (either explicitly or by not setting fRelay), or you enable it&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; later with FILTERLOAD or FILTERCLEAR, both of which will cause a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; disconnect if bloom filters aren&amp;#39;t supported. Bloom filter support is&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; (optionally?) indicated via a service bit (BIP 111), so you could&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; assume you know whether they&amp;#39;re supported as soon as you receive the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; VERSION line.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; i.e. if Bitcoin Core node is running under normal configuration with&lt;br/&gt;&amp;gt;&amp;gt; bloom filters disabled for public connections (which is both the default&lt;br/&gt;&amp;gt;&amp;gt; setting and highly recommended due to DoS concerns), then as soon as it&lt;br/&gt;&amp;gt;&amp;gt; receives a `version` message with `fRelay=false`, it can be sure that&lt;br/&gt;&amp;gt;&amp;gt; there will never be any transaction relay with that peer. If the peer&lt;br/&gt;&amp;gt;&amp;gt; later tries to enable transaction relay by sending a `filterload`&lt;br/&gt;&amp;gt;&amp;gt; message, then the node will disconnect that peer immediately.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; In summary, we can continue using the `fRelay` field to indicate that&lt;br/&gt;&amp;gt;&amp;gt; no transaction relay can happen for the entire lifetime of the&lt;br/&gt;&amp;gt;&amp;gt; connection.  Bitcoin Core can postpone allocating resources for&lt;br/&gt;&amp;gt;&amp;gt; transaction relay data structures until after the version message has&lt;br/&gt;&amp;gt;&amp;gt; been received to minimize resource usage for incoming block-relay-only&lt;br/&gt;&amp;gt;&amp;gt; connections. A rough implementation is here[13]. Obviously, a node that&lt;br/&gt;&amp;gt;&amp;gt; has been configured to serve bloom filters on public connections would&lt;br/&gt;&amp;gt;&amp;gt; not be able to take advantage of this and accept additional incoming&lt;br/&gt;&amp;gt;&amp;gt; block-relay-only peers, but I think that&amp;#39;s fine - we already discourage&lt;br/&gt;&amp;gt;&amp;gt; that configuration.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think a good counter-argument against simply using `fRelay` for this&lt;br/&gt;&amp;gt;&amp;gt; purpose is that we shouldn&amp;#39;t reuse a protocol feature designed for one&lt;br/&gt;&amp;gt;&amp;gt; function to achieve a totally different aim. However, we know that nodes&lt;br/&gt;&amp;gt;&amp;gt; on the network have been using `fRelay` to disable transaction relay&lt;br/&gt;&amp;gt;&amp;gt; since Bitcoin Core version 0.12 (when `-blocksonly` was added), and that&lt;br/&gt;&amp;gt;&amp;gt; usage was expanded to _all_ nodes running Bitcoin Core version 0.19 or&lt;br/&gt;&amp;gt;&amp;gt; later (when block-relay-only connections were introduced), so using&lt;br/&gt;&amp;gt;&amp;gt; `fRelay` to disable transaction relay is now de facto part of the p2p&lt;br/&gt;&amp;gt;&amp;gt; protocol.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Preventing addr black holes&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Addresses of potential peers are gossiped around the p2p network using&lt;br/&gt;&amp;gt;&amp;gt; `addr` messages. When a Bitcoin Core node learns of a new `addr` record,&lt;br/&gt;&amp;gt;&amp;gt; it will relay that record to one or two of its peers, chosen at&lt;br/&gt;&amp;gt;&amp;gt; random[14]. The idea is that eventually the `addr` record will reach&lt;br/&gt;&amp;gt;&amp;gt; most of the nodes on the network.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If there are too many nodes on the network that receive `addr` records&lt;br/&gt;&amp;gt;&amp;gt; and do not relay those records on to their peers (termed _addr black&lt;br/&gt;&amp;gt;&amp;gt; hole_ nodes), then propagation of those `addr` records suffers -- any&lt;br/&gt;&amp;gt;&amp;gt; individual `addr` record is unlikely to reach a large proportion of&lt;br/&gt;&amp;gt;&amp;gt; nodes on the network.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Since a motivation for block-relay-only connections is to protect&lt;br/&gt;&amp;gt;&amp;gt; against eclipse attacks and thwart network topology analysis, Bitcoin&lt;br/&gt;&amp;gt;&amp;gt; Core will not relay `addr` records on those connections, and will ignore&lt;br/&gt;&amp;gt;&amp;gt; any `addr` record received over those connections. Therefore, increasing&lt;br/&gt;&amp;gt;&amp;gt; the number of block-relay-only connections without changing the `addr`&lt;br/&gt;&amp;gt;&amp;gt; gossip logic is likely to increase the prevalence of addr black holes,&lt;br/&gt;&amp;gt;&amp;gt; and negatively impact addr propagation. This is why BIP 338 includes:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; It is RECOMMENDED that a node that has sent or received a disabletx&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; message to/from a peer not send any of these messages to the peer:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; - addr/getaddr&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; - addrv2 (BIP 155)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I think a better approach would be for Bitcoin Core to only relay addr&lt;br/&gt;&amp;gt;&amp;gt; records to an inbound peer if it has previously received an `addr` or&lt;br/&gt;&amp;gt;&amp;gt; `addrv2` message from that peer, since that indicates definitively that&lt;br/&gt;&amp;gt;&amp;gt; the peer actively gossips `addr` records. This approach was first&lt;br/&gt;&amp;gt;&amp;gt; suggested by AJ in the original block-relay-only PR[15].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; An advantage of this approach is that it will improve addr propagation&lt;br/&gt;&amp;gt;&amp;gt; immediately and without any change to the P2P protocol, and will prevent&lt;br/&gt;&amp;gt;&amp;gt; sending `addr` records to all addr black holes (such as light clients),&lt;br/&gt;&amp;gt;&amp;gt; not just incoming block-relay-only connections.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; # Conclusion&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; We can increase the permitted number of inbound block-relay-only peers&lt;br/&gt;&amp;gt;&amp;gt; while minimizing resource requirement _and_ improving addr record&lt;br/&gt;&amp;gt;&amp;gt; propagation, without any changes to the p2p protocol required.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I propose that for Bitcoin Core version 22.0:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - only initialize the transaction relay data structures after the&lt;br/&gt;&amp;gt;&amp;gt;   `version` message is received, and only if fRelay=true and&lt;br/&gt;&amp;gt;&amp;gt;   `NODE_BLOOM` is not offered on this connection.&lt;br/&gt;&amp;gt;&amp;gt; - only initialize the addr data structures for inbound connections when&lt;br/&gt;&amp;gt;&amp;gt;   an `addr`, `addrv2` or `getaddr` message is received on the&lt;br/&gt;&amp;gt;&amp;gt;   connection, and only consider a connection for addr relay if its addr&lt;br/&gt;&amp;gt;&amp;gt;   data structures are initialized.&lt;br/&gt;&amp;gt;&amp;gt; - update the inbound eviction logic to protect more inbound peers which&lt;br/&gt;&amp;gt;&amp;gt;   do not have transaction relay data structures.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Then, in version 23.0:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; - modestly increase the number of outbound block-relay-only connections.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; John&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0060.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0060.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/1795&#34;&gt;https://github.com/bitcoin/bitcoin/pull/1795&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [5] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/2763&#34;&gt;https://github.com/bitcoin/bitcoin/pull/2763&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [6]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/e49117470b77fb7d53be122c6490ba163c6e304d/src/net_processing.cpp#L2582-L2583&#34;&gt;https://github.com/bitcoin/bitcoin/blob/e49117470b77fb7d53be122c6490ba163c6e304d/src/net_processing.cpp#L2582-L2583&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [7] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6579&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6579&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [8] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/7708&#34;&gt;https://github.com/bitcoin/bitcoin/pull/7708&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [9] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16152&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16152&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [10] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6993&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6993&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [11] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [12]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-January/018347.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-January/018347.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [13] &lt;a href=&#34;https://github.com/jnewbery/bitcoin/tree/2021-02-lazy-init-peer&#34;&gt;https://github.com/jnewbery/bitcoin/tree/2021-02-lazy-init-peer&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [14]&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/e52ce9f2b312b3cf3b0837918e07d7603e241d63/src/net_processing.cpp#L1696-L1700&#34;&gt;https://github.com/bitcoin/bitcoin/blob/e52ce9f2b312b3cf3b0837918e07d7603e241d63/src/net_processing.cpp#L1696-L1700&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; [15] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759#issuecomment-527012757&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759#issuecomment-527012757&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; I&amp;#39;m proposing the addition of a new, optional p2p message to allow&lt;br/&gt;&amp;gt;&amp;gt; peers to communicate that they do not want to send or receive (loose)&lt;br/&gt;&amp;gt;&amp;gt; transactions for the lifetime of a connection.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The goal of this message is to help facilitate connections on the&lt;br/&gt;&amp;gt;&amp;gt; network over which only block-related data (blocks/headers/compact&lt;br/&gt;&amp;gt;&amp;gt; blocks/etc) are relayed, to create low-resource connections that help&lt;br/&gt;&amp;gt;&amp;gt; protect against partition attacks on the network.  In particular, by adding&lt;br/&gt;&amp;gt;&amp;gt; a network message that communicates that transactions will not be relayed&lt;br/&gt;&amp;gt;&amp;gt; for the life of the connection, we ease the implementation of software that&lt;br/&gt;&amp;gt;&amp;gt; could have increased inbound connection limits for such peers, which in&lt;br/&gt;&amp;gt;&amp;gt; turn will make it easier to add additional persistent block-relay-only&lt;br/&gt;&amp;gt;&amp;gt; connections on the network -- strengthening network security for little&lt;br/&gt;&amp;gt;&amp;gt; additional bandwidth.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Software has been deployed for over a year now which makes such&lt;br/&gt;&amp;gt;&amp;gt; connections, using the BIP37/BIP60 &amp;#34;fRelay&amp;#34; field in the version message to&lt;br/&gt;&amp;gt;&amp;gt; signal that transactions should not be sent initially.  However, BIP37&lt;br/&gt;&amp;gt;&amp;gt; allows for transaction relay to be enabled later in the connection&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt; lifetime, complicating software that would try to distinguish inbound peers&lt;br/&gt;&amp;gt;&amp;gt; that will never relay transactions from those that might.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This proposal would add a single new p2p message, &amp;#34;disabletx&amp;#34;, which&lt;br/&gt;&amp;gt;&amp;gt; (if used at all) must be sent between version and verack.  I propose that&lt;br/&gt;&amp;gt;&amp;gt; this message is valid for peers advertising protocol version 70017 or&lt;br/&gt;&amp;gt;&amp;gt; higher.  Software is free to implement this BIP or ignore this message and&lt;br/&gt;&amp;gt;&amp;gt; remain compatible with software that does implement it.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Full text of the proposed BIP is below.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Suhas&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ---------------------------------------------------&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   BIP: XXX&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Layer: Peer Services&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Title: Disable transaction relay message&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Author: Suhas Daftuar &amp;lt;sdaftuar at chaincode.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Comments-URI:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Status: Draft&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Type: Standards Track&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   Created: 2020-09-03&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   License: BSD-2-Clause&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ==Abstract==&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This BIP describes a change to the p2p protocol to allow a node to tell&lt;br/&gt;&amp;gt;&amp;gt; a peer&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; that a connection will not be used for transaction relay, to support&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; block-relay-only connections that are currently in use on the network.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ==Motivation==&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; For nearly the past year, software has been deployed[1] which initiates&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; connections on the Bitcoin network and sets the transaction relay field&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; (introduced by BIP 37 and also defined in BIP 60) to false, to prevent&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; transaction relay from occurring on the connection. Additionally, addr&lt;br/&gt;&amp;gt;&amp;gt; messages&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; received from the peer are ignored by this software.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The purpose of these connections is two-fold: by making additional&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; low-bandwidth connections on which blocks can propagate, the robustness&lt;br/&gt;&amp;gt;&amp;gt; of a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; node to network partitioning attacks is strengthened.  Additionally, by&lt;br/&gt;&amp;gt;&amp;gt; not&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; relaying transactions and ignoring received addresses, the ability of an&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; adversary to learn the complete network graph (or a subgraph) is&lt;br/&gt;&amp;gt;&amp;gt; reduced[2],&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; which in turn increases the cost or difficulty to an attacker seeking&lt;br/&gt;&amp;gt;&amp;gt; to carry&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; out a network partitioning attack (when compared with having such&lt;br/&gt;&amp;gt;&amp;gt; knowledge).&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The low-bandwidth / minimal-resource nature of these connections is&lt;br/&gt;&amp;gt;&amp;gt; currently&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; known only by the initiator of the connection; this is because the&lt;br/&gt;&amp;gt;&amp;gt; transaction&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; relay field in the version message is not a permanent setting for the&lt;br/&gt;&amp;gt;&amp;gt; lifetime&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; of the connection.  Consequently, a node receiving an inbound&lt;br/&gt;&amp;gt;&amp;gt; connection with&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; transaction relay disabled cannot distinguish between a peer that will&lt;br/&gt;&amp;gt;&amp;gt; never&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; enable transaction relay (as described in BIP 37) and one that will.&lt;br/&gt;&amp;gt;&amp;gt; Moreover,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; the node also cannot determine that the incoming connection will ignore&lt;br/&gt;&amp;gt;&amp;gt; relayed&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; addresses; with that knowledge a node would likely choose other peers to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; receive announced addresses instead.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This proposal adds a new, optional message that a node can send a peer&lt;br/&gt;&amp;gt;&amp;gt; when&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; initiating a connection to that peer, to indicate that connection&lt;br/&gt;&amp;gt;&amp;gt; should not be&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; used for transaction-relay for the connection&amp;#39;s lifetime. In addition,&lt;br/&gt;&amp;gt;&amp;gt; without&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; a current mechanism to negotiate whether addresses should be relayed on&lt;br/&gt;&amp;gt;&amp;gt; a&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; connection, this BIP suggests that address messages not be sent on&lt;br/&gt;&amp;gt;&amp;gt; links where&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; tx-relay has been disabled.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # A new disabletx message is added, which is defined as an empty&lt;br/&gt;&amp;gt;&amp;gt; message where pchCommand == &amp;#34;disabletx&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # The protocol version of nodes implementing this BIP must be set to&lt;br/&gt;&amp;gt;&amp;gt; 70017 or higher.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # If a node sets the transaction relay field in the version message to&lt;br/&gt;&amp;gt;&amp;gt; a peer to false, then the disabletx message MAY also be sent in response to&lt;br/&gt;&amp;gt;&amp;gt; a version message from that peer if the peer&amp;#39;s protocol version is &amp;gt;=&lt;br/&gt;&amp;gt;&amp;gt; 70017. If sent, the disabletx message MUST be sent prior to sending a&lt;br/&gt;&amp;gt;&amp;gt; verack.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # A node that has sent or received a disabletx message to/from a peer&lt;br/&gt;&amp;gt;&amp;gt; MUST NOT send any of these messages to the peer:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ## inv messages for transactions&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ## getdata messages for transactions&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ## getdata messages for merkleblock (BIP 37)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ## filteradd/filterload/filterclear (BIP 37)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ## mempool (BIP 35)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # It is RECOMMENDED that a node that has sent or received a disabletx&lt;br/&gt;&amp;gt;&amp;gt; message to/from a peer not send any of these messages to the peer:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ## addr/getaddr&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ## addrv2 (BIP 155)&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # The behavior regarding sending or processing other message types is&lt;br/&gt;&amp;gt;&amp;gt; not specified by this BIP.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # Nodes MAY decide to not remain connected to peers that send this&lt;br/&gt;&amp;gt;&amp;gt; message (for example, if trying to find a peer that will relay&lt;br/&gt;&amp;gt;&amp;gt; transactions).&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ==Compatibility==&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Nodes with protocol version &amp;gt;= 70017 that do not implement this BIP,&lt;br/&gt;&amp;gt;&amp;gt; and nodes&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; with protocol version &amp;lt; 70017, will continue to remain compatible with&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; implementing software: transactions would not be relayed to peers&lt;br/&gt;&amp;gt;&amp;gt; sending the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; disabletx message (provided that BIP 37 or BIP 60 has been&lt;br/&gt;&amp;gt;&amp;gt; implemented), and while&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; periodic address relay may still take place, software implementing this&lt;br/&gt;&amp;gt;&amp;gt; BIP&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; should not be disconnecting such peers solely for that reason.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Disabling address relay is suggested but not required by this BIP, to&lt;br/&gt;&amp;gt;&amp;gt; allow for&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; future protocol extensions that might specify more carefully how&lt;br/&gt;&amp;gt;&amp;gt; address relay&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; is to be negotiated. This BIP&amp;#39;s recommendations for software to not&lt;br/&gt;&amp;gt;&amp;gt; relay&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; addresses is intended to be interpreted as guidance in the absence of&lt;br/&gt;&amp;gt;&amp;gt; any such&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; future protocol extension, to accommodate existing software behavior.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Note that all messages specified in BIP 152, including blocktxn and&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; getblocktxn, are permitted between peers that have sent/received a&lt;br/&gt;&amp;gt;&amp;gt; disabletx&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; message, subject to the feature negotiation of BIP 152.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ==Implementation==&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; TBD&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ==References==&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # Bitcoin Core has [&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; implemented this functionality] since version 0.19.0.1, released in&lt;br/&gt;&amp;gt;&amp;gt; November 2019.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; # For example, see&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&#34;&gt;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&lt;/a&gt; and&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://arxiv.org/pdf/1812.00942.pdf&#34;&gt;https://arxiv.org/pdf/1812.00942.pdf&lt;/a&gt;.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; ==Copyright==&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This BIP is licensed under the 2-clause BSD license.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Wed, Jan 6, 2021 at 4:35 PM Suhas Daftuar via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m proposing the addition of a new, optional p2p message to allow peers&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to communicate that they do not want to send or receive (loose)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transactions for the lifetime of a connection.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The goal of this message is to help facilitate connections on the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; network over which only block-related data (blocks/headers/compact&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; blocks/etc) are relayed, to create low-resource connections that help&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; protect against partition attacks on the network.  In particular, by adding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a network message that communicates that transactions will not be relayed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; for the life of the connection, we ease the implementation of software that&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; could have increased inbound connection limits for such peers, which in&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; turn will make it easier to add additional persistent block-relay-only&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; connections on the network -- strengthening network security for little&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; additional bandwidth.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Software has been deployed for over a year now which makes such&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; connections, using the BIP37/BIP60 &amp;#34;fRelay&amp;#34; field in the version message to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; signal that transactions should not be sent initially.  However, BIP37&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; allows for transaction relay to be enabled later in the connection&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; lifetime, complicating software that would try to distinguish inbound peers&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; that will never relay transactions from those that might.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This proposal would add a single new p2p message, &amp;#34;disabletx&amp;#34;, which (if&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; used at all) must be sent between version and verack.  I propose that this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; message is valid for peers advertising protocol version 70017 or higher.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Software is free to implement this BIP or ignore this message and remain&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; compatible with software that does implement it.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Full text of the proposed BIP is below.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Suhas&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ---------------------------------------------------&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   BIP: XXX&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Layer: Peer Services&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Title: Disable transaction relay message&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Author: Suhas Daftuar &amp;lt;sdaftuar at chaincode.com&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Comments-URI:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Status: Draft&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Type: Standards Track&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   Created: 2020-09-03&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;   License: BSD-2-Clause&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Abstract==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This BIP describes a change to the p2p protocol to allow a node to tell a peer&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; that a connection will not be used for transaction relay, to support&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; block-relay-only connections that are currently in use on the network.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Motivation==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; For nearly the past year, software has been deployed[1] which initiates&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; connections on the Bitcoin network and sets the transaction relay field&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; (introduced by BIP 37 and also defined in BIP 60) to false, to prevent&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transaction relay from occurring on the connection. Additionally, addr messages&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; received from the peer are ignored by this software.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The purpose of these connections is two-fold: by making additional&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; low-bandwidth connections on which blocks can propagate, the robustness of a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; node to network partitioning attacks is strengthened.  Additionally, by not&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; relaying transactions and ignoring received addresses, the ability of an&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; adversary to learn the complete network graph (or a subgraph) is reduced[2],&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; which in turn increases the cost or difficulty to an attacker seeking to carry&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; out a network partitioning attack (when compared with having such knowledge).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The low-bandwidth / minimal-resource nature of these connections is currently&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; known only by the initiator of the connection; this is because the transaction&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; relay field in the version message is not a permanent setting for the lifetime&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; of the connection.  Consequently, a node receiving an inbound connection with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transaction relay disabled cannot distinguish between a peer that will never&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; enable transaction relay (as described in BIP 37) and one that will.  Moreover,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; the node also cannot determine that the incoming connection will ignore relayed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; addresses; with that knowledge a node would likely choose other peers to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; receive announced addresses instead.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This proposal adds a new, optional message that a node can send a peer when&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; initiating a connection to that peer, to indicate that connection should not be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; used for transaction-relay for the connection&amp;#39;s lifetime. In addition, without&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; a current mechanism to negotiate whether addresses should be relayed on a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; connection, this BIP suggests that address messages not be sent on links where&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; tx-relay has been disabled.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # A new disabletx message is added, which is defined as an empty message where pchCommand == &amp;#34;disabletx&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # The protocol version of nodes implementing this BIP must be set to 70017 or higher.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # If a node sets the transaction relay field in the version message to a peer to false, then the disabletx message MAY also be sent in response to a version message from that peer if the peer&amp;#39;s protocol version is &amp;gt;= 70017. If sent, the disabletx message MUST be sent prior to sending a verack.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # A node that has sent or received a disabletx message to/from a peer MUST NOT send any of these messages to the peer:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## inv messages for transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## getdata messages for transactions&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## getdata messages for merkleblock (BIP 37)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## filteradd/filterload/filterclear (BIP 37)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## mempool (BIP 35)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # It is RECOMMENDED that a node that has sent or received a disabletx message to/from a peer not send any of these messages to the peer:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## addr/getaddr&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ## addrv2 (BIP 155)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # The behavior regarding sending or processing other message types is not specified by this BIP.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # Nodes MAY decide to not remain connected to peers that send this message (for example, if trying to find a peer that will relay transactions).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Compatibility==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Nodes with protocol version &amp;gt;= 70017 that do not implement this BIP, and nodes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; with protocol version &amp;lt; 70017, will continue to remain compatible with&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; implementing software: transactions would not be relayed to peers sending the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; disabletx message (provided that BIP 37 or BIP 60 has been implemented), and while&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; periodic address relay may still take place, software implementing this BIP&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; should not be disconnecting such peers solely for that reason.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Disabling address relay is suggested but not required by this BIP, to allow for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; future protocol extensions that might specify more carefully how address relay&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; is to be negotiated. This BIP&amp;#39;s recommendations for software to not relay&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; addresses is intended to be interpreted as guidance in the absence of any such&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; future protocol extension, to accommodate existing software behavior.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Note that all messages specified in BIP 152, including blocktxn and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; getblocktxn, are permitted between peers that have sent/received a disabletx&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; message, subject to the feature negotiation of BIP 152.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Implementation==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; TBD&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==References==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # Bitcoin Core has [&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759&lt;/a&gt; implemented this functionality] since version 0.19.0.1, released in November 2019.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; # For example, see &lt;a href=&#34;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&#34;&gt;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&lt;/a&gt; and &lt;a href=&#34;https://arxiv.org/pdf/1812.00942.pdf&#34;&gt;https://arxiv.org/pdf/1812.00942.pdf&lt;/a&gt;.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; ==Copyright==&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; This BIP is licensed under the 2-clause BSD license.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210302/ff7e2b23/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210302/ff7e2b23/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:29:50Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsg7rdqceuh4rdm59x6n5x027sllycepcvwudej34gxdqpreunv7gczyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7lu7uec</id>
    
      <title type="html">📅 Original date posted:2021-03-01 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsg7rdqceuh4rdm59x6n5x027sllycepcvwudej34gxdqpreunv7gczyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7lu7uec" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg3e3mcj8gtx99ka3ef5wgs0c23m067kltxgtgvajefulzjrfxx3cz34pa5&#39;&gt;nevent1q…4pa5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-03-01&lt;br/&gt;📝 Original message:Hi Suhas,&lt;br/&gt;&lt;br/&gt;Thank you for this proposal. I agree with your aims, but I think a new&lt;br/&gt;P2P message isn&amp;#39;t necessary to achieve them.&lt;br/&gt;&lt;br/&gt;# Motivation&lt;br/&gt;&lt;br/&gt;There are two distinct (but interacting) motivations:&lt;br/&gt;&lt;br/&gt;1. Allow a node to accept more incoming connections which will only be&lt;br/&gt;   used for block propagation (no transaction relay or addr gossip),&lt;br/&gt;   while minimizing resource requirements.&lt;br/&gt;&lt;br/&gt;2. Prevent `addr` gossip messages from being sent to peers which will&lt;br/&gt;   &amp;#39;black hole&amp;#39; those addrs (i.e. not relay them further).&lt;br/&gt;&lt;br/&gt;These motivations interact because if we simply increase the number of&lt;br/&gt;block-relay-only connections that nodes make without making any&lt;br/&gt;allowance for the fact those connections won&amp;#39;t gossip addr records, then&lt;br/&gt;we&amp;#39;ll increase the number of addr black holes and worsen addr gossip.&lt;br/&gt;&lt;br/&gt;# Using fRelay=false to signal no transaction relay.&lt;br/&gt;&lt;br/&gt;`fRelay` is an optional field in the `version` message. There are three&lt;br/&gt;BIPs concerned with `fRelay`:&lt;br/&gt;&lt;br/&gt;- BIP 37[1] introduced the `fRelay` field to indicate to the recipient&lt;br/&gt;  that they must not relay transactions over the connection until a&lt;br/&gt;  `filteradd` message has been received.&lt;br/&gt;&lt;br/&gt;- BIP 60[2] aimed to make the `fRelay` field mandatory. It is not clear&lt;br/&gt;  how widely this BIP has been adopted by implementations.&lt;br/&gt;&lt;br/&gt;- BIP 111[3] introduced a `NODE_BLOOM` service bit to indicate that&lt;br/&gt;  bloom filters are served by this node. According to this BIP, &amp;#34;If a&lt;br/&gt;  node does not support bloom filters but receives a &amp;#34;filterload&amp;#34;,&lt;br/&gt;  &amp;#34;filteradd&amp;#34;, or &amp;#34;filterclear&amp;#34; message from a peer the node should&lt;br/&gt;  disconnect that peer immediately.&amp;#34;&lt;br/&gt;&lt;br/&gt;Within Bitcoin Core:&lt;br/&gt;&lt;br/&gt;- PR 1795[4] (merged in January 2013) added support for BIP 37 Bloom&lt;br/&gt;  filters.&lt;br/&gt;&lt;br/&gt;- Since PR 2763[5] (merged in June 2013), Bitcoin Core will _always_&lt;br/&gt;  include the `fRelay` flag in `version` messages that it sends. Bitcoin&lt;br/&gt;  Core will tolerate the `fRelay` field being present or absent in any&lt;br/&gt;  `version` message that it receives[6].&lt;br/&gt;&lt;br/&gt;- PR 6579[7] (merged in August 2015) implemented BIP 111. From that&lt;br/&gt;  point on, a Bitcoin Core node would disconnect peers that sent it&lt;br/&gt;  `filter*` messages if it hadn&amp;#39;t enabled `NODE_BLOOM`, provided the&lt;br/&gt;  peer&amp;#39;s version was &amp;gt;= 70011. In PR 7708[8] (merged in March 2016) this&lt;br/&gt;  was extended to disconnect any peer that sends a `filter*` message,&lt;br/&gt;  regardless of its version (in general, a &amp;#39;polite disconnect&amp;#39; for any&lt;br/&gt;  peer that requests an unsupported service is probably the best&lt;br/&gt;  behaviour). In PR 16152[9] (merged in July 2019), serving Bloom&lt;br/&gt;  filters was disabled by default, due to potential denial-of-service&lt;br/&gt;  attacks being possible against nodes which serve bloom filters on&lt;br/&gt;  public connections.&lt;br/&gt;&lt;br/&gt;- PR 6993[10] (merged in November 2015) started reusing the `fRelay`&lt;br/&gt;  field for the new `-blocksonly` mode. If Bitcoin Core is started with&lt;br/&gt;  `-blocksonly` configured, then it includes `fRelay=false` in all of&lt;br/&gt;  the `version` messages it sends. In PR 15759[11] (merged  in September&lt;br/&gt;  2019), this usage of `fRelay` to permanently disable tx relay was&lt;br/&gt;  extended for use by the new block-relay only connection type.&lt;br/&gt;&lt;br/&gt;The net effect is that `fRelay` is already being used to indicate that&lt;br/&gt;transactions should not be relayed over a connection. In the motivation&lt;br/&gt;for your BIP, you write:&lt;br/&gt;&lt;br/&gt;&amp;gt; The low-bandwidth / minimal-resource nature of these connections is&lt;br/&gt;&amp;gt; currently known only by the initiator of the connection; this is&lt;br/&gt;&amp;gt; because the transaction relay field in the version message is not a&lt;br/&gt;&amp;gt; permanent setting for the lifetime of the connection.  Consequently, a&lt;br/&gt;&amp;gt; node receiving an inbound connection with transaction relay disabled&lt;br/&gt;&amp;gt; cannot distinguish between a peer that will never enable transaction&lt;br/&gt;&amp;gt; relay (as described in BIP 37) and one that will...&lt;br/&gt;&lt;br/&gt;However, as AJ points out in his response [12], the Bitcoin Core node&lt;br/&gt;_does_ know whether transaction relay can be supported as soon as the&lt;br/&gt;`version` message is received:&lt;br/&gt;&lt;br/&gt;&amp;gt; [...] you either set m_tx_relay-&amp;gt;fRelayTxes to true via the VERSION&lt;br/&gt;&amp;gt; message (either explicitly or by not setting fRelay), or you enable it&lt;br/&gt;&amp;gt; later with FILTERLOAD or FILTERCLEAR, both of which will cause a&lt;br/&gt;&amp;gt; disconnect if bloom filters aren&amp;#39;t supported. Bloom filter support is&lt;br/&gt;&amp;gt; (optionally?) indicated via a service bit (BIP 111), so you could&lt;br/&gt;&amp;gt; assume you know whether they&amp;#39;re supported as soon as you receive the&lt;br/&gt;&amp;gt; VERSION line.&lt;br/&gt;&lt;br/&gt;i.e. if Bitcoin Core node is running under normal configuration with&lt;br/&gt;bloom filters disabled for public connections (which is both the default&lt;br/&gt;setting and highly recommended due to DoS concerns), then as soon as it&lt;br/&gt;receives a `version` message with `fRelay=false`, it can be sure that&lt;br/&gt;there will never be any transaction relay with that peer. If the peer&lt;br/&gt;later tries to enable transaction relay by sending a `filterload`&lt;br/&gt;message, then the node will disconnect that peer immediately.&lt;br/&gt;&lt;br/&gt;In summary, we can continue using the `fRelay` field to indicate that&lt;br/&gt;no transaction relay can happen for the entire lifetime of the&lt;br/&gt;connection.  Bitcoin Core can postpone allocating resources for&lt;br/&gt;transaction relay data structures until after the version message has&lt;br/&gt;been received to minimize resource usage for incoming block-relay-only&lt;br/&gt;connections. A rough implementation is here[13]. Obviously, a node that&lt;br/&gt;has been configured to serve bloom filters on public connections would&lt;br/&gt;not be able to take advantage of this and accept additional incoming&lt;br/&gt;block-relay-only peers, but I think that&amp;#39;s fine - we already discourage&lt;br/&gt;that configuration.&lt;br/&gt;&lt;br/&gt;I think a good counter-argument against simply using `fRelay` for this&lt;br/&gt;purpose is that we shouldn&amp;#39;t reuse a protocol feature designed for one&lt;br/&gt;function to achieve a totally different aim. However, we know that nodes&lt;br/&gt;on the network have been using `fRelay` to disable transaction relay&lt;br/&gt;since Bitcoin Core version 0.12 (when `-blocksonly` was added), and that&lt;br/&gt;usage was expanded to _all_ nodes running Bitcoin Core version 0.19 or&lt;br/&gt;later (when block-relay-only connections were introduced), so using&lt;br/&gt;`fRelay` to disable transaction relay is now de facto part of the p2p&lt;br/&gt;protocol.&lt;br/&gt;&lt;br/&gt;# Preventing addr black holes&lt;br/&gt;&lt;br/&gt;Addresses of potential peers are gossiped around the p2p network using&lt;br/&gt;`addr` messages. When a Bitcoin Core node learns of a new `addr` record,&lt;br/&gt;it will relay that record to one or two of its peers, chosen at&lt;br/&gt;random[14]. The idea is that eventually the `addr` record will reach&lt;br/&gt;most of the nodes on the network.&lt;br/&gt;&lt;br/&gt;If there are too many nodes on the network that receive `addr` records&lt;br/&gt;and do not relay those records on to their peers (termed _addr black&lt;br/&gt;hole_ nodes), then propagation of those `addr` records suffers -- any&lt;br/&gt;individual `addr` record is unlikely to reach a large proportion of&lt;br/&gt;nodes on the network.&lt;br/&gt;&lt;br/&gt;Since a motivation for block-relay-only connections is to protect&lt;br/&gt;against eclipse attacks and thwart network topology analysis, Bitcoin&lt;br/&gt;Core will not relay `addr` records on those connections, and will ignore&lt;br/&gt;any `addr` record received over those connections. Therefore, increasing&lt;br/&gt;the number of block-relay-only connections without changing the `addr`&lt;br/&gt;gossip logic is likely to increase the prevalence of addr black holes,&lt;br/&gt;and negatively impact addr propagation. This is why BIP 338 includes:&lt;br/&gt;&lt;br/&gt;&amp;gt; It is RECOMMENDED that a node that has sent or received a disabletx&lt;br/&gt;&amp;gt; message to/from a peer not send any of these messages to the peer:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - addr/getaddr&lt;br/&gt;&amp;gt; - addrv2 (BIP 155)&lt;br/&gt;&lt;br/&gt;I think a better approach would be for Bitcoin Core to only relay addr&lt;br/&gt;records to an inbound peer if it has previously received an `addr` or&lt;br/&gt;`addrv2` message from that peer, since that indicates definitively that&lt;br/&gt;the peer actively gossips `addr` records. This approach was first&lt;br/&gt;suggested by AJ in the original block-relay-only PR[15].&lt;br/&gt;&lt;br/&gt;An advantage of this approach is that it will improve addr propagation&lt;br/&gt;immediately and without any change to the P2P protocol, and will prevent&lt;br/&gt;sending `addr` records to all addr black holes (such as light clients),&lt;br/&gt;not just incoming block-relay-only connections.&lt;br/&gt;&lt;br/&gt;# Conclusion&lt;br/&gt;&lt;br/&gt;We can increase the permitted number of inbound block-relay-only peers&lt;br/&gt;while minimizing resource requirement _and_ improving addr record&lt;br/&gt;propagation, without any changes to the p2p protocol required.&lt;br/&gt;&lt;br/&gt;I propose that for Bitcoin Core version 22.0:&lt;br/&gt;&lt;br/&gt;- only initialize the transaction relay data structures after the&lt;br/&gt;  `version` message is received, and only if fRelay=true and&lt;br/&gt;  `NODE_BLOOM` is not offered on this connection.&lt;br/&gt;- only initialize the addr data structures for inbound connections when&lt;br/&gt;  an `addr`, `addrv2` or `getaddr` message is received on the&lt;br/&gt;  connection, and only consider a connection for addr relay if its addr&lt;br/&gt;  data structures are initialized.&lt;br/&gt;- update the inbound eviction logic to protect more inbound peers which&lt;br/&gt;  do not have transaction relay data structures.&lt;br/&gt;&lt;br/&gt;Then, in version 23.0:&lt;br/&gt;&lt;br/&gt;- modestly increase the number of outbound block-relay-only connections.&lt;br/&gt;&lt;br/&gt;John&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0060.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0060.mediawiki&lt;/a&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki&lt;/a&gt;&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/1795&#34;&gt;https://github.com/bitcoin/bitcoin/pull/1795&lt;/a&gt;&lt;br/&gt;[5] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/2763&#34;&gt;https://github.com/bitcoin/bitcoin/pull/2763&lt;/a&gt;&lt;br/&gt;[6]&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/e49117470b77fb7d53be122c6490ba163c6e304d/src/net_processing.cpp#L2582-L2583&#34;&gt;https://github.com/bitcoin/bitcoin/blob/e49117470b77fb7d53be122c6490ba163c6e304d/src/net_processing.cpp#L2582-L2583&lt;/a&gt;&lt;br/&gt;[7] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6579&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6579&lt;/a&gt;&lt;br/&gt;[8] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/7708&#34;&gt;https://github.com/bitcoin/bitcoin/pull/7708&lt;/a&gt;&lt;br/&gt;[9] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16152&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16152&lt;/a&gt;&lt;br/&gt;[10] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6993&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6993&lt;/a&gt;&lt;br/&gt;[11] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759&lt;/a&gt;&lt;br/&gt;[12]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-January/018347.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-January/018347.html&lt;/a&gt;&lt;br/&gt;[13] &lt;a href=&#34;https://github.com/jnewbery/bitcoin/tree/2021-02-lazy-init-peer&#34;&gt;https://github.com/jnewbery/bitcoin/tree/2021-02-lazy-init-peer&lt;/a&gt;&lt;br/&gt;[14]&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/e52ce9f2b312b3cf3b0837918e07d7603e241d63/src/net_processing.cpp#L1696-L1700&#34;&gt;https://github.com/bitcoin/bitcoin/blob/e52ce9f2b312b3cf3b0837918e07d7603e241d63/src/net_processing.cpp#L1696-L1700&lt;/a&gt;&lt;br/&gt;[15] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759#issuecomment-527012757&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759#issuecomment-527012757&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m proposing the addition of a new, optional p2p message to allow peers&lt;br/&gt;to communicate that they do not want to send or receive (loose)&lt;br/&gt;transactions for the lifetime of a connection.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The goal of this message is to help facilitate connections on the network&lt;br/&gt;over which only block-related data (blocks/headers/compact blocks/etc) are&lt;br/&gt;relayed, to create low-resource connections that help protect against&lt;br/&gt;partition attacks on the network.  In particular, by adding a network&lt;br/&gt;message that communicates that transactions will not be relayed for the&lt;br/&gt;life of the connection, we ease the implementation of software that could&lt;br/&gt;have increased inbound connection limits for such peers, which in turn will&lt;br/&gt;make it easier to add additional persistent block-relay-only connections on&lt;br/&gt;the network -- strengthening network security for little additional&lt;br/&gt;bandwidth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Software has been deployed for over a year now which makes such&lt;br/&gt;connections, using the BIP37/BIP60 &amp;#34;fRelay&amp;#34; field in the version message to&lt;br/&gt;signal that transactions should not be sent initially.  However, BIP37&lt;br/&gt;allows for transaction relay to be enabled later in the connection&amp;#39;s&lt;br/&gt;lifetime, complicating software that would try to distinguish inbound peers&lt;br/&gt;that will never relay transactions from those that might.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal would add a single new p2p message, &amp;#34;disabletx&amp;#34;, which (if&lt;br/&gt;used at all) must be sent between version and verack.  I propose that this&lt;br/&gt;message is valid for peers advertising protocol version 70017 or higher.&lt;br/&gt;Software is free to implement this BIP or ignore this message and remain&lt;br/&gt;compatible with software that does implement it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Full text of the proposed BIP is below.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Suhas&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---------------------------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;   BIP: XXX&lt;br/&gt;&amp;gt;   Layer: Peer Services&lt;br/&gt;&amp;gt;   Title: Disable transaction relay message&lt;br/&gt;&amp;gt;   Author: Suhas Daftuar &amp;lt;sdaftuar at chaincode.com&amp;gt;&lt;br/&gt;&amp;gt;   Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt;   Comments-URI:&lt;br/&gt;&amp;gt;   Status: Draft&lt;br/&gt;&amp;gt;   Type: Standards Track&lt;br/&gt;&amp;gt;   Created: 2020-09-03&lt;br/&gt;&amp;gt;   License: BSD-2-Clause&lt;br/&gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Abstract==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This BIP describes a change to the p2p protocol to allow a node to tell a&lt;br/&gt;peer&lt;br/&gt;&amp;gt; that a connection will not be used for transaction relay, to support&lt;br/&gt;&amp;gt; block-relay-only connections that are currently in use on the network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Motivation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For nearly the past year, software has been deployed[1] which initiates&lt;br/&gt;&amp;gt; connections on the Bitcoin network and sets the transaction relay field&lt;br/&gt;&amp;gt; (introduced by BIP 37 and also defined in BIP 60) to false, to prevent&lt;br/&gt;&amp;gt; transaction relay from occurring on the connection. Additionally, addr&lt;br/&gt;messages&lt;br/&gt;&amp;gt; received from the peer are ignored by this software.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The purpose of these connections is two-fold: by making additional&lt;br/&gt;&amp;gt; low-bandwidth connections on which blocks can propagate, the robustness&lt;br/&gt;of a&lt;br/&gt;&amp;gt; node to network partitioning attacks is strengthened.  Additionally, by&lt;br/&gt;not&lt;br/&gt;&amp;gt; relaying transactions and ignoring received addresses, the ability of an&lt;br/&gt;&amp;gt; adversary to learn the complete network graph (or a subgraph) is&lt;br/&gt;reduced[2],&lt;br/&gt;&amp;gt; which in turn increases the cost or difficulty to an attacker seeking to&lt;br/&gt;carry&lt;br/&gt;&amp;gt; out a network partitioning attack (when compared with having such&lt;br/&gt;knowledge).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The low-bandwidth / minimal-resource nature of these connections is&lt;br/&gt;currently&lt;br/&gt;&amp;gt; known only by the initiator of the connection; this is because the&lt;br/&gt;transaction&lt;br/&gt;&amp;gt; relay field in the version message is not a permanent setting for the&lt;br/&gt;lifetime&lt;br/&gt;&amp;gt; of the connection.  Consequently, a node receiving an inbound connection&lt;br/&gt;with&lt;br/&gt;&amp;gt; transaction relay disabled cannot distinguish between a peer that will&lt;br/&gt;never&lt;br/&gt;&amp;gt; enable transaction relay (as described in BIP 37) and one that will.&lt;br/&gt;Moreover,&lt;br/&gt;&amp;gt; the node also cannot determine that the incoming connection will ignore&lt;br/&gt;relayed&lt;br/&gt;&amp;gt; addresses; with that knowledge a node would likely choose other peers to&lt;br/&gt;&amp;gt; receive announced addresses instead.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal adds a new, optional message that a node can send a peer&lt;br/&gt;when&lt;br/&gt;&amp;gt; initiating a connection to that peer, to indicate that connection should&lt;br/&gt;not be&lt;br/&gt;&amp;gt; used for transaction-relay for the connection&amp;#39;s lifetime. In addition,&lt;br/&gt;without&lt;br/&gt;&amp;gt; a current mechanism to negotiate whether addresses should be relayed on a&lt;br/&gt;&amp;gt; connection, this BIP suggests that address messages not be sent on links&lt;br/&gt;where&lt;br/&gt;&amp;gt; tx-relay has been disabled.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # A new disabletx message is added, which is defined as an empty message&lt;br/&gt;where pchCommand == &amp;#34;disabletx&amp;#34;.&lt;br/&gt;&amp;gt; # The protocol version of nodes implementing this BIP must be set to&lt;br/&gt;70017 or higher.&lt;br/&gt;&amp;gt; # If a node sets the transaction relay field in the version message to a&lt;br/&gt;peer to false, then the disabletx message MAY also be sent in response to a&lt;br/&gt;version message from that peer if the peer&amp;#39;s protocol version is &amp;gt;= 70017.&lt;br/&gt;If sent, the disabletx message MUST be sent prior to sending a verack.&lt;br/&gt;&amp;gt; # A node that has sent or received a disabletx message to/from a peer&lt;br/&gt;MUST NOT send any of these messages to the peer:&lt;br/&gt;&amp;gt; ## inv messages for transactions&lt;br/&gt;&amp;gt; ## getdata messages for transactions&lt;br/&gt;&amp;gt; ## getdata messages for merkleblock (BIP 37)&lt;br/&gt;&amp;gt; ## filteradd/filterload/filterclear (BIP 37)&lt;br/&gt;&amp;gt; ## mempool (BIP 35)&lt;br/&gt;&amp;gt; # It is RECOMMENDED that a node that has sent or received a disabletx&lt;br/&gt;message to/from a peer not send any of these messages to the peer:&lt;br/&gt;&amp;gt; ## addr/getaddr&lt;br/&gt;&amp;gt; ## addrv2 (BIP 155)&lt;br/&gt;&amp;gt; # The behavior regarding sending or processing other message types is not&lt;br/&gt;specified by this BIP.&lt;br/&gt;&amp;gt; # Nodes MAY decide to not remain connected to peers that send this&lt;br/&gt;message (for example, if trying to find a peer that will relay&lt;br/&gt;transactions).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Compatibility==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Nodes with protocol version &amp;gt;= 70017 that do not implement this BIP, and&lt;br/&gt;nodes&lt;br/&gt;&amp;gt; with protocol version &amp;lt; 70017, will continue to remain compatible with&lt;br/&gt;&amp;gt; implementing software: transactions would not be relayed to peers sending&lt;br/&gt;the&lt;br/&gt;&amp;gt; disabletx message (provided that BIP 37 or BIP 60 has been implemented),&lt;br/&gt;and while&lt;br/&gt;&amp;gt; periodic address relay may still take place, software implementing this&lt;br/&gt;BIP&lt;br/&gt;&amp;gt; should not be disconnecting such peers solely for that reason.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Disabling address relay is suggested but not required by this BIP, to&lt;br/&gt;allow for&lt;br/&gt;&amp;gt; future protocol extensions that might specify more carefully how address&lt;br/&gt;relay&lt;br/&gt;&amp;gt; is to be negotiated. This BIP&amp;#39;s recommendations for software to not relay&lt;br/&gt;&amp;gt; addresses is intended to be interpreted as guidance in the absence of any&lt;br/&gt;such&lt;br/&gt;&amp;gt; future protocol extension, to accommodate existing software behavior.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that all messages specified in BIP 152, including blocktxn and&lt;br/&gt;&amp;gt; getblocktxn, are permitted between peers that have sent/received a&lt;br/&gt;disabletx&lt;br/&gt;&amp;gt; message, subject to the feature negotiation of BIP 152.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Implementation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; TBD&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==References==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Bitcoin Core has [&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759&lt;/a&gt;&lt;br/&gt;implemented this functionality] since version 0.19.0.1, released in&lt;br/&gt;November 2019.&lt;br/&gt;&amp;gt; # For example, see &lt;a href=&#34;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&#34;&gt;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&lt;/a&gt;&lt;br/&gt;and &lt;a href=&#34;https://arxiv.org/pdf/1812.00942.pdf&#34;&gt;https://arxiv.org/pdf/1812.00942.pdf&lt;/a&gt;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Copyright==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This BIP is licensed under the 2-clause BSD license.&lt;br/&gt;&lt;br/&gt;On Wed, Jan 6, 2021 at 4:35 PM Suhas Daftuar via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m proposing the addition of a new, optional p2p message to allow peers&lt;br/&gt;&amp;gt; to communicate that they do not want to send or receive (loose)&lt;br/&gt;&amp;gt; transactions for the lifetime of a connection.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The goal of this message is to help facilitate connections on the network&lt;br/&gt;&amp;gt; over which only block-related data (blocks/headers/compact blocks/etc) are&lt;br/&gt;&amp;gt; relayed, to create low-resource connections that help protect against&lt;br/&gt;&amp;gt; partition attacks on the network.  In particular, by adding a network&lt;br/&gt;&amp;gt; message that communicates that transactions will not be relayed for the&lt;br/&gt;&amp;gt; life of the connection, we ease the implementation of software that could&lt;br/&gt;&amp;gt; have increased inbound connection limits for such peers, which in turn will&lt;br/&gt;&amp;gt; make it easier to add additional persistent block-relay-only connections on&lt;br/&gt;&amp;gt; the network -- strengthening network security for little additional&lt;br/&gt;&amp;gt; bandwidth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Software has been deployed for over a year now which makes such&lt;br/&gt;&amp;gt; connections, using the BIP37/BIP60 &amp;#34;fRelay&amp;#34; field in the version message to&lt;br/&gt;&amp;gt; signal that transactions should not be sent initially.  However, BIP37&lt;br/&gt;&amp;gt; allows for transaction relay to be enabled later in the connection&amp;#39;s&lt;br/&gt;&amp;gt; lifetime, complicating software that would try to distinguish inbound peers&lt;br/&gt;&amp;gt; that will never relay transactions from those that might.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal would add a single new p2p message, &amp;#34;disabletx&amp;#34;, which (if&lt;br/&gt;&amp;gt; used at all) must be sent between version and verack.  I propose that this&lt;br/&gt;&amp;gt; message is valid for peers advertising protocol version 70017 or higher.&lt;br/&gt;&amp;gt; Software is free to implement this BIP or ignore this message and remain&lt;br/&gt;&amp;gt; compatible with software that does implement it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Full text of the proposed BIP is below.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; Suhas&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ---------------------------------------------------&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;lt;pre&amp;gt;&lt;br/&gt;&amp;gt;   BIP: XXX&lt;br/&gt;&amp;gt;   Layer: Peer Services&lt;br/&gt;&amp;gt;   Title: Disable transaction relay message&lt;br/&gt;&amp;gt;   Author: Suhas Daftuar &amp;lt;sdaftuar at chaincode.com&amp;gt;&lt;br/&gt;&amp;gt;   Comments-Summary: No comments yet.&lt;br/&gt;&amp;gt;   Comments-URI:&lt;br/&gt;&amp;gt;   Status: Draft&lt;br/&gt;&amp;gt;   Type: Standards Track&lt;br/&gt;&amp;gt;   Created: 2020-09-03&lt;br/&gt;&amp;gt;   License: BSD-2-Clause&lt;br/&gt;&amp;gt; &amp;lt;/pre&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Abstract==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This BIP describes a change to the p2p protocol to allow a node to tell a peer&lt;br/&gt;&amp;gt; that a connection will not be used for transaction relay, to support&lt;br/&gt;&amp;gt; block-relay-only connections that are currently in use on the network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Motivation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For nearly the past year, software has been deployed[1] which initiates&lt;br/&gt;&amp;gt; connections on the Bitcoin network and sets the transaction relay field&lt;br/&gt;&amp;gt; (introduced by BIP 37 and also defined in BIP 60) to false, to prevent&lt;br/&gt;&amp;gt; transaction relay from occurring on the connection. Additionally, addr messages&lt;br/&gt;&amp;gt; received from the peer are ignored by this software.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The purpose of these connections is two-fold: by making additional&lt;br/&gt;&amp;gt; low-bandwidth connections on which blocks can propagate, the robustness of a&lt;br/&gt;&amp;gt; node to network partitioning attacks is strengthened.  Additionally, by not&lt;br/&gt;&amp;gt; relaying transactions and ignoring received addresses, the ability of an&lt;br/&gt;&amp;gt; adversary to learn the complete network graph (or a subgraph) is reduced[2],&lt;br/&gt;&amp;gt; which in turn increases the cost or difficulty to an attacker seeking to carry&lt;br/&gt;&amp;gt; out a network partitioning attack (when compared with having such knowledge).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The low-bandwidth / minimal-resource nature of these connections is currently&lt;br/&gt;&amp;gt; known only by the initiator of the connection; this is because the transaction&lt;br/&gt;&amp;gt; relay field in the version message is not a permanent setting for the lifetime&lt;br/&gt;&amp;gt; of the connection.  Consequently, a node receiving an inbound connection with&lt;br/&gt;&amp;gt; transaction relay disabled cannot distinguish between a peer that will never&lt;br/&gt;&amp;gt; enable transaction relay (as described in BIP 37) and one that will.  Moreover,&lt;br/&gt;&amp;gt; the node also cannot determine that the incoming connection will ignore relayed&lt;br/&gt;&amp;gt; addresses; with that knowledge a node would likely choose other peers to&lt;br/&gt;&amp;gt; receive announced addresses instead.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This proposal adds a new, optional message that a node can send a peer when&lt;br/&gt;&amp;gt; initiating a connection to that peer, to indicate that connection should not be&lt;br/&gt;&amp;gt; used for transaction-relay for the connection&amp;#39;s lifetime. In addition, without&lt;br/&gt;&amp;gt; a current mechanism to negotiate whether addresses should be relayed on a&lt;br/&gt;&amp;gt; connection, this BIP suggests that address messages not be sent on links where&lt;br/&gt;&amp;gt; tx-relay has been disabled.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Specification==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # A new disabletx message is added, which is defined as an empty message where pchCommand == &amp;#34;disabletx&amp;#34;.&lt;br/&gt;&amp;gt; # The protocol version of nodes implementing this BIP must be set to 70017 or higher.&lt;br/&gt;&amp;gt; # If a node sets the transaction relay field in the version message to a peer to false, then the disabletx message MAY also be sent in response to a version message from that peer if the peer&amp;#39;s protocol version is &amp;gt;= 70017. If sent, the disabletx message MUST be sent prior to sending a verack.&lt;br/&gt;&amp;gt; # A node that has sent or received a disabletx message to/from a peer MUST NOT send any of these messages to the peer:&lt;br/&gt;&amp;gt; ## inv messages for transactions&lt;br/&gt;&amp;gt; ## getdata messages for transactions&lt;br/&gt;&amp;gt; ## getdata messages for merkleblock (BIP 37)&lt;br/&gt;&amp;gt; ## filteradd/filterload/filterclear (BIP 37)&lt;br/&gt;&amp;gt; ## mempool (BIP 35)&lt;br/&gt;&amp;gt; # It is RECOMMENDED that a node that has sent or received a disabletx message to/from a peer not send any of these messages to the peer:&lt;br/&gt;&amp;gt; ## addr/getaddr&lt;br/&gt;&amp;gt; ## addrv2 (BIP 155)&lt;br/&gt;&amp;gt; # The behavior regarding sending or processing other message types is not specified by this BIP.&lt;br/&gt;&amp;gt; # Nodes MAY decide to not remain connected to peers that send this message (for example, if trying to find a peer that will relay transactions).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Compatibility==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Nodes with protocol version &amp;gt;= 70017 that do not implement this BIP, and nodes&lt;br/&gt;&amp;gt; with protocol version &amp;lt; 70017, will continue to remain compatible with&lt;br/&gt;&amp;gt; implementing software: transactions would not be relayed to peers sending the&lt;br/&gt;&amp;gt; disabletx message (provided that BIP 37 or BIP 60 has been implemented), and while&lt;br/&gt;&amp;gt; periodic address relay may still take place, software implementing this BIP&lt;br/&gt;&amp;gt; should not be disconnecting such peers solely for that reason.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Disabling address relay is suggested but not required by this BIP, to allow for&lt;br/&gt;&amp;gt; future protocol extensions that might specify more carefully how address relay&lt;br/&gt;&amp;gt; is to be negotiated. This BIP&amp;#39;s recommendations for software to not relay&lt;br/&gt;&amp;gt; addresses is intended to be interpreted as guidance in the absence of any such&lt;br/&gt;&amp;gt; future protocol extension, to accommodate existing software behavior.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Note that all messages specified in BIP 152, including blocktxn and&lt;br/&gt;&amp;gt; getblocktxn, are permitted between peers that have sent/received a disabletx&lt;br/&gt;&amp;gt; message, subject to the feature negotiation of BIP 152.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Implementation==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; TBD&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==References==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Bitcoin Core has [&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15759&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15759&lt;/a&gt; implemented this functionality] since version 0.19.0.1, released in November 2019.&lt;br/&gt;&amp;gt; # For example, see &lt;a href=&#34;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&#34;&gt;https://www.cs.umd.edu/projects/coinscope/coinscope.pdf&lt;/a&gt; and &lt;a href=&#34;https://arxiv.org/pdf/1812.00942.pdf&#34;&gt;https://arxiv.org/pdf/1812.00942.pdf&lt;/a&gt;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ==Copyright==&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This BIP is licensed under the 2-clause BSD license.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210301/d31013b0/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210301/d31013b0/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:29:48Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsyysvmz32e6lp2dvmlv8n83wfur3ffts2ys69vzjaggnxh8puwjtqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq70wx2tw</id>
    
      <title type="html">📅 Original date posted:2020-12-10 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsyysvmz32e6lp2dvmlv8n83wfur3ffts2ys69vzjaggnxh8puwjtqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq70wx2tw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0eehfwgt22jmg68ktz853pztc4nypp2kujqavljr46q5lg2ay3yqzgkw42&#39;&gt;nevent1q…kw42&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-12-10&lt;br/&gt;📝 Original message:Hi folks,&lt;br/&gt;&lt;br/&gt;BIP 155 was proposed[1] in Feb 2019 by Wladimir van der Laan as a way of&lt;br/&gt;gossipping longer node addresses over the Bitcoin P2P network, primarily&lt;br/&gt;to support torv3 and other networks.&lt;br/&gt;&lt;br/&gt;In the time since that initial mailing list post, several changes have&lt;br/&gt;been made to the proposal. Discussion has been held on the BIPs repo[2],&lt;br/&gt;and (for implementation issues) the Bitcoin Core repo[3].&lt;br/&gt;&lt;br/&gt;This email summarizes the changes. Readers should refer to BIP 155[4]&lt;br/&gt;for the full specification.&lt;br/&gt;&lt;br/&gt;### Specification changes&lt;br/&gt;&lt;br/&gt;1. The `time` field in the `addrv2` message is now stored as a fixed&lt;br/&gt;   length uint32 instead of a variable-length compact size.&lt;br/&gt;&lt;br/&gt;2. The `addr` field may be up to a maximum of 512 bytes (4096 bits)&lt;br/&gt;   instead of 32 bytes (256 bits) for compatibility with future address&lt;br/&gt;   formats.&lt;br/&gt;&lt;br/&gt;3. Clients now SHOULD gossip addresses for known networks (even if they&lt;br/&gt;   can&amp;#39;t connect to those networks). They SHOULD NOT gossip addresses&lt;br/&gt;   for unknown networks. They SHOULD also ignore addresses for known&lt;br/&gt;   networks that are different from the address length for that network&lt;br/&gt;   specified in BIP 155.&lt;br/&gt;&lt;br/&gt;4. New network IDs MUST be reserved in a BIP document.&lt;br/&gt;&lt;br/&gt;5. Support for `addrv2` is not dependent on a p2p protocol version.&lt;br/&gt;   A new message type `sendaddrv2` is introduced to signal support&lt;br/&gt;   for addrv2. To signal support for addrv2, this message MUST be sent&lt;br/&gt;   after the initial version message is sent and before the verack&lt;br/&gt;   message is sent.&lt;br/&gt;&lt;br/&gt;### Implementation detail&lt;br/&gt;&lt;br/&gt;During testing of the Bitcoin Core implementation, it was found that&lt;br/&gt;another Bitcoin implementation would disconnect from peers on receipt of&lt;br/&gt;an unknown message[5]. I believe that to be an incorrect interpretation&lt;br/&gt;of the Bitcoin p2p protocol. The original v0.1 Satoshi client (and all&lt;br/&gt;Bitcoin Core versions derived from it) have always explicitly ignored&lt;br/&gt;unknown message types as a mechanism to extend the p2p protocol[6]. This&lt;br/&gt;property allows p2p implementions to permissionlessly deploy opt-in&lt;br/&gt;extensions to the protocol.&lt;br/&gt;&lt;br/&gt;As a pragmatic step to prevent those implementations from being&lt;br/&gt;disconnected from v0.21 Bitcoin Core nodes, this initial version will&lt;br/&gt;_only_ send sendaddrv2 messages to peers on p2p protocol version 70016&lt;br/&gt;and higher. This behaviour may be reverted in future, at which point&lt;br/&gt;Bitcoin Core would send sendaddrv2 messages to all peers during the&lt;br/&gt;version/verack handshake.&lt;br/&gt;&lt;br/&gt;Thanks to everyone who has contributed to the addrv2&lt;br/&gt;spec/implementation.&lt;br/&gt;&lt;br/&gt;John&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-February/016687.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-February/016687.html&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://github.com/bitcoin/bips/search?q=addrv2&#43;is%3Apr&amp;amp;type=Issues&#34;&gt;https://github.com/bitcoin/bips/search?q=addrv2&#43;is%3Apr&amp;amp;type=Issues&lt;/a&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/20564&#34;&gt;https://github.com/bitcoin/bitcoin/pull/20564&lt;/a&gt;&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0155.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0155.mediawiki&lt;/a&gt;&lt;br/&gt;[5] &lt;a href=&#34;https://github.com/btcsuite/btcd/issues/1661&#34;&gt;https://github.com/btcsuite/btcd/issues/1661&lt;/a&gt;&lt;br/&gt;[6] &lt;a href=&#34;https://github.com/benjyz/bitcoinArchive/blob/master/bitcoin0.1/src/main.cpp#L2035-L2039&#34;&gt;https://github.com/benjyz/bitcoinArchive/blob/master/bitcoin0.1/src/main.cpp#L2035-L2039&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20201210/b6445a1c/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20201210/b6445a1c/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:27:48Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsgk9lg9wxclcw3uwtlzqc9v8jl2u4cxhk3e990qw3pukvvytg7unszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7g3feuq</id>
    
      <title type="html">📅 Original date posted:2020-08-21 📝 Original ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsgk9lg9wxclcw3uwtlzqc9v8jl2u4cxhk3e990qw3pukvvytg7unszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7g3feuq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfwqrqzze392j0mxqw9krxxmsnasvvkasez8ud5nryufprnallqws2u3x59&#39;&gt;nevent1q…3x59&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-08-21&lt;br/&gt;📝 Original message:Pieter,&lt;br/&gt;&lt;br/&gt;Thanks for the illuminating write-up. There seem to be two questions here,&lt;br/&gt;one technical and one process:&lt;br/&gt;&lt;br/&gt;1. Is changing to even tie-breaker for R the correct choice technically? I&lt;br/&gt;can&amp;#39;t comment on the performance characteristics of using a square/even&lt;br/&gt;tie-breaker and I&amp;#39;ll assume the numbers you give are correct. An enormous&lt;br/&gt;benefit that you don&amp;#39;t mention (but Nadav and Lloyd do) is that&lt;br/&gt;standardizing to a single tie-breaker for R points and public keys is much&lt;br/&gt;simpler to explain and much easier for implementers and developers to&lt;br/&gt;understand. I&amp;#39;ve explained the taproot proposals to many people through the&lt;br/&gt;optech workshops and bitdevs meetups, and people are invariably confused by&lt;br/&gt;which type of tie-breaker to use where. Absent a large performance benefit&lt;br/&gt;for having different tiebreakers, I think this alone is good reason to&lt;br/&gt;standardize to one tie-breaker.&lt;br/&gt;&lt;br/&gt;2. Is it too late in the process to change? No. We&amp;#39;re building things to&lt;br/&gt;last years, hopefully decades. We should measure a hundred times and cut&lt;br/&gt;once. A benefit of the long lead time of taproot is that as we get more&lt;br/&gt;information, we can improve the proposal. Let&amp;#39;s do that here. Nadav and&lt;br/&gt;Lloyd have both written alternative implementations of taproot and are&lt;br/&gt;happy to make this change. Presumably if this was going to cause serious&lt;br/&gt;pain for any other implementer/developer they would have raised objections&lt;br/&gt;by now.&lt;br/&gt;&lt;br/&gt;Summary: We should change the proposal and implementation to use even&lt;br/&gt;tie-breakers everywhere.&lt;br/&gt;&lt;br/&gt;John #notoquadraticresiduetiebreakers Newbery&lt;br/&gt;&lt;br/&gt;On Wed, Aug 12, 2020 at 7:49 PM Pieter Wuille via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hello all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The current BIP340 draft[1] uses two different tiebreakers for conveying&lt;br/&gt;&amp;gt; the Y coordinate of points: for the R point inside signatures squaredness&lt;br/&gt;&amp;gt; is used, while for public keys evenness is used. Originally both used&lt;br/&gt;&amp;gt; squaredness, but it was changed[2] for public keys after observing this&lt;br/&gt;&amp;gt; results in additional complexity for compatibility with existing systems.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The reason for choosing squaredness as tiebreaker was performance: in&lt;br/&gt;&amp;gt; non-batch signature validation, the recomputed R point must be verified to&lt;br/&gt;&amp;gt; have the correct sign, to guarantee consistency with batch validation.&lt;br/&gt;&amp;gt; Whether the Y coordinate is square can be computed directly in Jacobian&lt;br/&gt;&amp;gt; coordinates, while determining evenness requires a conversion to affine&lt;br/&gt;&amp;gt; coordinates first.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This argument of course relies on the assumption that determining whether&lt;br/&gt;&amp;gt; the Y coordinate is square can be done more efficiently than a conversion&lt;br/&gt;&amp;gt; to affine coordinates. It appears now that this assumption is incorrect,&lt;br/&gt;&amp;gt; and the justification for picking the squaredness tiebreaking doesn&amp;#39;t&lt;br/&gt;&amp;gt; really exist. As it comes with other trade-offs (it slows down signing, and&lt;br/&gt;&amp;gt; is a less conventional choice), it would seem that we should reconsider the&lt;br/&gt;&amp;gt; option of having the R point use the evenness tiebreaker (like public keys).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is late in the process, but I feel I owe this explanation so that at&lt;br/&gt;&amp;gt; least the possibility of changing can be discussed with all information. On&lt;br/&gt;&amp;gt; the upside, this was discovered in the context of looking into a cool&lt;br/&gt;&amp;gt; improvement to libsecp256k1[5], which makes things faster in general, but&lt;br/&gt;&amp;gt; specifically benefits the evenness variant.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # 1. What happened?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Computing squaredness is done through the Jacobi symbol (same inventor,&lt;br/&gt;&amp;gt; but unrelated to Jacobian coordinates). Computing evenness requires&lt;br/&gt;&amp;gt; converting points to affine coordinates first, and that needs a modular&lt;br/&gt;&amp;gt; inverse. The assumption that Jacobi symbols are faster to compute than&lt;br/&gt;&amp;gt; inverses was based on:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * A (possibly) mistaken belief about the theory: fast algorithms for both&lt;br/&gt;&amp;gt; Jacobi symbols and inverses are internally based on variants of the same&lt;br/&gt;&amp;gt; extended GCD algorithm[3]. Since an inverse needs to extract a full big&lt;br/&gt;&amp;gt; integer out of the transition steps made in the extgcd algorithm, while the&lt;br/&gt;&amp;gt; Jacobi symbol just extracts a single bit, it had seemed that any advances&lt;br/&gt;&amp;gt; applicable to one would be applicable to the other, but inverses would&lt;br/&gt;&amp;gt; always need additional work on top. It appears however that a class of&lt;br/&gt;&amp;gt; extgcd algorithms exists (LSB based ones) that cannot be used for Jacobi&lt;br/&gt;&amp;gt; calculations without losing efficiency. Recent developments[4] and a&lt;br/&gt;&amp;gt; proposed implementation in libsecp256k1[5] by Peter Dettman show that using&lt;br/&gt;&amp;gt; this, inverses in some cases can in fact be faster than Jacobi symbols.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * A broken benchmark. This belief was incorrectly confirmed by a broken&lt;br/&gt;&amp;gt; benchmark[6] in libsecp256k1 for the libgmp-based Jacobi symbol calculation&lt;br/&gt;&amp;gt; and modular inverse. The benchmark was repeatedly testing the same constant&lt;br/&gt;&amp;gt; input, which apparently was around 2.5x faster than the average speed. It&lt;br/&gt;&amp;gt; is a variable-time algorithm, so a good variation of inputs matters. This&lt;br/&gt;&amp;gt; mistake had me (and probably others) convinced for years that Jacobi&lt;br/&gt;&amp;gt; symbols were amazingly fast, while in reality they were always very close&lt;br/&gt;&amp;gt; in performance to inverses.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # 2. What is the actual impact of picking evenness instead?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It is hard to make very generic statements here, as BIP340 will hopefully&lt;br/&gt;&amp;gt; be used for a long time, and hardware advancements and algorithmic&lt;br/&gt;&amp;gt; improvements may change the balance. That said, performance on current&lt;br/&gt;&amp;gt; hardware with optimized algorithms is the best approximation we have.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The numbers below give the expected performance change from squareness to&lt;br/&gt;&amp;gt; evenness, for single BIP340 validation, and for signing. Positive numbers&lt;br/&gt;&amp;gt; mean evenness is faster. Batch validation is not impacted at all.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the short term, for block validation in Bitcoin Core, the numbers for&lt;br/&gt;&amp;gt; master-nogmp are probably the most relevant (as Bitcoin Core uses&lt;br/&gt;&amp;gt; libsecp256k1 without libgmp, to reduce consensus-critical dependencies).&lt;br/&gt;&amp;gt; If/when [5] gets merged, safegcd-nogmp will be what matters. On a longer&lt;br/&gt;&amp;gt; time scale, the gmp numbers may be more relevant, as the Jacobi&lt;br/&gt;&amp;gt; implementation there is certainly closer to the state of the art.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * i7-7820HQ: (verify) (sign)&lt;br/&gt;&amp;gt;   - master-nogmp: -0.3% &#43;16.1%&lt;br/&gt;&amp;gt;   - safegcd-nogmp: &#43;6.7% &#43;17.1%&lt;br/&gt;&amp;gt;   - master-gmp: &#43;0.6% &#43;7.7%&lt;br/&gt;&amp;gt;   - safegcd-gmp: &#43;1.6% &#43;8.6%&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Cortex-A53: (verify) (sign)&lt;br/&gt;&amp;gt;   - master-nogmp: -0.3% &#43;15.7%&lt;br/&gt;&amp;gt;   - safegcd-nogmp: &#43;7.5% &#43;16.9%&lt;br/&gt;&amp;gt;   - master-gmp: &#43;0.3% &#43;4.1%&lt;br/&gt;&amp;gt;   - safegcd-gmp: 0.0% &#43;3.5%&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * EPYC 7742: (verify) (sign)&lt;br/&gt;&amp;gt;   - master-nogmp: -0.3% &#43;16.8%&lt;br/&gt;&amp;gt;   - safegcd-nogmp: &#43;8.6% &#43;18.4%&lt;br/&gt;&amp;gt;   - master-gmp: 0.0% &#43;7.4%&lt;br/&gt;&amp;gt;   - safegcd-gmp: &#43;2.3% &#43;7.8%&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In well optimized cryptographic code speedups as large as a couple percent&lt;br/&gt;&amp;gt; are difficult to come by, so we would usually consider changes of this&lt;br/&gt;&amp;gt; magnitude relevant. Note however that while the percentages for signing&lt;br/&gt;&amp;gt; speed are larger, they are not what is unexpected here. The choice for the&lt;br/&gt;&amp;gt; square tiebreaker was intended to improve verification speed at the cost of&lt;br/&gt;&amp;gt; signing speed. As it turns out that it doesn&amp;#39;t actually benefit&lt;br/&gt;&amp;gt; verification speed, this is a bad trade-off.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # 3. How big a change is it&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * In the BIP:&lt;br/&gt;&amp;gt;   - Changing both invocations of `has_square_y` to `has_even_y`.&lt;br/&gt;&amp;gt;   - Changing the `lift_x_square_y` invocation to `lift_x_even_y`.&lt;br/&gt;&amp;gt;   - Applying the same change to the test vector generation code, and the&lt;br/&gt;&amp;gt; resulting test vectors.&lt;br/&gt;&amp;gt; * In the libsecp256k1:&lt;br/&gt;&amp;gt;   - An 8-line patch to the proposed BIP340 implementation[7]: see [8]&lt;br/&gt;&amp;gt; * In Bitcoin Core:&lt;br/&gt;&amp;gt;   - Similarly small changes to the Python test reimplementation[9]&lt;br/&gt;&amp;gt; * Duplicating these changes in other draft implementations that may&lt;br/&gt;&amp;gt; already exist.&lt;br/&gt;&amp;gt; * Review for all the above.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # 4. Conclusion&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We discovered that the justification for using squaredness tiebreakers in&lt;br/&gt;&amp;gt; BIP340 is based on a misunderstanding, and recent developments show that it&lt;br/&gt;&amp;gt; may in fact be a somewhat worse choice than the alternative. It is a&lt;br/&gt;&amp;gt; relatively simple change to address this, but that has be weighed against&lt;br/&gt;&amp;gt; the impact of changing the standard at this stage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thoughts?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # 5. References&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#design&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki#design&lt;/a&gt;&lt;br/&gt;&amp;gt;   [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017639.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-February/017639.html&lt;/a&gt;&lt;br/&gt;&amp;gt;   [3] &lt;a href=&#34;https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm&#34;&gt;https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm&lt;/a&gt;&lt;br/&gt;&amp;gt;   [4] &lt;a href=&#34;https://gcd.cr.yp.to/safegcd-20190413.pdf&#34;&gt;https://gcd.cr.yp.to/safegcd-20190413.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt;   [5] &lt;a href=&#34;https://github.com/bitcoin-core/secp256k1/pull/767&#34;&gt;https://github.com/bitcoin-core/secp256k1/pull/767&lt;/a&gt;&lt;br/&gt;&amp;gt;   [6] &lt;a href=&#34;https://github.com/bitcoin-core/secp256k1/pull/797&#34;&gt;https://github.com/bitcoin-core/secp256k1/pull/797&lt;/a&gt;&lt;br/&gt;&amp;gt;   [7] &lt;a href=&#34;https://github.com/bitcoin-core/secp256k1/pull/558&#34;&gt;https://github.com/bitcoin-core/secp256k1/pull/558&lt;/a&gt;&lt;br/&gt;&amp;gt;   [8]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/sipa/secp256k1/commit/822311ca230a48d2c373f3e48b91b2a59e1371d6&#34;&gt;https://github.com/sipa/secp256k1/commit/822311ca230a48d2c373f3e48b91b2a59e1371d6&lt;/a&gt;&lt;br/&gt;&amp;gt;   [9] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/17977&#34;&gt;https://github.com/bitcoin/bitcoin/pull/17977&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Pieter&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200821/52fd57bc/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200821/52fd57bc/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:26:21Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsrrv2ewekmtudr2y9rdcezz5rten704amc0899lefnews39cx3szgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7ewppxw</id>
    
      <title type="html">📅 Original date posted:2020-05-05 📝 Original message:There ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsrrv2ewekmtudr2y9rdcezz5rten704amc0899lefnews39cx3szgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7ewppxw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd6vgzwwc08km2lx9f87hsf66tsjgxt3vsjkw0wahy6l2ye0ak0ag2f6rcy&#39;&gt;nevent1q…6rcy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-05-05&lt;br/&gt;📝 Original message:There doesn&amp;#39;t seem to be anything in the original email that&amp;#39;s specific to&lt;br/&gt;BIP 157. It&amp;#39;s a restatement of the arguments against light clients:&lt;br/&gt;&lt;br/&gt;- light clients are a burden on the full nodes that serve them&lt;br/&gt;- if light clients become more popular, there won&amp;#39;t be enough full nodes to&lt;br/&gt;serve them&lt;br/&gt;- people might build products that depend on altruistic nodes serving data,&lt;br/&gt;which is unsustainable&lt;br/&gt;- maybe at some point in the future, light clients will need to pay for&lt;br/&gt;services&lt;br/&gt;&lt;br/&gt;The choice isn&amp;#39;t between people using light clients or not. People already&lt;br/&gt;use light clients. The choice between whether we offer them a light client&lt;br/&gt;technology that is better or worse for privacy and scalability.&lt;br/&gt;&lt;br/&gt;The arguments for why BIP 157 is better than the existing light client&lt;br/&gt;technologies are available elsewhere, but to summarize:&lt;br/&gt;&lt;br/&gt;- they&amp;#39;re unique for a block, which means they can easily be cached.&lt;br/&gt;Serving a filter requires no computation, just i/o (or memory access for&lt;br/&gt;cached filter/header data) and bandwidth. There are plenty of other&lt;br/&gt;services that a full node offers that use i/o and bandwidth, such as&lt;br/&gt;serving blocks.&lt;br/&gt;- unique-for-block means clients can download from multiple sources&lt;br/&gt;- the linked-headers/filters model allows hybrid approaches, where headers&lt;br/&gt;checkpoints can be fetched from trusted/signed nodes, with intermediate&lt;br/&gt;headers and filters fetched from untrusted sources&lt;br/&gt;- less possibilities to DoS/waste resources on the serving node&lt;br/&gt;- better for privacy&lt;br/&gt;&lt;br/&gt;&amp;gt; The intention, as I understood it, of putting BIP157 directly into&lt;br/&gt;bitcoind was to essentially force all `bitcoind` users to possibly service&lt;br/&gt;BIP157 clients&lt;br/&gt;&lt;br/&gt;Please. No-one is forcing anyone to do anything. To serve filters, a node&lt;br/&gt;user needs to download the latest version, set `-blockfilterindex=basic` to&lt;br/&gt;build the compact filters index, and set `-peercfilters` to serve them over&lt;br/&gt;P2P. This is an optional, off-by-default feature.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;John&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, May 5, 2020 at 9:50 AM ZmnSCPxj via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning ariard and luke-jr&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Trust-minimization of Bitcoin security model has always relied first&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; above on running a full-node. This current paradigm may be shifted by&lt;br/&gt;&amp;gt; LN&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; where fast, affordable, confidential, censorship-resistant payment&lt;br/&gt;&amp;gt; services&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; may attract a lot of adoption without users running a full-node.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; No, it cannot be shifted. This would compromise Bitcoin itself, which for&lt;br/&gt;&amp;gt; &amp;gt; security depends on the assumption that a supermajority of the economy is&lt;br/&gt;&amp;gt; &amp;gt; verifying their incoming transactions using their own full node.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The past few years has seen severe regressions in this area, to the point&lt;br/&gt;&amp;gt; &amp;gt; where Bitcoin&amp;#39;s future seems quite bleak. Without serious improvements&lt;br/&gt;&amp;gt; to the&lt;br/&gt;&amp;gt; &amp;gt; full node ratio, Bitcoin is likely to fail.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Therefore, all efforts to improve the &amp;#34;full node-less&amp;#34; experience are&lt;br/&gt;&amp;gt; harmful,&lt;br/&gt;&amp;gt; &amp;gt; and should be actively avoided. BIP 157 improves privacy of fn-less&lt;br/&gt;&amp;gt; usage,&lt;br/&gt;&amp;gt; &amp;gt; while providing no real benefits to full node users (compared to more&lt;br/&gt;&amp;gt; &amp;gt; efficient protocols like Stratum/Electrum).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For this reason, myself and a few others oppose merging support for BIP&lt;br/&gt;&amp;gt; 157 in&lt;br/&gt;&amp;gt; &amp;gt; Core.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; BIP 157 can be implemented as a separate daemon that processes the blocks&lt;br/&gt;&amp;gt; downloaded by an attached `bitcoind`, i.e. what Wasabi does.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The intention, as I understood it, of putting BIP157 directly into&lt;br/&gt;&amp;gt; bitcoind was to essentially force all `bitcoind` users to possibly service&lt;br/&gt;&amp;gt; BIP157 clients, in the hope that a BIP157 client can contact any arbitrary&lt;br/&gt;&amp;gt; fullnode to get BIP157 service.&lt;br/&gt;&amp;gt; This is supposed to improve to the situation relative to e.g. Electrum,&lt;br/&gt;&amp;gt; where there are far fewer Electrum servers than fullnodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course, as ariard computes, deploying BIP157 could lead to an effective&lt;br/&gt;&amp;gt; DDoS on the fullnode network if a large number of BIP157 clients arise.&lt;br/&gt;&amp;gt; Though maybe this will not occur very fast?  We hope?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It seems to me that the thing that *could* be done would be to have&lt;br/&gt;&amp;gt; watchtowers provide light-client services, since that seems to be the major&lt;br/&gt;&amp;gt; business model of watchtowers, as suggested by ariard as well.&lt;br/&gt;&amp;gt; This is still less than ideal, but maybe is better than nothing.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200505/be23bd38/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200505/be23bd38/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:24:19Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsquccz7m3up0gv3s9lf68s9u6wfk2r767dcxq7w9s8h4ug9h6ft2czyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7fa393l</id>
    
      <title type="html">📅 Original date posted:2019-10-18 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsquccz7m3up0gv3s9lf68s9u6wfk2r767dcxq7w9s8h4ug9h6ft2czyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7fa393l" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyap4t2zux55arq0yhe7z52apvtlkzfl6mkgwznt8dv7gpqs72l9c4xpwz2&#39;&gt;nevent1q…pwz2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-18&lt;br/&gt;📝 Original message:&amp;gt; Is there a NODE_* bit we can use to pick peers that support this (useful!)&lt;br/&gt;feature?&lt;br/&gt;&lt;br/&gt;No. BIP 61 has no mechanism for advertising that a node will send REJECT&lt;br/&gt;messages.&lt;br/&gt;&lt;br/&gt;On Wed, Oct 16, 2019 at 12:43 PM John Newbery &amp;lt;john at johnnewbery.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Following discussion on this mailing list, support for BIP 61 REJECT&lt;br/&gt;&amp;gt; messages was not removed from Bitcoin Core in V0.19. The behaviour in that&lt;br/&gt;&amp;gt; upcoming release is that REJECT messages are disabled by default and can be&lt;br/&gt;&amp;gt; enabled using the `-enablebip61` command line option.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Support for REJECT messages will be removed entirely in Bitcoin Core&lt;br/&gt;&amp;gt; V0.20, expected for release in mid 2020. The PR to remove support was&lt;br/&gt;&amp;gt; merged into Bitcoin Core&amp;#39;s master branch this week.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Adoption of new Bitcoin Core versions across reachable nodes generally&lt;br/&gt;&amp;gt; takes several months. &lt;a href=&#34;https://bitnodes.earn.com/dashboard/?days=365&#34;&gt;https://bitnodes.earn.com/dashboard/?days=365&lt;/a&gt; shows&lt;br/&gt;&amp;gt; that although v0.18 was released in May 2019, there are still several&lt;br/&gt;&amp;gt; hundred reachable nodes on V0.17, V0.16, V0.15 and earlier software.&lt;br/&gt;&amp;gt; Software that currently use REJECT messages from public nodes for&lt;br/&gt;&amp;gt; troubleshooting issues therefore have plenty of time to transition to one&lt;br/&gt;&amp;gt; of the methods listed by Marco in the email above.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; John&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Mar 5, 2019 at 10:28 PM Marco Falke via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Bitcoin Core may send &amp;#34;reject&amp;#34; messages as response to &amp;#34;tx&amp;#34;, &amp;#34;block&amp;#34; or&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;version&amp;#34; messages from a network peer when the message could not be&lt;br/&gt;&amp;gt;&amp;gt; accepted.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This feature is toggled by the `-enablebip61` command line option and has&lt;br/&gt;&amp;gt;&amp;gt; been&lt;br/&gt;&amp;gt;&amp;gt; disabled by default since Bitcoin Core version 0.18.0 (not yet released&lt;br/&gt;&amp;gt;&amp;gt; as of&lt;br/&gt;&amp;gt;&amp;gt; time of writing). Nodes on the network can not generally be trusted to&lt;br/&gt;&amp;gt;&amp;gt; send&lt;br/&gt;&amp;gt;&amp;gt; valid (&amp;#34;reject&amp;#34;) messages, so this should only ever be used when&lt;br/&gt;&amp;gt;&amp;gt; connected to a&lt;br/&gt;&amp;gt;&amp;gt; trusted node. At this time, I am not aware of any software that requires&lt;br/&gt;&amp;gt;&amp;gt; this&lt;br/&gt;&amp;gt;&amp;gt; feature, and I would like to remove if from Bitcoin Core to make the&lt;br/&gt;&amp;gt;&amp;gt; codebase&lt;br/&gt;&amp;gt;&amp;gt; slimmer, easier to understand and maintain. Let us know if your&lt;br/&gt;&amp;gt;&amp;gt; application&lt;br/&gt;&amp;gt;&amp;gt; relies on this feature and you can not use any of the recommended&lt;br/&gt;&amp;gt;&amp;gt; alternatives:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * Testing or debugging of implementations of the Bitcoin P2P network&lt;br/&gt;&amp;gt;&amp;gt; protocol&lt;br/&gt;&amp;gt;&amp;gt;   should be done by inspecting the log messages that are produced by a&lt;br/&gt;&amp;gt;&amp;gt; recent&lt;br/&gt;&amp;gt;&amp;gt;   version of Bitcoin Core. Bitcoin Core logs debug messages&lt;br/&gt;&amp;gt;&amp;gt;   (`-debug=&amp;lt;category&amp;gt;`) to a stream (`-printtoconsole`) or to a file&lt;br/&gt;&amp;gt;&amp;gt;   (`-debuglogfile=&amp;lt;debug.log&amp;gt;`).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * Testing the validity of a block can be achieved by specific RPCs:&lt;br/&gt;&amp;gt;&amp;gt;   - `submitblock`&lt;br/&gt;&amp;gt;&amp;gt;   - `getblocktemplate` with `&amp;#39;mode&amp;#39;` set to `&amp;#39;proposal&amp;#39;` for blocks with&lt;br/&gt;&amp;gt;&amp;gt;     potentially invalid POW&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * Testing the validity of a transaction can be achieved by specific RPCs:&lt;br/&gt;&amp;gt;&amp;gt;   - `sendrawtransaction`&lt;br/&gt;&amp;gt;&amp;gt;   - `testmempoolaccept`&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; * Wallets should not use the absence of &amp;#34;reject&amp;#34; messages to indicate a&lt;br/&gt;&amp;gt;&amp;gt;   transaction has propagated the network, nor should wallets use &amp;#34;reject&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;   messages to set transaction fees. Wallets should rather use fee&lt;br/&gt;&amp;gt;&amp;gt; estimation&lt;br/&gt;&amp;gt;&amp;gt;   to determine transaction fees and set replace-by-fee if desired. Thus,&lt;br/&gt;&amp;gt;&amp;gt; they&lt;br/&gt;&amp;gt;&amp;gt;   could wait until the transaction has confirmed (taking into account the&lt;br/&gt;&amp;gt;&amp;gt; fee&lt;br/&gt;&amp;gt;&amp;gt;   target they set (compare the RPC `estimatesmartfee`)) or listen for the&lt;br/&gt;&amp;gt;&amp;gt;   transaction announcement by other network peers to check for&lt;br/&gt;&amp;gt;&amp;gt; propagation.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I propose to remove &amp;#34;reject&amp;#34; messages from Bitcoin Core 0.19.0 unless&lt;br/&gt;&amp;gt;&amp;gt; there are&lt;br/&gt;&amp;gt;&amp;gt; valid concerns about its removal.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Marco&lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191018/947d583d/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191018/947d583d/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:21:14Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsv7ad2pqh6vw65rukdqt6ja7twpn8rpekh8mjugz0tcpcnfgqjjtgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7ctg7kn</id>
    
      <title type="html">📅 Original date posted:2019-10-16 📝 Original ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsv7ad2pqh6vw65rukdqt6ja7twpn8rpekh8mjugz0tcpcnfgqjjtgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7ctg7kn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0cfqdvum7aslrwvk8rgpdd024zdr0909juquafzljpkyeuxqyt5cz8a9d3&#39;&gt;nevent1q…a9d3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-16&lt;br/&gt;📝 Original message:Following discussion on this mailing list, support for BIP 61 REJECT&lt;br/&gt;messages was not removed from Bitcoin Core in V0.19. The behaviour in that&lt;br/&gt;upcoming release is that REJECT messages are disabled by default and can be&lt;br/&gt;enabled using the `-enablebip61` command line option.&lt;br/&gt;&lt;br/&gt;Support for REJECT messages will be removed entirely in Bitcoin Core V0.20,&lt;br/&gt;expected for release in mid 2020. The PR to remove support was merged into&lt;br/&gt;Bitcoin Core&amp;#39;s master branch this week.&lt;br/&gt;&lt;br/&gt;Adoption of new Bitcoin Core versions across reachable nodes generally&lt;br/&gt;takes several months. &lt;a href=&#34;https://bitnodes.earn.com/dashboard/?days=365&#34;&gt;https://bitnodes.earn.com/dashboard/?days=365&lt;/a&gt; shows&lt;br/&gt;that although v0.18 was released in May 2019, there are still several&lt;br/&gt;hundred reachable nodes on V0.17, V0.16, V0.15 and earlier software.&lt;br/&gt;Software that currently use REJECT messages from public nodes for&lt;br/&gt;troubleshooting issues therefore have plenty of time to transition to one&lt;br/&gt;of the methods listed by Marco in the email above.&lt;br/&gt;&lt;br/&gt;John&lt;br/&gt;&lt;br/&gt;On Tue, Mar 5, 2019 at 10:28 PM Marco Falke via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Bitcoin Core may send &amp;#34;reject&amp;#34; messages as response to &amp;#34;tx&amp;#34;, &amp;#34;block&amp;#34; or&lt;br/&gt;&amp;gt; &amp;#34;version&amp;#34; messages from a network peer when the message could not be&lt;br/&gt;&amp;gt; accepted.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This feature is toggled by the `-enablebip61` command line option and has&lt;br/&gt;&amp;gt; been&lt;br/&gt;&amp;gt; disabled by default since Bitcoin Core version 0.18.0 (not yet released as&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; time of writing). Nodes on the network can not generally be trusted to send&lt;br/&gt;&amp;gt; valid (&amp;#34;reject&amp;#34;) messages, so this should only ever be used when connected&lt;br/&gt;&amp;gt; to a&lt;br/&gt;&amp;gt; trusted node. At this time, I am not aware of any software that requires&lt;br/&gt;&amp;gt; this&lt;br/&gt;&amp;gt; feature, and I would like to remove if from Bitcoin Core to make the&lt;br/&gt;&amp;gt; codebase&lt;br/&gt;&amp;gt; slimmer, easier to understand and maintain. Let us know if your application&lt;br/&gt;&amp;gt; relies on this feature and you can not use any of the recommended&lt;br/&gt;&amp;gt; alternatives:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Testing or debugging of implementations of the Bitcoin P2P network&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&amp;gt;   should be done by inspecting the log messages that are produced by a&lt;br/&gt;&amp;gt; recent&lt;br/&gt;&amp;gt;   version of Bitcoin Core. Bitcoin Core logs debug messages&lt;br/&gt;&amp;gt;   (`-debug=&amp;lt;category&amp;gt;`) to a stream (`-printtoconsole`) or to a file&lt;br/&gt;&amp;gt;   (`-debuglogfile=&amp;lt;debug.log&amp;gt;`).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Testing the validity of a block can be achieved by specific RPCs:&lt;br/&gt;&amp;gt;   - `submitblock`&lt;br/&gt;&amp;gt;   - `getblocktemplate` with `&amp;#39;mode&amp;#39;` set to `&amp;#39;proposal&amp;#39;` for blocks with&lt;br/&gt;&amp;gt;     potentially invalid POW&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Testing the validity of a transaction can be achieved by specific RPCs:&lt;br/&gt;&amp;gt;   - `sendrawtransaction`&lt;br/&gt;&amp;gt;   - `testmempoolaccept`&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Wallets should not use the absence of &amp;#34;reject&amp;#34; messages to indicate a&lt;br/&gt;&amp;gt;   transaction has propagated the network, nor should wallets use &amp;#34;reject&amp;#34;&lt;br/&gt;&amp;gt;   messages to set transaction fees. Wallets should rather use fee&lt;br/&gt;&amp;gt; estimation&lt;br/&gt;&amp;gt;   to determine transaction fees and set replace-by-fee if desired. Thus,&lt;br/&gt;&amp;gt; they&lt;br/&gt;&amp;gt;   could wait until the transaction has confirmed (taking into account the&lt;br/&gt;&amp;gt; fee&lt;br/&gt;&amp;gt;   target they set (compare the RPC `estimatesmartfee`)) or listen for the&lt;br/&gt;&amp;gt;   transaction announcement by other network peers to check for propagation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I propose to remove &amp;#34;reject&amp;#34; messages from Bitcoin Core 0.19.0 unless&lt;br/&gt;&amp;gt; there are&lt;br/&gt;&amp;gt; valid concerns about its removal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Marco&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191016/4664e5b3/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191016/4664e5b3/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:21:13Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs2qfxwtgdyxmfsls3p49glm7gqzzkhev59g3ghavmd08jy32qsgxqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq742sd4h</id>
    
      <title type="html">📅 Original date posted:2019-08-16 📝 Original message:Once a ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs2qfxwtgdyxmfsls3p49glm7gqzzkhev59g3ghavmd08jy32qsgxqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq742sd4h" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2rc0v7sh6sjhx4aft9lg2ms5u0jljnnhw6qjzj7nlcmvgk62twuqnhvcel&#39;&gt;nevent1q…vcel&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-08-16&lt;br/&gt;📝 Original message:Once a consensus change has been activated and buried by sufficient work,&lt;br/&gt;we consider the height of that change to be historic fact. The exact&lt;br/&gt;activation method is no longer of practical interest. In some cases the&lt;br/&gt;cause of activation is not even decidable. For example, we know that segwit&lt;br/&gt;activated at height 481,824 but it&amp;#39;s debatable whether that was due to BIP&lt;br/&gt;9 version bits signaling, BIP 148 UASF, or a combination of the two.&lt;br/&gt;&lt;br/&gt;In such cases, we can significantly simplify the implementation by&lt;br/&gt;hard-coding the activation height. This was done for the 3 ISM soft forks&lt;br/&gt;(BIPs 34, 66 and 65) in BIP 90 [1] [2]. P2SH and segwit script enforcement&lt;br/&gt;were backdated to the genesis block (with the exception of for one block)&lt;br/&gt;for similar code simplification reasons [3] [4].&lt;br/&gt;&lt;br/&gt;&amp;#39;Burying&amp;#39; deployments in this way provides a number of benefits:&lt;br/&gt;&lt;br/&gt;1. consensus code is simplified and implementers can avoid writing and&lt;br/&gt;testing code paths that are no longer relevant.&lt;br/&gt;2. a hard-coded activation height is far easier to review and re-implement&lt;br/&gt;than complex deployment activation logic.&lt;br/&gt;3. using a non-contextual check (in this case a hard-coded constant) can&lt;br/&gt;provide performance and code structure benefits (eg reducing lock&lt;br/&gt;contention on blockchain data).&lt;br/&gt;&lt;br/&gt;Bitcoin Core PR 16060 [5] was recently merged, which buries the CSV and&lt;br/&gt;segwit activation heights to 419328 and 481824 respectively.&lt;br/&gt;&lt;br/&gt;It is technically possible for this to be a non-backwards compatible&lt;br/&gt;change. In the event of a re-org below the BIP9 segwit LOCKED_IN height,&lt;br/&gt;this change _could_ cause a chainsplit between pre-0.19 nodes and 0.19&lt;br/&gt;nodes. Such a re-org would require re-doing over 93% of the total work ever&lt;br/&gt;committed to Bitcoin mining (chainwork is 0x7eb6a652531c5ad6a4b8e9 at&lt;br/&gt;height 481824 compared to 0x07d75b9d25fb6602be2b51c6 at height 590393). To&lt;br/&gt;quote from BIP90:&lt;br/&gt;&lt;br/&gt;&amp;gt; The occurrence of such a reorg that would cause the activating block to&lt;br/&gt;be disconnected would raise fundamental concerns about the security&lt;br/&gt;assumptions of Bitcoin, a far bigger issue than any non-backwards&lt;br/&gt;compatible change.&lt;br/&gt;&lt;br/&gt;&amp;gt; So while this proposal could theoretically result in a consensus split,&lt;br/&gt;it is extremely unlikely, and in particular any such circumstances would be&lt;br/&gt;sufficiently damaging to the Bitcoin network to dwarf any concerns about&lt;br/&gt;the effects of this proposed change.&lt;br/&gt;&lt;br/&gt;(See the &amp;#39;Considerations&amp;#39; section of BIP 90 for more details).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;John&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/8391&#34;&gt;https://github.com/bitcoin/bitcoin/pull/8391&lt;/a&gt;&lt;br/&gt;[3]&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-January/015588.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-January/015588.html&lt;/a&gt;&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/11739&#34;&gt;https://github.com/bitcoin/bitcoin/pull/11739&lt;/a&gt;&lt;br/&gt;[5] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/16060&#34;&gt;https://github.com/bitcoin/bitcoin/pull/16060&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190816/c439614c/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190816/c439614c/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:20:19Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs0mx9zxa7wlhp73hu8x8uwwez0xkdn5x5rgl3men9szz87pq697vqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7f6uwpe</id>
    
      <title type="html">📅 Original date posted:2019-05-22 📝 Original message:Hi, ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs0mx9zxa7wlhp73hu8x8uwwez0xkdn5x5rgl3men9szz87pq697vqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7f6uwpe" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8ce4wua84kal0v5jvq6qevuyusj95utq0n7ghsnyhv6dlp7jr6dsuzcyz9&#39;&gt;nevent1q…cyz9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-05-22&lt;br/&gt;📝 Original message:Hi,&lt;br/&gt;&lt;br/&gt;&amp;gt; A Taproot output is a SegWit output [...]  with&lt;br/&gt;&amp;gt; version number 1, and a 33-byte witness program whose first byte is 0 or&lt;br/&gt;1.&lt;br/&gt;&lt;br/&gt;Given a secret key k and public key P=(x,y), a signer with the knowledge of&lt;br/&gt;k&lt;br/&gt;can sign for -P=(x,p-y) since -k is the secret key for that point. Encoding&lt;br/&gt;the&lt;br/&gt;y value of the public key therefore adds no security. As an alternative to&lt;br/&gt;providing the y value of the taproot output key Q when constructing the&lt;br/&gt;taproot&lt;br/&gt;output, the signer can provide it when signing. We can also restrict the y&lt;br/&gt;value&lt;br/&gt;of the internal key P to be even (or high, or a quadratic residue). That&lt;br/&gt;gives&lt;br/&gt;us 4 options for how to set the y signs for P and Q.&lt;br/&gt;&lt;br/&gt;1. Q sign is explictly set in the witness program, P sign is explicitly set&lt;br/&gt;in the control block&lt;br/&gt;    =&amp;gt; witness program is 33 bytes, 32 possible leaf versions (one for each&lt;br/&gt;pair of 0xc0..0xff)&lt;br/&gt;2. Q sign is explictly set in the witness program, P sign is implicitly even&lt;br/&gt;    =&amp;gt; witness program is 33 bytes, 64 possible leaf versions (one for each&lt;br/&gt;0xc0..0xff)&lt;br/&gt;3. Q sign is explictly set in the control block, P sign is explicitly set&lt;br/&gt;in the control block&lt;br/&gt;    =&amp;gt; witness program is 32 bytes, 16 possible leaf versions (one for each&lt;br/&gt;4-tuple of 0xc0..0xff)&lt;br/&gt;4. Q sign is explictly set in the control block, P sign is implicitly even&lt;br/&gt;    =&amp;gt; witness program is 32 bytes, 32 possible leaf versions (one for pair&lt;br/&gt;of 0xc0..0xff)&lt;br/&gt;&lt;br/&gt;The current proposal uses (1). Using (3) or (4) would reduce the size of a&lt;br/&gt;taproot output by one byte to be the same size as a P2WSH output. That means&lt;br/&gt;that it&amp;#39;s not more expensive for senders compared to sending to P2WSH.&lt;br/&gt;&lt;br/&gt;(Credit to James Chiang for suggesting omitting the y sign from the public&lt;br/&gt;key and&lt;br/&gt;to sipa for pointing out the 4 options above)&lt;br/&gt;&lt;br/&gt;&amp;gt; (native or P2SH-nested, see BIP141)&lt;br/&gt;&lt;br/&gt;I&amp;#39;d prefer to not support P2SH-nested TR. P2SH wrapping was useful for&lt;br/&gt;segwit&lt;br/&gt;v0 for compatibility reasons. Most wallets/exchanges/services now support&lt;br/&gt;sending&lt;br/&gt;to native segwit addresses (&lt;a href=&#34;https://en.bitcoin.it/wiki/Bech32_adoption&#34;&gt;https://en.bitcoin.it/wiki/Bech32_adoption&lt;/a&gt;) and&lt;br/&gt;that&lt;br/&gt;will be even more true if Schnorr/Taproot activate in 12&#43; months time.&lt;br/&gt;&lt;br/&gt;On Mon, May 6, 2019 at 2:36 PM Pieter Wuille via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hello everyone,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Here are two BIP drafts that specify a proposal for a Taproot&lt;br/&gt;&amp;gt; softfork. A number of ideas are included:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Taproot to make all outputs and cooperative spends indistinguishable&lt;br/&gt;&amp;gt; from eachother.&lt;br/&gt;&amp;gt; * Merkle branches to hide the unexecuted branches in scripts.&lt;br/&gt;&amp;gt; * Schnorr signatures enable wallet software to use key&lt;br/&gt;&amp;gt; aggregation/thresholds within one input.&lt;br/&gt;&amp;gt; * Improvements to the signature hashing algorithm (including signing&lt;br/&gt;&amp;gt; all input amounts).&lt;br/&gt;&amp;gt; * Replacing OP_CHECKMULTISIG(VERIFY) with OP_CHECKSIGADD, to support&lt;br/&gt;&amp;gt; batch validation.&lt;br/&gt;&amp;gt; * Tagged hashing for domain separation (avoiding issues like&lt;br/&gt;&amp;gt; CVE-2012-2459 in Merkle trees).&lt;br/&gt;&amp;gt; * Extensibility through leaf versions, OP_SUCCESS opcodes, and&lt;br/&gt;&amp;gt; upgradable pubkey types.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The BIP drafts can be found here:&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://github.com/sipa/bips/blob/bip-schnorr/bip-taproot.mediawiki&#34;&gt;https://github.com/sipa/bips/blob/bip-schnorr/bip-taproot.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; specifies the transaction input spending rules.&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://github.com/sipa/bips/blob/bip-schnorr/bip-tapscript.mediawiki&#34;&gt;https://github.com/sipa/bips/blob/bip-schnorr/bip-tapscript.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; specifies the changes to Script inside such spends.&lt;br/&gt;&amp;gt; * &lt;a href=&#34;https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki&#34;&gt;https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; is the Schnorr signature proposal that was discussed earlier on this&lt;br/&gt;&amp;gt; list (See&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-July/016203.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-July/016203.html&lt;/a&gt;&lt;br/&gt;&amp;gt; )&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An initial reference implementation of the consensus changes, plus&lt;br/&gt;&amp;gt; preliminary construction/signing tests in the Python framework can be&lt;br/&gt;&amp;gt; found on &lt;a href=&#34;https://github.com/sipa/bitcoin/commits/taproot&#34;&gt;https://github.com/sipa/bitcoin/commits/taproot&lt;/a&gt;. All&lt;br/&gt;&amp;gt; together, excluding the Schnorr signature module in libsecp256k1, the&lt;br/&gt;&amp;gt; consensus changes are around 520 LoC.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While many other ideas exist, not everything is incorporated. This&lt;br/&gt;&amp;gt; includes several ideas that can be implemented separately without loss&lt;br/&gt;&amp;gt; of effectiveness. One such idea is a way to integrate SIGHASH_NOINPUT,&lt;br/&gt;&amp;gt; which we&amp;#39;re working on as an independent proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The document explains basic wallet operations, such as constructing&lt;br/&gt;&amp;gt; outputs and signing. However, a wide variety of more complex&lt;br/&gt;&amp;gt; constructions exist. Standardizing these is useful, but out of scope&lt;br/&gt;&amp;gt; for now. It is likely also desirable to define extensions to PSBT&lt;br/&gt;&amp;gt; (BIP174) for interacting with Taproot. That too is not included here.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Pieter&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190522/74fc5f35/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190522/74fc5f35/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:18:03Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsvkrsp48g3cll68l4tnekmvcj5yq808pxaqyxm96gku33xxnuwn7szyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq75hvn3c</id>
    
      <title type="html">📅 Original date posted:2018-01-23 📝 Original message:The ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsvkrsp48g3cll68l4tnekmvcj5yq808pxaqyxm96gku33xxnuwn7szyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq75hvn3c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg0vx5jrmaagmth8ugr6tn998pvzt9ydnvd9n40mgszga3g97ykas5v5ala&#39;&gt;nevent1q…5ala&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-01-23&lt;br/&gt;📝 Original message:The upcoming v0.16 release contains a slight change to the way that BIP16&lt;br/&gt;is enforced, by basing activation on block height instead of block time.&lt;br/&gt;This brings BIP 16 enforcement in line with BIP 34, BIP 66 and BIP 65.&lt;br/&gt;&lt;br/&gt;This has no impact on consensus since BIP 16 was activated before the last&lt;br/&gt;checkpoint and is buried under &amp;gt;300,000 blocks.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve written up the changes in the BIP style below, although I don&amp;#39;t think&lt;br/&gt;this necessarily requires a full BIP. BIP 16 enforcement will likely change&lt;br/&gt;again with &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/11739&#34;&gt;https://github.com/bitcoin/bitcoin/pull/11739&lt;/a&gt; in the next&lt;br/&gt;bitcoin core release, so a formal proposal for this as a BIP will quickly&lt;br/&gt;be superseded.&lt;br/&gt;&lt;br/&gt;&amp;lt;pre&amp;gt;&lt;br/&gt;  BIP: ??&lt;br/&gt;  Layer: Consensus&lt;br/&gt;  Title: Buried Deployments (P2SH)&lt;br/&gt;  Author: John Newbery &amp;lt;john at chaincode.com&amp;gt;&lt;br/&gt;  Comments-Summary: No comments yet&lt;br/&gt;  Comments-URI: &lt;a href=&#34;https://github.com/bitcoin/bips/wiki/Comments:BIP-&#34;&gt;https://github.com/bitcoin/bips/wiki/Comments:BIP-&lt;/a&gt;????&lt;br/&gt;  Status: Draft&lt;br/&gt;  Type: Informational&lt;br/&gt;  Created: 2018-01-22&lt;br/&gt;  License: CC-0&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;==Abstract==&lt;br/&gt;&lt;br/&gt;Enforce BIP 16 consensus rules based on block height rather than block time.&lt;br/&gt;&lt;br/&gt;==Background==&lt;br/&gt;&lt;br/&gt;BIP 16 was deployed via a hardcoded flag day consensus rule change. Prior&lt;br/&gt;to the date of the consensus rule change being fixed, the miners signaled&lt;br/&gt;readiness for the change by placing the string &amp;#34;/P2SH/&amp;#34; in the scriptSig of&lt;br/&gt;the coinbase transaction txIn. The rule change was originally intended to&lt;br/&gt;come into effect on 15 Feb 2012, but due to lack of miner signaling, the&lt;br/&gt;activation date was pushed back to April 1st 2012. See [&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki&lt;/a&gt; The BIP 16&lt;br/&gt;specification] for full details on the deployment method. The final&lt;br/&gt;activation method was via a hardcoded block time of 1333238400 (April 1st&lt;br/&gt;2012).&lt;br/&gt;&lt;br/&gt;Now that the chain has long since passed the block at which the P2SH&lt;br/&gt;consensus rule was activated, we can (as a simplification) replace the&lt;br/&gt;trigger mechanism by caching the block height at which those consensus&lt;br/&gt;rules became enforced.&lt;br/&gt;&lt;br/&gt;==Motivation==&lt;br/&gt;&lt;br/&gt;Activating the BIP 16 consensus change based on block time has several&lt;br/&gt;disadvantages:&lt;br/&gt;&lt;br/&gt;* The consensus change can be activated and later deactivated in the same&lt;br/&gt;chain (since block time is not necessarily monotonically increasing).&lt;br/&gt;* It is less flexible for constructing test chains for testing P2SH and&lt;br/&gt;other soft fork activation&lt;br/&gt;&lt;br/&gt;The flag day activation mechanism for code deployments was deprecated in&lt;br/&gt;favor of [&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki&lt;/a&gt;&lt;br/&gt;IsSuperMajority] deployments, and later by [&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0009.mediawiki&lt;/a&gt; version&lt;br/&gt;bits] deployments.&lt;br/&gt;&lt;br/&gt;BIP 34, BIP 65, and BIP 66 deployments were later &amp;#39;buried&amp;#39; by [&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki&lt;/a&gt; BIP 90] with&lt;br/&gt;simple height checks. This simplification of the consensus rules reduced&lt;br/&gt;the technical debt associated with deployment of those consensus changes.&lt;br/&gt;&lt;br/&gt;This BIP changes the BIP 16 activation method to also be a &amp;#39;buried&amp;#39;&lt;br/&gt;deployment, activating at the block height that BIP 16 actually activated.&lt;br/&gt;For the mainnet chain, this is block height 173805.&lt;br/&gt;&lt;br/&gt;==Considerations==&lt;br/&gt;&lt;br/&gt;Just as for the buried BIP 34, BIP 65 and BIP 66 deployments, it is&lt;br/&gt;technically possible for this to be a non-backwards compatible change. For&lt;br/&gt;example, if an alternate chain were created in which block height 173805&lt;br/&gt;was reached after April 1st 2012, and a block with height &amp;lt;173805 but block&lt;br/&gt;time after April 1st 2012 included an invalid P2SH spend, older software&lt;br/&gt;would see that chain as invalid, but newer software implementing this&lt;br/&gt;change would not.&lt;br/&gt;&lt;br/&gt;See [&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0090.mediawiki&lt;/a&gt; BIP 90]&lt;br/&gt;for justification of why this class of change is acceptable. As of January&lt;br/&gt;2018, BIP 16 is buried by over 300,000 blocks. BIP 16 activation is also&lt;br/&gt;protected by checkpoints (the most recent of which is at height 295000).&lt;br/&gt;&lt;br/&gt;==Specification==&lt;br/&gt;&lt;br/&gt;The BIP 16 activation height is set to 173805.&lt;br/&gt;&lt;br/&gt;To determine whether to enforce BIP 16 on a given block, we just compare&lt;br/&gt;the height of the block being validated with the stored activation height:&lt;br/&gt;&lt;br/&gt;    // Start enforcing P2SH (BIP16)&lt;br/&gt;    if (pindex-&amp;gt;nHeight &amp;gt;= consensusparams.BIP16Height) {&lt;br/&gt;        flags |= SCRIPT_VERIFY_P2SH;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;See the implementation for additional details.&lt;br/&gt;&lt;br/&gt;==Implementation==&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/commit/18e071841e83044b47aa45c3e98c0796a407d445&#34;&gt;https://github.com/bitcoin/bitcoin/commit/18e071841e83044b47aa45c3e98c0796a407d445&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;==Acknowledgements==&lt;br/&gt;&lt;br/&gt;Thanks to Russ Yanofsky, Marco Falke and Suhas Daftuar for suggestions and&lt;br/&gt;feedback.&lt;br/&gt;&lt;br/&gt;==Copyright==&lt;br/&gt;&lt;br/&gt;This document is placed in the public domain.&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180123/79e117ee/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180123/79e117ee/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T18:10:13Z</updated>
  </entry>

</feed>