[BIP draft] CHECKLOCKTIMEVERIFY - Prevent a txout from being spent until an expiration time



Summary:

In an email exchange between Peter Todd and Luke Dashjr on October 2, 2014, the duo discussed ways to increment stack items by the height at which the scriptPubKey was in a block. One suggestion involved creating a GET-TXIN-BLOCK-(TIME/HEIGHT)-EQUALVERIFY operator with the scriptPubKey being GET-TXIN-BLOCKHEIGHT-EQUALVERIFY (which fails unless top stack item is equal to the txin block height). The top stack item would then be incremented using ADD, followed by CHECKLOCKTIMEVERIFY. While this solution did not address using timestamps, it was deemed doable. The discussion further delved into limitations of encoding target height/time directly, as miners may choose not to mine the first transaction until they can also take the "burn to fee". As such, they may prefer to say "cannot be spent until 100 blocks after the first transaction is mined", which reproduces the generation maturity rule. However, sacrifices made with these rules should unlock years into the future to thoroughly exceed any reasonable business cycle that miners are almost certain to just mine and collect fees. Short maturity periods were deemed appropriate for many use cases.


Updated on: 2023-06-09T02:51:26.868478+00:00