<oembed><type>rich</type><version>1.0</version><author_name>npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_name><author_url>https://nostr.ae/npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2022-07-13&#xA;📝 Original message:On Mon, Jul 11, 2022 at 08:21:40PM -0400, Russell O&#39;Connor via bitcoin-dev wrote:&#xA;&gt; Oops, you are right.  We need the bribe to be the output of the coinbase,&#xA;&gt; but due to the maturity rule, it isn&#39;t really a bribe.&#xA;&gt; Too bad coinbases cannot take other coinbase outputs as inputs to bypass&#xA;&gt; the maturity rule.&#xA;&#xA;Sufficiently advanced tx introspection could be used for this; spend the&#xA;fees in the coinbase to address A, but also create a 0sat output via a&#xA;regular tx to the scriptPubKey &#34;1 CSV&#34;. Note that tx&#39;s txid as B. The&#xA;next miner claims the bribe B, by spending the 0sat output to itself&#xA;with a 1-in, 1-out tx, with scriptPubKey C.&#xA;&#xA;  nVersion = 1&#xA;  inputs = [txid=B, vout=0, scriptSig=&#34;&#34;, nSeq=1]&#xA;  outputs = [value=0, scriptPubKey=C]&#xA;  nLocktime = 0&#xA;&#xA;Now we get back to A, and say that it&#39;s scriptPubKey uses a script that&#xA;takes &#34;C&#34; as input, has &#34;B&#34; hardcoded, calculates the txid of the tx&#xA;above, call it D, and then uses tx introspection to check that one of&#xA;the inputs of the tx has D as the txid.&#xA;&#xA;&gt; I guess that means the bribe has to be by leaving transactions in the&#xA;&gt; mempool.&#xA;&#xA;You *could* make that work if you allow tx&#39;s to use the annex to commit&#xA;to a recent block.&#xA;&#xA;That is, if you just mined block 740,000 and its hash was&#xA;00000000000000000005f28764680afdbd8375216ff8f30b17eeb26bd98aac63,&#xA;you construct a bribe tx paying to &#34;OP_1&#34;, but when you sign it,&#xA;you add &#34;50ee070b4aa0d98aac63&#34; as the annex (tag=ee, length=07,&#xA;value[0:3]=height=0b4aa0=470k, value[3:]=d98aac63), and (via a soft fork)&#xA;nodes then only consider that tx valid if the block at &#34;height&#34; ends in&#xA;&#34;d98aac63&#34;. There&#39;s then only a 1-in-4B chance that someone who extends&#xA;a competitor to your block could claim the bribe, at a cost of 11 extra&#xA;witness bytes.&#xA;&#xA;But such txs (and anything that descends from them) would become invalid&#xA;with as little as a 1-block reorg, which would pretty much defeat the&#xA;entire purpose of the maturity delay...&#xA;&#xA;Cheers,&#xA;aj</html></oembed>