<oembed><type>rich</type><version>1.0</version><author_name>npub1kc0zulxt7j4a0ayhzhrz7jk84y7tm4026qcky7w97hlfkxxap24qnwjfw4</author_name><author_url>https://nostr.ae/npub1kc0zulxt7j4a0ayhzhrz7jk84y7tm4026qcky7w97hlfkxxap24qnwjfw4</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-09-17&#xA;📝 Original message:Fill-or-kill tx is not a new idea and is discussed in the Scaling &#xA;Bitcoin workshop. In Satoshi&#39;s implementation of nLockTime, a huge range &#xA;of timestamp (from 1970 to 2009) is wasted. By exploiting this unused &#xA;range and with compromise in the time resolution, a fill-or-kill system &#xA;could be built with a softfork.&#xA;&#xA;-----------&#xA;Two new parameters, nLockTime2 and nKillTime are defined:&#xA;&#xA;nLockTime2 (Range: 0-1,853,010)&#xA;0: Tx could be confirmed at or after block 420,000&#xA;1: Tx could be confirmed at or after block 420,004&#xA;.&#xA;.&#xA;719,999: Tx could be confirmed at or after block 3,299,996 (about 55 &#xA;years from now)&#xA;720,000: Tx could be confirmed if the median time-past &gt;= 1,474,562,048 &#xA;(2016-09-22)&#xA;720,001: Tx could be confirmed if the median time-past &gt;= 1,474,564,096 &#xA;(2016-09-22)&#xA;.&#xA;.&#xA;1,853,010 (max): Tx could be confirmed if the median time-past &gt;= &#xA;3,794,966,528 (2090-04-04)&#xA;&#xA;nKillTime (Range: 0-2047)&#xA;if nLockTime2 &lt; 720,000, the tx could be confirmed at or before block &#xA;(nLockTime2 + nKillTime * 4)&#xA;if nLockTime2 &gt;= 720,000, the tx could be confirmed if the median &#xA;time-past &lt;= (nLockTime2 - 720,001 + nKillTime) * 2048&#xA;&#xA;Finally, nLockTime = 500,000,000 + nKillTime + nLockTime2 * 2048&#xA;&#xA;Setting a bit flag in tx nVersion will activate the new rules.&#xA;&#xA;The resolution is 4 blocks or 2048s (34m)&#xA;The maximum confirmation window is 8188 blocks (56.9 days) or &#xA;16,769,024s (48.5 days)&#xA;&#xA;For example:&#xA;With nLockTime2 = 20 and nKillTime = 100, a tx could be confirmed only &#xA;between block 420,080 and 420,480&#xA;With nLockTime2 = 730,000 and nKillTime = 1000, a tx could be confirmed &#xA;only between median time-past of 1,495,042,048 and 1,497,090,048&#xA;&#xA;----------------&#xA;Why is this a softfork?&#xA;&#xA;Remember this formula: nLockTime = 500,000,000 + nKillTime + nLockTime2 &#xA;* 2048&#xA;&#xA;For height based nLockTime2 (&lt;= 719,999)&#xA;&#xA;For nLockTime2 = 0 and nKillTime = 0, nLockTime = 500,000,000, which &#xA;means the tx could be confirmed after 1970-01-01 with the original lock &#xA;time rule. As the new rule does not allow confirmation until block &#xA;420,000, it&#39;s clearly a softfork.&#xA;&#xA;It is not difficult to see that the growth of nLockTime will never catch &#xA;up nLockTime2.&#xA;&#xA;At nLockTime2 = 719,999 and nKillTime = 2047, nLockTime = 1,974,559,999, &#xA;which means 2016-09-22. However, the new rule will not allow &#xA;confirmation until block 3,299,996 which is decades to go&#xA;&#xA;&#xA;&#xA;For time based nLockTime2 (&gt; 720,000)&#xA;&#xA;For nLockTime2 = 720,000 and nKillTime = 0, nLockTime = 1,974,560,000, &#xA;which means the tx could be confirmed after median time-past &#xA;1,474,560,000 (assuming BIP113). However, the new rule will not allow &#xA;confirmation until 1,474,562,048, therefore a soft fork.&#xA;&#xA;For nLockTime2 = 720,000 and nKillTime = 2047, nLockTime = &#xA;1,974,562,047, which could be confirmed at 1,474,562,047. Again, the new &#xA;rule will not allow confirmation until 1,474,562,048. The 1 second &#xA;difference makes it a soft fork.&#xA;&#xA;Actually, for every nLockTime2 value &gt;= 720,000, the lock time with the &#xA;new rule must be 1-2048 seconds later than the original rule.&#xA;&#xA;For nLockTime2 = 1,853,010 and nKillTime = 2047, nLockTime = &#xA;4,294,966,527, which is the highest possible value with the 32-bit &#xA;nLockTime&#xA;&#xA;----------------&#xA;User&#39;s perspective:&#xA;&#xA;A user wants his tx either filled or killed in about 3 hours. He will &#xA;set a time-based nLockTime2 according to the current median time-past, &#xA;and set nKillTime = 5&#xA;&#xA;A user wants his tx get confirmed in the block 630000, the first block &#xA;with reward below 10BTC. He is willing to pay high fee but don&#39;t want it &#xA;gets into another block. He will set nLockTime2 = 210,000 and nKillTime &#xA;= 0&#xA;&#xA;----------------&#xA;OP_CLTV&#xA;&#xA;Time-based OP_CLTV could be upgraded to support time-based nLockTime2. &#xA;However, height-based OP_CLTV is not compatible with nLockTime2. To &#xA;spend a height-based OP_CLTV output, user must use the original &#xA;nLockTime.&#xA;&#xA;We may need a new OP_CLTV2 which could verify both nLockTime and &#xA;nLockTime2&#xA;&#xA;----------------&#xA;55 years after?&#xA;&#xA;The height-based nLockTime2 will overflow in 55 years. It is very likely &#xA;a hard fork will happen to implement a better fill-or-kill system. If &#xA;not, we could reboot everything with another tx nVersion for another 55 &#xA;years.</html></oembed>