<p>You can do almost everything on that <a href="https://en.bitcoin.it/wiki/Contracts" rel="nofollow">Contracts</a> page without needing transaction replacement.  Lock time <em>does</em> work today (as of Dec 2013), transactions with lock_time can't go into the blockchain until the time is reached.</p>

<p>Transaction Replacement is not supported because the developers have said that the whole idea of nSequence-based replacement is problematic, and may never be enabled apparently it causes potential denial of service problems.  They discuss it here:</p>

<p><a href="https://bitcointalk.org/index.php?topic=131443.0" rel="nofollow">https://bitcointalk.org/index.php?topic=131443.0</a></p>

<p>However, I don't think transaction replacement is really needed because sometime recently the developers made so transactions using lock_time and version &lt; UINT_MAX are "non-standard".  What this means is that transactions using lock_time won't be relayed on the peer-to-peer network until the lock_time is reached, at which point you can push the transaction for relaying and it will be considered standard and able to go into the blockchain.</p>

<p>The reason I think this takes care of most use cases is because replacement was only needed when the locked transactions were being relayed, and stored in the memory pools, so if a transaction came along that wasn't locked, it wouldn't be accepted because replacement wasn't implemented, and the locked transaction was already in the mempool.  Since the locked transactions won't relay and store in the mempools now until lock_time is reached, I believe replacement is far less important, so the fact that it doesn't look like it will be implemented anytime soon is not a problem.</p>

CC BY-SA 3.0
2013-12-14T10:58:26.390Z
2013-12-14T10:58:26.390Z
Mike Taylor
<p>it's not implemented yet.</p>

<p>The protocol has these feature defined so they can be implemented in the future, but currently more important features are being worked on.</p>

<p>Fork the repo and create a patch to add support :p</p>

CC BY-SA 3.0
2011-09-11T02:27:28.877Z
2011-09-11T02:27:28.877Z
Thomas Grainger
<p>Heres a site that shows nLockTime code implementation
whether it works or not I have no idea
Some say its implemented, others say its not</p>

<p><a href="http://brainwallet.org/#tx" rel="nofollow">http://brainwallet.org/#tx</a></p>

CC BY-SA 3.0
2014-05-13T16:32:54.040Z
2014-05-13T16:32:54.040Z
Ade
<p>That's not correct. The nLockTime field is implemented. It was deliberately switched off some time ago in order to reduce the complexity of the protocol. The reason was a series of protocol-based attacks that had compromised the integrity of the system.</p>

<p>At some point the feature will be re-activated. Probably, after someone has written a comprehensive test suite and technical analysis showing that it's not risky to re-enable.</p>

CC BY-SA 3.0
2012-12-16T10:12:23.787Z
Presumably by "That's not correct" you mean Thomas' answer, but the Stackexchange format does not make the context at all clear and immutable.
Meni Rosenfeld
CC BY-SA 3.0
2013-03-15T08:31:56.917Z
Is nLockTime really deactivated? Could somebody provide a source?
kermit
CC BY-SA 3.0
2011-09-18T12:26:09.150Z
2011-09-18T12:26:09.150Z
Mike Hearn
<p>The <a href="https://en.bitcoin.it/wiki/Contracts">wiki article on contracts</a> talks about the best stuff you can do with delays and replacement. (Lock time and sequence numbers, respectively.) But according to the documentation, replacement isn't supported yet. Why not?</p>

<p>(If the answer is "it's not implemented yet", why hasn't it been?)</p>

<transactions><protocol>
Why isn't transaction replacement supported?
JP Sugarbroad
# Why isn't transaction replacement supported?

(Asked by: username_0 on 2011-09-10)

The [wiki article on contracts](https://en.bitcoin.it/wiki/Contracts) talks about the best stuff you can do with delays and replacement. (Lock time and sequence numbers, respectively.) But according to the documentation, replacement isn't supported yet. Why not?

(If the answer is "it's not implemented yet", why hasn't it been?)

**Tags:** transactions, protocol


---

## 4 answers

### Answer by username_4 on 2011-09-18. Score: 6 | Accepted answer

That's not correct. The nLockTime field is implemented. It was deliberately switched off some time ago in order to reduce the complexity of the protocol. The reason was a series of protocol-based attacks that had compromised the integrity of the system.

At some point the feature will be re-activated. Probably, after someone has written a comprehensive test suite and technical analysis showing that it's not risky to re-enable.

> **Comments:**
> **username_5**: Presumably by "That's not correct" you mean username_2' answer, but the Stackexchange format does not make the context at all clear and immutable.  
> **username_6**: Is nLockTime really deactivated? Could somebody provide a source?  

---

### Answer by username_1 on 2013-12-14. Score: 3

You can do almost everything on that [Contracts](https://en.bitcoin.it/wiki/Contracts) page without needing transaction replacement. Lock time *does* work today (as of Dec 2013), transactions with lock\_time can't go into the blockchain until the time is reached.

Transaction Replacement is not supported because the developers have said that the whole idea of nSequence-based replacement is problematic, and may never be enabled apparently it causes potential denial of service problems. They discuss it here:

<https://bitcointalk.org/index.php?topic=131443.0>

However, I don't think transaction replacement is really needed because sometime recently the developers made so transactions using lock\_time and version < UINT\_MAX are "non-standard". What this means is that transactions using lock\_time won't be relayed on the peer-to-peer network until the lock\_time is reached, at which point you can push the transaction for relaying and it will be considered standard and able to go into the blockchain.

The reason I think this takes care of most use cases is because replacement was only needed when the locked transactions were being relayed, and stored in the memory pools, so if a transaction came along that wasn't locked, it wouldn't be accepted because replacement wasn't implemented, and the locked transaction was already in the mempool. Since the locked transactions won't relay and store in the mempools now until lock\_time is reached, I believe replacement is far less important, so the fact that it doesn't look like it will be implemented anytime soon is not a problem.


---

### Answer by username_2 on 2011-09-11. Score: 1

it's not implemented yet.

The protocol has these feature defined so they can be implemented in the future, but currently more important features are being worked on.

Fork the repo and create a patch to add support :p


---

### Answer by username_3 on 2014-05-13. Score: 0

Heres a site that shows nLockTime code implementation
whether it works or not I have no idea
Some say its implemented, others say its not

<http://brainwallet.org/#tx>


---

