<oembed><type>rich</type><version>1.0</version><author_name>npub1xg2m84malu0cfm4444r0kysx4rgk27e75aj6sz6538kw8fcz627qeadsv7</author_name><author_url>https://nostr.ae/npub1xg2m84malu0cfm4444r0kysx4rgk27e75aj6sz6538kw8fcz627qeadsv7</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2019-03-12&#xA;📝 Original message:(Posting again, since my previous reply didn&#39;t appear)&#xA;&#xA;&#xA;On 08/03/2019 01.52, Gregory Maxwell via bitcoin-dev wrote:&#xA;&#xA;&gt; That is already required because even in the presence of perfectly&#xA;&gt; honest and cooperative hosts reject messages at most can only tell you&#xA;&gt; about first-hop behaviour. It won&#39;t even tell you if the transaction&#xA;&gt; was ever even attempted to be sent to a next hop.  So alternative&#xA;&gt; handling must be provided and must be reliable for the software to&#xA;&gt; work at all regardless of reject messages.&#xA;&gt;&#xA;&gt; Rejection causes were also not stable or reliable because the validity&#xA;&gt; criteria cannot generally be tested independently. For example, if a&#xA;&gt; transaction is queued due to missing a parent it isn&#39;t rejected&#xA;&gt; because missing the parent is often a temporary issue, but its feerate&#xA;&gt; cannot be measured without the parent. Later, when the parent is&#xA;&gt; obtained, the transaction can then be rejected due to feerate-- but no&#xA;&gt; reject is sent then.&#xA;&#xA;These two cases are understood and handled by current code. Generally&#xA;the idea is take reject messages serious, but don&#39;t overrate the lack&#xA;of. Luckily, network confirmations fill the gap. (Yes, a timeout is&#xA;still useful. But at least it almost never happens.)&#xA;&#xA;&gt; Similarly, the error state detected for things like invalid signatures&#xA;&gt; are often not very useful. The software knows that script execution&#xA;&gt; returned false, but in the general case _why_ it returned false is not&#xA;&gt; clear, and a straightforward high performance validation&#xA;&gt; implementation doesn&#39;t necessarily yield a good way of figuring out&#xA;&gt; and propagating up that information.  (I think invalid signatures end&#xA;&gt; up returning a stack-nonempty state from validation currently, as an&#xA;&gt; example of that).&#xA;&#xA;Nevertheless, it has been proven as useful in debugging (just recently&#xA;when I implemented the witness signature hash in bitcoinj). I think&#xA;Wilmer Paulino summed up this point quite nicely in his reply to this&#xA;thread.</html></oembed>