<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated></updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1aprq807up25mkugnhlr9nc2jkqqxd3wyrct3uj0kzhsdunaj7q8s7608ff.rss" />
  <link href="https://nostr.ae/npub1aprq807up25mkugnhlr9nc2jkqqxd3wyrct3uj0kzhsdunaj7q8s7608ff" />
  <id>https://nostr.ae/npub1aprq807up25mkugnhlr9nc2jkqqxd3wyrct3uj0kzhsdunaj7q8s7608ff</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqs8l5l5ga5m52uxr2k0ze84njg9aejvfdc92pdkvrqwyygjpww4qzczyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7djx8vw</id>
    
      <title type="html">📅 Original date posted:2020-05-05 📝 Original message: There ...</title>
    
    <link rel="alternate" href="https://nostr.ae/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://nostr.ae/nevent1qqs0nzjq4hymhrntge23lnhps03whg6c0pqdludnmuvjkej8w5ycddgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7gzlvqe</id>
    
      <title type="html">📅 Original date posted:2021-04-23 📝 Original message:ACK ...</title>
    
    <link rel="alternate" href="https://nostr.ae/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://nostr.ae/nevent1qqsg7rdqceuh4rdm59x6n5x027sllycepcvwudej34gxdqpreunv7gczyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7lu7uec</id>
    
      <title type="html">📅 Original date posted:2021-03-01 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/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://nostr.ae/nevent1qqsyysvmz32e6lp2dvmlv8n83wfur3ffts2ys69vzjaggnxh8puwjtqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq70wx2tw</id>
    
      <title type="html">📅 Original date posted:2020-12-10 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/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://nostr.ae/nevent1qqsgk9lg9wxclcw3uwtlzqc9v8jl2u4cxhk3e990qw3pukvvytg7unszyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7g3feuq</id>
    
      <title type="html">📅 Original date posted:2020-08-21 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/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://nostr.ae/nevent1qqsrrv2ewekmtudr2y9rdcezz5rten704amc0899lefnews39cx3szgzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq7ewppxw</id>
    
      <title type="html">📅 Original date posted:2020-05-05 📝 Original message:There ...</title>
    
    <link rel="alternate" href="https://nostr.ae/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://nostr.ae/nevent1qqs2qfxwtgdyxmfsls3p49glm7gqzzkhev59g3ghavmd08jy32qsgxqzyr5yvqalms92nwm3zwluvk0p22cqqek9cs0pw8jf7c27phj0ktcq742sd4h</id>
    
      <title type="html">📅 Original date posted:2019-08-16 📝 Original message:Once a ...</title>
    
    <link rel="alternate" href="https://nostr.ae/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>

</feed>