<oembed><type>rich</type><version>1.0</version><author_name>npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_name><author_url>https://nostr.ae/npub1f2nvlx49er5c7sqa43src6ssyp6snd4qwvtkwm5avc2l84cs84esecrwet</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2019-03-07&#xA;📝 Original message:On Thu, Mar 7, 2019 at 11:46 PM Andreas Schildbach via bitcoin-dev&#xA;&lt;bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&gt; First and foremost, reject messages are an indication that the&#xA;&gt; transaction isn&#39;t going to confirm. Without these messages, we&#39;d need to&#xA;&gt; revert to pre-BIP61 behaviour of using a timeout for reception of&#xA;&gt; network confirmations.&#xA;&#xA;That is already required because even in the presence of perfectly&#xA;honest and cooperative hosts reject messages at most can only tell you&#xA;about first-hop behaviour. It won&#39;t even tell you if the transaction&#xA;was ever even attempted to be sent to a next hop.  So alternative&#xA;handling must be provided and must be reliable for the software to&#xA;work at all regardless of reject messages.&#xA;&#xA;&gt; - Not enough fee&#xA;&#xA;Rejection on low fee (over the static minimum feerate) only happens at&#xA;the point where the nodes mempool is full, which is already at a point&#xA;where you might be waiting weeks for confirmation.&#xA;&#xA;Rejection causes were also not stable or reliable because the validity&#xA;criteria cannot generally be tested independently. For example, if a&#xA;transaction is queued due to missing a parent it isn&#39;t rejected&#xA;because missing the parent is often a temporary issue, but its feerate&#xA;cannot be measured without the parent. Later, when the parent is&#xA;obtained, the transaction can then be rejected due to feerate-- but no&#xA;reject is sent then.&#xA;&#xA;Output already spend is often completely indistinguishable from a&#xA;missing parent and can&#39;t get rejects generated for it generally.&#xA;&#xA;Similarly, the error state detected for things like invalid signatures&#xA;are often not very useful. The software knows that script execution&#xA;returned false, but in the general case _why_ it returned false is not&#xA;clear, and a straightforward high performance validation&#xA;implementation doesn&#39;t necessarily yield a good way of figuring out&#xA;and propagating up that information.  (I think invalid signatures end&#xA;up returning a stack-nonempty state from validation currently, as an&#xA;example of that).</html></oembed>