Transactions don't get replaced in the client based on sequence number
any more. More recently, the handling of nLockTime was also changed, so that transactions with an nLockTime in the future can't enter the memory pool. There's some history at
the wiki.
I posted an idea for payment channels to the bitcoin-development list yesterday, provoking a
discussion of this very topic.
Besides the discussion about what Bitcoin's behavior
should be, I'm also interested in what the exact behavior of Bitcoin
is, right now.
The way I understand it, the current behavior of non-modified Bitcoin Core is (assuming all else is correct about a transaction):
- any sequence number is 0xffffffff -> see "transaction OK"
- all sequence numbers are not 0xffffffff and nLockTime is expired -> see "transaction OK"
- all sequence numbers are not 0xffffffff and nLockTime is not expired -> see "transaction NOT OK"
- "transaction OK" -> transaction will be transferred to other nodes and included into blocks. Will mine on top of blocks that include such transactions.
- "transaction NOT OK" -> transaction will NOT be transferred to other nodes and NOT included into blocks. Will NOT mine on top of blocks that include such transactions.
Is this correct?