BIPs 0065 · 0068 · 0112 · 0113
When is a coin allowed to move?
Two fields in every transaction can hold it back: nLockTime by block height or date, nSequence by the age of the coin it spends. Two opcodes let an output insist on them.
A payment channel, an escrow with a deadline, a refund that must wait: each needs a coin that cannot move yet. Bitcoin gets there with four specifications from 2014 and 2015, all consensus soft forks recorded as deployed. BIP 65 lets an output demand a date or a block height. BIP 68 repurposes each input’s sequence number as a relative lock, BIP 112 lets an output demand it, and BIP 113 decides which clock time locks read.12345
The rules are small, but every one of them hides a condition that is easy to miss. This chapter goes through them field by field, with the checks run on Bitcoin Core’s own test transactions.678
Source details
This chapter is an independent explanation, not the proposals themselves. Preamble fields are shown as recorded in the pinned files, with author e-mail addresses omitted. Status is the proposal’s own field, not an endorsement or a sign of consensus.
BIP 65: OP_CHECKLOCKTIMEVERIFY
- BIP
- 65
- Layer
- Consensus (soft fork)
- Title
- OP_CHECKLOCKTIMEVERIFY
- Authors
- Peter Todd
- Status
- Deployed
- Type
- Specification
- Assigned
- 2014-10-01
- License
- PD
BIP 68: Relative lock-time using consensus-enforced sequence numbers
- BIP
- 68
- Layer
- Consensus (soft fork)
- Title
- Relative lock-time using consensus-enforced sequence numbers
- Authors
- Mark Friedenbach
BtcDrak
Nicolas Dorier
kinoshitajona - Status
- Deployed
- Type
- Specification
- Assigned
- 2015-05-28
BIP 112: CHECKSEQUENCEVERIFY
- BIP
- 112
- Layer
- Consensus (soft fork)
- Title
- CHECKSEQUENCEVERIFY
- Authors
- BtcDrak
Mark Friedenbach
Eric Lombrozo - Status
- Deployed
- Type
- Specification
- Assigned
- 2015-08-10
- License
- PD
BIP 113: Median time-past as endpoint for lock-time calculations
- BIP
- 113
- Layer
- Consensus (soft fork)
- Title
- Median time-past as endpoint for lock-time calculations
- Authors
- Thomas Kerin
Mark Friedenbach - Status
- Deployed
- Type
- Specification
- Assigned
- 2015-08-10
- License
- PD
nLockTime · 32 bits, one threshold
0500,000,000 = 1985-11-054,294,967,295 = 2106-02-07
nSequence · bits 0–15, unit chosen by bit 22
Threshold from Bitcoin Core’s script.h (pinned); ranges from BIP 68’s Compatibility section (lines 243 and 247), checked by the tested model. Bar lengths compare wall-clock time at 600 s per block.
A field that does not lock a coin
Every transaction ends with a four-byte number, nLockTime. It keeps that transaction from being mined until a given block height or block time has been reached; strictly, a block may include it only once its height, or time, is greater than nLockTime. Nothing about it touches the coins being spent: it is a property of one particular spending transaction.1213
That is why, on its own, it cannot lock anything. BIP 65’s motivation puts it precisely: a transaction with nLockTime set proves a spend is possible later, but nobody can prove the coin is unspendable until then, because a different signed transaction spending it, with no lock at all, may already exist.14
The same field carries two kinds of value. Below a threshold it is a block height; at or above it, a time. BIP 65’s code names the threshold LOCKTIME_THRESHOLD, and Bitcoin Core defines it as 500,000,000, which as a Unix time falls on 5 November 1985. Any height Bitcoin will reach for a very long time sits below that line, and any date worth locking to sits above it.9
There is one more condition, and it is easy to miss. If every input of a transaction has the maximum sequence number, 0xffffffff, nLockTime is not enforced at all. Published transactions show both sides. BIP 143’s native P2WPKH example sets nLockTime to 17 and leaves one input non-final, so no block below height 18 could include it. BIP 174’s final transaction has nLockTime 0 and only final inputs.1516
| Transaction | nVersion | nLockTime | Input nSequence | Reading |
|---|---|---|---|---|
| Native P2WPKH example (signed)BIP 143 · version 1, line 190 | 1 | 17height | 0xffffffeeinput 0: not final, version < 2: no relative lock0xffffffffinput 1: final, version < 2: no relative lock | nLockTime enforced: no block before height 18. |
| P2SH-P2WPKH example (unsigned)BIP 143 · version 1, line 206 | 1 | 1,170height | 0xfffffffenot final, version < 2: no relative lock | nLockTime enforced: no block before height 1,171. |
| Signed legacy transactionBIP 174 · version 2, line 619 | 2 | 1,257,139height | 0xfffffffenot final, bit 31 set: no relative lock | nLockTime enforced: no block before height 1,257,140. |
| Final extracted transactionBIP 174 · version 2, line 833 | 2 | 0zero | 0xffffffffinput 0: final, bit 31 set: no relative lock0xffffffffinput 1: final, bit 31 set: no relative lock | Every input is final, so nLockTime is not enforced. |
Fields read by the tested timelock model from the transactions as published (BIP 143 and BIP 174 line numbers shown).
Putting the lock in the output
BIP 65 closes the gap with a new opcode, OP_CHECKLOCKTIMEVERIFY, which redefines the unused NOP2. It sits in the output’s script, so the condition travels with the coin, and it makes the output unspendable until some point in the future.2
The opcode does not look at the chain. It compares its argument with the spending transaction’s nLockTime, and since nLockTime itself must have been reached for that transaction to be mined, the comparison proves the date indirectly. The BIP credits Gregory Maxwell with suggesting this comparison against nLockTime rather than against the current height or time.19
The checks are few and run in a fixed order. The script fails if the stack is empty, if the argument is negative, if the argument and nLockTime are of different kinds, if the argument is greater than nLockTime, or if the input’s nSequence is 0xffffffff. That last check is the one that stops a spender from switching nLockTime off. Otherwise the opcode behaves as a NOP and the script continues.615
A · Interactive
Static view: the first absolute-lock case, with the checks it passes or fails. With JavaScript you can switch to relative locks, pick any of the 12 cases, change the transaction’s fields and compare height and time units.
499999999 OP_CHECKLOCKTIMEVERIFYArgument 499,999,999Spending transaction
- nVersion
- 1
- nLockTime
- 499,999,999 (a height)
- input 0 nSequence
0x00000000
BIP 65’s checks, in order
- The stack is not emptytop item: 499,999,999
- The argument is not negative499,999,999 ≥ 0
- Argument and nLockTime are the same kindargument is a height, nLockTime 499,999,999 is a height
- The argument is not greater than nLockTime499,999,999 ≤ 499,999,999
- This input is not finalnSequence 0x00000000
- Script continues: the spend is valid
Bitcoin Core labels this case valid; the model agrees.
Source: Bitcoin Core tx_valid.json, entry 99 (“By-height locks, with argument == 0 and == tx nLockTime”), tag v29.0, pinned by commit and hash. One-input transactions with no signatures: only the lock fields matter here.
B · Worked example
Bitcoin Core’s test case Time lock, argument equals the input's lock (tx_valid.json, entry 127), checked the way BIP 112 describes. Filled cells are the 16 value bits; marked cells are bits 22 and 31.
The spent output's script pushes an argument, then CHECKSEQUENCEVERIFY
- script
4259839 OP_CHECKSEQUENCEVERIFY- argument
4259839 = 0x0040ffff
Bit 31 of the argument is clear, so the opcode checks the input
- argument bits
0x0040ffff
Bits 0–15 hold the value (filled); bit 22 picks the unit and bit 31 disables (marked).
The transaction's version is 2
- nVersion
2
Version 2 or more: BIP 68 gives nSequence its relative-lock meaning.
The input's own bit 31 is clear
- input 0 nSequence
0x0040ffff
An input with bit 31 set carries no relative lock, so it could not satisfy one.
Read the input's nSequence with the same mask
- input 0 nSequence
0x0040ffff- units
argument counts time, nSequence counts time
Compare the masked values
- argument ≤ nSequence?
65,535 ≤ 65,535 (units of 512 s)
Every check passes, so the script continues. Bitcoin Core labels this case valid.
Source: Bitcoin Core v29.0 transaction tests (pinned excerpt); evaluated at build time by the tested timelock model.
Try the absolute cases above. An argument of 499,999,999 against nLockTime 499,999,998 fails by one block. Add one to nLockTime and it passes; add one more and nLockTime becomes a time, and the same argument now fails because the kinds no longer match.689
The argument is read as a number of up to five bytes, not the usual four. BIP 65’s code explains why: four bytes would give a year 2038 problem, while nLockTime itself, an unsigned 32-bit field, only becomes meaningless after the year 2106.21
The BIP’s examples show what this buys. Its simplest one freezes funds outright: an expiry time, the opcode, a DROP, and then an ordinary pay-to-public-key-hash check, which nobody can spend before the expiry.22
Counting from the coin
An absolute lock names a moment. Many protocols need something else: a delay that starts only when a coin is created. BIP 68 builds that out of each input’s nSequence field, and it does so only for transactions with version 2 or higher.1723
The bits are laid out carefully. If bit 31 is set, BIP 68 gives the field no meaning (though 0xffffffff still marks the input final for nLockTime). If it is clear, the field is a relative lock-time: bit 22 picks the unit, blocks when clear and 512-second units when set, and the value sits in the low 16 bits. The mask that extracts it, 0x0000ffff, MUST be applied; the bits in between are left for future use.5101824
Why 512 seconds? The authors chose it because blocks arrive every 600 seconds on average, so either unit covers about the same span with the same bits. BIP 68’s own examples give the limits: up to 65,535 blocks, about 1.25 years, or a time below 33,554,431 seconds, about 1.06 years.1125
A relative lock of n then allows the spend n blocks, or 512 × n seconds, after the coin being spent was mined. The coinbase input is exempt.2326
BIP 112 adds the matching opcode, OP_CHECKSEQUENCEVERIFY, in place of NOP3. It compares its argument with the input’s nSequence, after both are masked, so a script branch can require a minimum age of the coin. It fails if the transaction version is below 2, if the input’s own disable flag is set, if the units differ, or if the argument is larger. An argument with bit 31 set makes the opcode a NOP instead, kept for future soft forks.3720
The BIP’s examples are escrows and channels. One escrow pays out on two of three signatures at any time, or to Alice alone after 30 days, and its clock starts only when the payment into the escrow confirms. For payment channels, the authors argue a relative lock gives a predictable time to respond to a revoked transaction, where an absolute deadline would force the channel to be closed before it arrives.2728
Which clock?
A time lock still needs a notion of now. Before BIP 113, the time compared was the including block’s own timestamp. Since block timestamps need not be in order, the authors saw a perverse incentive: a miner could claim a later time to include transactions that by the wall clock had not yet matured, and collect their fees.29
BIP 113 replaces that timestamp with the median of the past 11 blocks’ timestamps, the median time past, which only moves forward. The rule covers every transaction, coinbase included, and the authors expected time-locked transactions to confirm about an hour later than before. BIP 68’s time-based locks are measured in the same median time past.4103031
The rollout is recorded in the BIPs. BIP 65 used the older switchover for version-4 blocks: enforced once 750 of the previous 1,000 blocks signalled, with older versions rejected at 950. BIPs 68, 112 and 113 were to deploy together through BIP 9 on bit 0, with a mainnet start of 1 May 2016.3233
Evidence
Each numbered marker in the text points here, and the ↩ links lead back to every place that cites an entry. Quotes are verbatim from the BIP files at commit
3a10b5b, including their wiki markup; links open
the exact lines; the quoted text sits under each entry. Labels say what kind of statement each is: a rule, the author’s rationale, history,
a test vector, or our own inference.
-
↩ History BIP 65 (OP_CHECKLOCKTIMEVERIFY) was assigned in 2014, BIPs 68, 112 and 113 in 2015; all four are consensus soft forks recorded as Deployed.
BIP 65 L3–8 BIP 68 L3–11 BIP 68 L9–11 BIP 112 L3–10 BIP 112 L8–10 BIP 113 L3–9 BIP 113 L7–9
Quoted source text (7)
Layer: Consensus (soft fork) Title: OP_CHECKLOCKTIMEVERIFY Authors: Peter Todd <pete@petertodd.org> Status: Deployed Type: Specification Assigned: 2014-10-01
Layer: Consensus (soft fork) Title: Relative lock-time using consensus-enforced sequence numbers
Status: Deployed Type: Specification Assigned: 2015-05-28
Layer: Consensus (soft fork) Title: CHECKSEQUENCEVERIFY
Status: Deployed Type: Specification Assigned: 2015-08-10
Layer: Consensus (soft fork) Title: Median time-past as endpoint for lock-time calculations
Status: Deployed Type: Specification Assigned: 2015-08-10
-
↩ a b Rule OP_CHECKLOCKTIMEVERIFY lets a transaction output be made unspendable until some point in the future; it redefines NOP2.
Quoted source text (2)
This BIP describes a new opcode (OP_CHECKLOCKTIMEVERIFY) for the Bitcoin scripting system that allows a transaction output to be made unspendable until some point in the future.
CHECKLOCKTIMEVERIFY redefines the existing NOP2 opcode.
-
↩ a b Rule CHECKSEQUENCEVERIFY redefines NOP3 and, with BIP 68, lets a script branch require a minimum age of the output being spent.
Quoted source text (2)
This BIP describes a new opcode (CHECKSEQUENCEVERIFY) for the Bitcoin scripting system that in combination with BIP 68 allows execution pathways of a script to be restricted based on the age of the output being spent.
CHECKSEQUENCEVERIFY redefines the existing NOP3 opcode.
-
↩ a b c Rule BIP 113 compares time locks against the median of the past 11 blocks' timestamps instead of the including block's own timestamp; that median advances monotonically.
Quoted source text (2)
The median of the last 11 blocks is used instead of the block's timestamp, ensuring that it increases monotonically with each block.
This BIP proposes that after activation calls to IsFinalTx() within consensus code use the return value of `GetMedianTimePast(pindexPrev)` instead.
-
↩ a b Rule BIP 68 repurposes nSequence, whose only use in Bitcoin Core until then was disabling nLockTime checks (a use the BIP preserves).
Quoted source text (2)
nSequence will be repurposed to prevent mining of a transaction until a certain age of the spent output in blocks or timespan.
The only use of sequence numbers by the Bitcoin Core reference client software is to disable checking the nLockTime constraints in a transaction. The semantics of that application are preserved by this BIP.
-
↩ a b c d Rule CHECKLOCKTIMEVERIFY fails if the stack is empty, the top item is negative, its lock-time type differs from nLockTime's, it is greater than nLockTime, or the input's nSequence is 0xffffffff; otherwise it acts as a NOP.
Quoted source text (1)
* the stack is empty; or * the top item on the stack is less than 0; or * the lock-time type (height vs. timestamp) of the top stack item and the nLockTime field are not the same; or * the top stack item is greater than the transaction's nLockTime field; or * the nSequence field of the txin is 0xffffffff; Otherwise, script execution will continue as if a NOP had been executed.
-
↩ a b c d Rule CHECKSEQUENCEVERIFY fails on an empty stack or a negative argument; if the argument's disable flag is clear, it also fails when the transaction version is below 2, the input's disable flag is set, the units differ, or the masked argument exceeds the masked nSequence.
Quoted source text (1)
* the stack is empty; or * the top item on the stack is less than 0; or * the top item on the stack has the disable flag (1 << 31) unset; and ** the transaction version is less than 2; or ** the transaction input sequence number disable flag (1 << 31) is set; or ** the relative lock-time type is not the same; or ** the top stack item is greater than the transaction input sequence (when masked according to the BIP68);
-
↩ a b c Test vector This chapter's opcode figure uses 12 of 51 one-input CLTV/CSV transactions from Bitcoin Core's own transaction tests (v29.0, pinned excerpt); for all 51 the site's model gives the same verdict Core's tests expect, and the build fails otherwise. The cases and their labels are in sources/external/core-locktime-cases-excerpt.json, pinned by commit and SHA-256; the BIP line cited is the reference implementation those tests accompany.
Quoted source text (1)
A reference implementation is provided by the following pull request: https://github.com/bitcoin/bitcoin/pull/7524
-
↩ a b c Observed nLockTime is read either as a block height or as a time, depending on whether it is below LOCKTIME_THRESHOLD; Bitcoin Core's script.h (pinned excerpt, v29.0) defines that threshold as 500,000,000, a Unix time in November 1985. (The value rests on the pinned script.h lines in sources/external/core-locktime-cases-excerpt.json and a test that checks the model's constant against them.)
Quoted source text (1)
// There are two types of nLockTime: lock-by-blockheight // and lock-by-blocktime, distinguished by whether // nLockTime < LOCKTIME_THRESHOLD.
-
↩ a b c Rule Bit 22 chooses the unit: set means 512-second units counted from the median time past of the coin's previous block, clear means blocks.
Quoted source text (1)
Bit (1 << 22) determines if the relative lock-time is time-based or block based: If the bit is set, the relative lock-time specifies a timespan in units of 512 seconds granularity. The timespan starts from the median-time-past of the output’s previous block, and ends at the MTP of the previous block. If the bit is not set, the relative lock-time specifies a number of blocks.
-
↩ a b Rule BIP 68's encoding examples: up to 65,535 blocks (about 1.25 years), or a time under 33,554,431 seconds (about 1.06 years) encoded as (1 << 22) | (nTime >> 9).
Quoted source text (1)
0 <= nHeight <= 65,535 blocks (1.25 years) nSequence = nHeight; nHeight = nSequence & 0x0000ffff; // 0 <= nTime < 33,554,431 seconds (1.06 years) nSequence = (1 << 22) | (nTime >> 9);
-
↩ Rule nLockTime keeps a transaction from being mined until a given block height or block time.
Quoted source text (1)
The nLockTime field in a transaction prevents the transaction from being mined until either a certain block height, or block time, has been reached.
-
↩ Rule A transaction is excluded from a block while the height (or time) is less than or equal to its nLockTime, so nLockTime names the last height or time at which it may not be mined.
Quoted source text (1)
At present, transactions are excluded from inclusion in a block if the present time or block height is less than or equal to that specified in the locktime.
-
↩ Author’s rationale BIP 65's motivation: nLockTime can show a spend is possible later, but cannot show the output is unspendable until then, because another valid signed transaction spending it may exist.
Quoted source text (2)
The nLockTime field in transactions can be used to prove that it is ''possible'' to spend a transaction output in the future, by constructing a valid transaction spending that output with the nLockTime field set.
However, the nLockTime field can't prove that it is ''impossible'' to spend a transaction output until some time in the future, as there is no way to know if a valid signature for a different transaction spending that output has been created.
-
↩ a b c Rule If every input's nSequence is the maximum value (0xffffffff), nLockTime is not enforced.
Quoted source text (2)
// Finally the nLockTime feature can be disabled and thus // CHECKLOCKTIMEVERIFY bypassed if every txin has been // finalized by setting nSequence to maxint.
Setting nSequence to this value for every input in a transaction * disables nLockTime. */ static const uint32_t SEQUENCE_FINAL = 0xffffffff;
-
↩ a b Test vector Read by this site's model, BIP 143's native P2WPKH example has version 1, nLockTime 17 and one non-final input, so no block below height 18 can include it; BIP 174's signed legacy transaction has version 2 and nLockTime 1,257,139 with a non-final input; BIP 174's final transaction has nLockTime 0 and only final inputs.
BIP 143 L184 BIP 174 L619 BIP 174 L833
Quoted source text (3)
nLockTime: 11000000
0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6
0200000000010258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd75
-
↩ a b c Rule BIP 68 gives nSequence meaning only in transactions with nVersion 2 or more.
Quoted source text (1)
This specification defines the meaning of sequence numbers for transactions with an nVersion greater than or equal to 2
-
↩ a b c Rule If bit 31 is set, nSequence has no consensus meaning; if it is clear, the field is an encoded relative lock-time.
Quoted source text (1)
If bit (1 << 31) of the sequence number is set, then no consensus meaning is applied to the sequence number and can be included in any block under all currently possible circumstances. If bit (1 << 31) of the sequence number is not set, then the sequence number is interpreted as an encoded relative lock-time.
-
↩ a b Author’s rationale By comparing its argument with nLockTime, the opcode indirectly verifies that the height or time has been reached; the BIP credits Gregory Maxwell with suggesting the comparison against nLockTime rather than the chain.
Quoted source text (2)
By comparing the argument to CHECKLOCKTIMEVERIFY against the nLockTime field, we indirectly verify that the desired block height or block time has been reached; until that block height or block time has been reached the transaction output remains unspendable.
Thanks goes to Gregory Maxwell for suggesting that the argument be compared against the per-transaction nLockTime, rather than the current block height and time.
-
↩ a b c Rule An argument with the disable flag set makes CHECKSEQUENCEVERIFY behave as a NOP, kept for future soft-fork extensibility.
Quoted source text (1)
// To provide for future soft-fork extensibility, if the // operand has the disabled lock-time flag set, // CHECKSEQUENCEVERIFY behaves as a NOP.
-
↩ Author’s rationale The argument may be a 5-byte number so that, like the 32-bit nLockTime field, it lasts until 2106 rather than hitting a year-2038 limit.
Quoted source text (1)
// If we kept to that limit we'd have a year 2038 problem, // even though the nLockTime field in transactions // themselves is uint32 which only becomes meaningless // after the year 2106.
-
↩ Author’s rationale BIP 65's example of frozen funds: <expiry time> CHECKLOCKTIMEVERIFY DROP followed by an ordinary pay-to-public-key-hash check, which nobody can spend before the expiry.
Quoted source text (2)
With the following scriptPubKey, nobody will be able to spend the encumbered output until the provided expiry time.
<expiry time> CHECKLOCKTIMEVERIFY DROP DUP HASH160 <pubKeyHash> EQUALVERIFY CHECKSIG
-
↩ a b Rule A relative lock n allows inclusion n blocks, or 512 × n seconds, after the output being spent was mined.
Quoted source text (2)
More generally, a relative block lock-time n can be included n blocks after the mining date of the output it is spending, or any block thereafter.
More generally, a relative time-based lock-time n can be included into any block produced 512 * n seconds after the mining date of the output it is spending
-
↩ Rule Only 16 bits are interpreted: a 0x0000ffff mask MUST be applied, leaving the other bits for future expansion.
Quoted source text (2)
This specification only interprets 16 bits of the sequence number as relative lock-time, so a mask of 0x0000ffff MUST be applied to the sequence field to extract the relative lock-time. The 16-bit specification allows for a year of relative lock-time and the remaining bits allow for future expansion.
Additionally, this BIP specifies only 16 bits to actually encode relative lock-time meaning a further 6 are unused (1 << 16 through 1 << 21 inclusive).
-
↩ Author’s rationale The authors chose 512-second granularity because blocks come every 600 seconds on average, so either unit covers about the same span with the same bits.
Quoted source text (1)
For time based relative lock-time, 512 second granularity was chosen because bitcoin blocks are generated every 600 seconds. So when using block-based or time-based, the same amount of time can be encoded with the available number of bits.
-
↩ Rule The rules do not apply to the coinbase input's nSequence.
Quoted source text (1)
The new rules are not applied to the nSequence field of the input of the coinbase transaction.
-
↩ Author’s rationale BIP 112's escrow example: a 2-of-3 branch any time, or Alice alone after 30 days; the clock starts only when the payment to the escrow confirms.
Quoted source text (2)
An escrow that times out automatically 30 days after being funded can be established in the following way. Alice, Bob and Escrow create a 2-of-3 address with the following redeemscript.
At any time funds can be spent using signatures from any two of Alice, Bob or the Escrow. After 30 days Alice can sign alone. The clock does not start ticking until the payment to the escrow address confirms.
-
↩ Author’s rationale BIP 112 argues relative locks suit payment channels: the clock starts when a transaction confirms, giving a predictable time to respond, while an absolute deadline forces channels to close before it.
Quoted source text (1)
Scriptable relative locktime provides a predictable amount of time to respond in the event a counterparty broadcasts a revoked transaction: Absolute locktime necessitates closing the channel and reopen it when getting close to the timeout, whereas with relative locktime, the clock starts ticking the moment the transactions confirms in a block.
-
↩ Author’s rationale The authors' reason: block timestamps are not strictly ordered, so miners had an incentive to lie about time to include not-yet-mature transactions and collect their fees.
Quoted source text (1)
At present, transactions are excluded from inclusion in a block if the present time or block height is less than or equal to that specified in the locktime. Since the consensus rules do not mandate strict ordering of block timestamps, this has the unfortunate outcome of creating a perverse incentive for miners to lie about the time of their blocks in order to collect more fees by including transactions that by wall clock determination have not yet matured.
-
↩ Rule BIP 113's rule applies to all transactions, including the coinbase.
Quoted source text (1)
The new rule applies to all transactions, including the coinbase transaction.
-
↩ Author’s rationale The authors expected transactions using time-based lock-time to confirm about an hour later than under the old rules.
Quoted source text (1)
Transactions generated using time-based lock-time will take approximately an hour longer to confirm than would be expected under the old rules.
-
↩ History BIP 65 activated by the IsSuperMajority mechanism for version-4 blocks: enforced when 750 of the previous 1,000 blocks signalled, and lower versions rejected at 950.
Quoted source text (1)
The new rules are in effect for every block (at height H) with nVersion = 4 and at least 750 out of 1000 blocks preceding it (with heights H-1000..H-1) also have nVersion >= 4. Furthermore, when 950 out of the 1000 blocks preceding a block do have nVersion >= 4, nVersion < 4 blocks become invalid
-
↩ History BIPs 68, 112 and 113 were to deploy together through BIP 9 using bit 0, with a mainnet start time of midnight 1 May 2016 UTC.
Quoted source text (2)
This BIP is to be deployed by "versionbits" BIP9 using bit 0. For Bitcoin '''mainnet''', the BIP9 '''starttime''' will be midnight 1st May 2016 UTC
This BIP must be deployed simultaneously with BIP68 and BIP113 using the same deployment mechanism.