<?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/npub1c4xg2lgxhvwgv850f52nr3fvx6ta78j7uyqjrjz9erk4u3jzcksq5qkcqs.rss" />
  <link href="https://nostr.ae/npub1c4xg2lgxhvwgv850f52nr3fvx6ta78j7uyqjrjz9erk4u3jzcksq5qkcqs" />
  <id>https://nostr.ae/npub1c4xg2lgxhvwgv850f52nr3fvx6ta78j7uyqjrjz9erk4u3jzcksq5qkcqs</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqszqkhpdpcm0692ujw79erj75zj26ga4t4vd4wv68y37qc0kadl3eszyrz5eptaq6a3eps73ax32vw99smf0hc7tmsszgwgghyw6hjxgtz6q0840ht</id>
    
      <title type="html">📅 Original date posted:2019-03-07 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszqkhpdpcm0692ujw79erj75zj26ga4t4vd4wv68y37qc0kadl3eszyrz5eptaq6a3eps73ax32vw99smf0hc7tmsszgwgghyw6hjxgtz6q0840ht" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstafjhwxpr74hl7h8pneuyfccmfcvfaq2vwh3grcjh4sgch7h7alcyr9mxr&#39;&gt;nevent1q…9mxr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-07&lt;br/&gt;📝 Original message:Hi Marco,&lt;br/&gt;&lt;br/&gt;&amp;gt; At this time, I am not aware of any software that requires this feature, and I&lt;br/&gt;&amp;gt; would like to remove if from Bitcoin Core to make the codebase slimmer, easier&lt;br/&gt;&amp;gt; to understand and maintain.&lt;br/&gt;&lt;br/&gt;Neutrino[1], a light client implementation that uses BIPs 157 and 158,&lt;br/&gt;currently relies on receiving reject messages from its peers when broadcasting&lt;br/&gt;a transaction to the network. I&amp;#39;ve personally gone through the relevant parts&lt;br/&gt;of the Bitcoin Core codebase involving reject messages and respectfully&lt;br/&gt;disagree that removing it would help much in terms of comprehension and&lt;br/&gt;maintainability. IMO, the benefits outweigh this small cost.&lt;br/&gt;&lt;br/&gt;&amp;gt; Nodes on the network can not generally be trusted to send valid (&amp;#34;reject&amp;#34;)&lt;br/&gt;&amp;gt; messages, so this should only ever be used when connected to a trusted node.&lt;br/&gt;&lt;br/&gt;Nodes in the network generally rely on the assumption that they are connected&lt;br/&gt;to at least one honest peer, so we can actually converge on the set of honest&lt;br/&gt;peers and ban/disconnect any who send an invalid reject message for a valid&lt;br/&gt;transaction.&lt;br/&gt;&lt;br/&gt;&amp;gt; Let us know if your application relies on this feature and you can not use any&lt;br/&gt;&amp;gt; of the recommended alternatives:&lt;br/&gt;&lt;br/&gt;Unfortunately, none of the recommended alternatives work for our use case. The&lt;br/&gt;main thing we want to identify when broadcasting a transaction is whether is&lt;br/&gt;it invalid or not. As long as it is valid, reject messages aren&amp;#39;t required as&lt;br/&gt;the light client can just rebroadcast the transaction upon every new block to&lt;br/&gt;ensure it is eventually included in the chain. It can then stop rebroadcasting&lt;br/&gt;it once it detects it has confirmed on-chain through its filters. However, if&lt;br/&gt;it is invalid, some of the validity checks required cannot be performed by&lt;br/&gt;light clients as they do not have a mempool and/or UTXO set.&lt;br/&gt;&lt;br/&gt;Reject messages also useful when developing new light clients, as we can get&lt;br/&gt;some feedback from the network on why a transaction was rejected, which helps&lt;br/&gt;identify potential bugs in their transaction crafting logic. I understand that&lt;br/&gt;this can be done by setting up test nodes with the flag enabled, but this&lt;br/&gt;justifies that the feature should at least exist and not be completely&lt;br/&gt;removed.&lt;br/&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;&lt;br/&gt;These RPCs are not helpful for light clients. Even for full nodes, in the case&lt;br/&gt;of `testmempoolaccept`, mempool conditions can quickly change and cause a&lt;br/&gt;transaction to be rejected after the fact. One alternative would be for a&lt;br/&gt;third-party to set up an endpoint where users can submit their transactions&lt;br/&gt;to, but now you&amp;#39;re placing your trust solely on them, rather than the network,&lt;br/&gt;which doesn&amp;#39;t seem like a reasonable or comparable compromise.&lt;br/&gt;&lt;br/&gt;With that said, I believe the feature should remain enabled by default in&lt;br/&gt;order to aid the light clients of the network. If we disable them by default,&lt;br/&gt;no one will bother to enable them manually, and light clients won&amp;#39;t be able to&lt;br/&gt;realize they are broadcasting invalid transactions.&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;https://github.com/lightninglabs/neutrino&#34;&gt;https://github.com/lightninglabs/neutrino&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;- Wilmer
    </content>
    <updated>2023-06-07T18:16:38Z</updated>
  </entry>

</feed>