nSequence transaction field was originally intended for a replacement logic, but since it was never well thought out, it was never implemented. However, it has been implemented since the beginning that if the
nSequence of all inputs is
0xffffffff, then the
nLocktime and the absolute time are not activated. Later, some additional features are added like the relative time lock consensus rule by not setting the 32nd bit and the RBF policy rule by setting the value of some
nSequence within a transaction to a value less than
However, what I don't understand is why nSequence and nLocktime are made to have any relationship at all? If the nSequence was seen to have no original purpose (back in 2009), why wasn't it simply dropped from the transaction or left for some future purpose (as was eventually done through relative time locking and RBF)? Why did they make any connection between
nLocktime? If you don't want the absolute timelock, then just set it to 0x00000000 and that's it, why would it be disabled by setting all
0xffffffff. I can not understand. Is there any logical reason behind linking these two?