The Wiki was incorrect (I wrote the unique textual content and I apologize). As indicated within the query, the ordering on the Wiki was backwards. Nonetheless, upon investigating, I do not imagine it was a tough fork. Within the unique Bitcoin 0.1 code, we discover the next operate:
bool IsFinal() const
This operate is known as within the mining code that selects which transactions to mine:
if (tx.IsCoinBase() || !tx.IsFinal())
proceed;
Which means no node operating the default Bitcoin 0.1 code would mine a transaction until its nLockTime was lower than the following block’s top. Nonetheless, I do not see any code in 0.1 that rejects blocks with a “non-final” transaction, so this is not a consensus rule.
Months later, in code that grew to become a part of Bitcoin 0.1.6, the timelock function is added:
- bool IsFinal() const
+ bool IsFinal(int64 nBlockTime=0) const
{
- if (nLockTime == 0 || nLockTime < nBestHeight)
+ // Time based mostly nLockTime applied in 0.1.6,
+ // don't use time based mostly till most 0.1.5 nodes have upgraded.
+ if (nBlockTime == 0)
+ nBlockTime = GetAdjustedTime();
+ if (nLockTime == 0)
+ return true;
+ if (nLockTime < (nLockTime < 500000000 ? nBestHeight : nBlockTime))
And the identical commit additionally provides consensus enforcement for each heightlocks and timelocks:
+ // Verify that each one transactions are finalized (beginning round 30 Nov 2009)
+ if (nBestHeight > 31000) // 25620 + 5320
+ foreach(const CTransaction& tx, vtx)
+ if (!tx.IsFinal(nTime))
+ return error("AcceptBlock() : incorporates a non-final transaction");
Briefly, in model 0.1.0 had no consensus guidelines in regards to the nLockTime discipline and model 0.1.6 added a consensus rule that included each heightlocks and timelocks. That is making the foundations extra strict and so I imagine it was a delicate fork which activated at block 31,000.
Maybe of curiosity, that is the earliest delicate fork of which I am conscious (as of this writing, it is sooner than any entries on the time of writing on the Wiki’s consensus variations record or BitMex’s consensus forks record). Regardless of being so early, the fork was clearly made with care, giving the community a couple of month to improve and making ready for potential issues forward of time.