I know you can delay a transaction's accepted date by using nLockTime. I'm still looking for the simplest way to generate a transaction with nLockTime, but that's another topic.

I'm wondering if there's a way to use this feature to send a message that will only decrypt after the time is due.

I know that a transaction broadcast with nLockTime already has all details visible and the amount is simply not yet spendable by the recipient. Is there a way to also make the note on that transaction encrypted until such date? Can I use bitmessage to achieve this somehow? How about another coin such as Dash or zCash which I assume also encrypt the transaction's note to anyone except the recipient [do they actually do this, especially Dash]?

The idea is to send a message that only the recipient can decrypt and only after a certain date, with no manual intervention in the future, nor anything else involved. It would be ideal if they received that message in their wallet like any transaction after it's due, but the message shouldn't be viewable by others nor by the recipient in advance searching, say, in a block explorer.

Thank you

  • I don't think that's possible.
    – Penquin
    Jun 27, 2017 at 16:28

2 Answers 2


No. There is no way for anything to be encrypted in a Bitcoin transaction as there are no opcodes that support encryption or decryption.

  • 1
    That's not relevant. Even if such opcodes existed, they wouldn't let you (1) decrypt something that others can't since everything in the chain is public and (2) change in behaviour after some time. Jul 7, 2017 at 6:41

I don't think that is possible with only nLockTime. There are however "smart" contracts, by using a 2-of-2 multisignature where each party deposits an insurance worth more than the shared secret. The economic loss is more than they gain if both parties don't follow through on their part of the deal.

On a note, this would actually be possible with the technology currently used ZCash. Using zk-SNARKS, you could generate proof that a piece of content is encrypted by key X. In that same zk-SNARK signature you could prove that hash(X) = Y and create an economic construct that will only allow a transaction after X is revealed, creating Y and allowing a party to get their money.

  • Very interesting, thank you. Where could I find such contracts? Are you talking about ethereum-based contracts?
    – Nikksno
    Jun 27, 2017 at 17:33
  • @Nikksno These contracts are also possible on Bitcoin, using the OP_CLTV. Basically past block X, you destroy access to all funds for both parties. This is mainly a economical construct, research the Nash equilibrium. The best example I can find is probably voluntary.net/bitmarkets/whitepaper
    – Penquin
    Jun 29, 2017 at 19:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.