It would be useful if we can attach a message to monero transactions for reference. Is there any future features in the works to do something like this? Bitcoin has OP_RETURN with 40 byte limit.

2 Answers 2


Current software supports embedding arbitrary 256-bits or 64-bits into a TX. The 256-bit "payment ID" will be unencrypted on the blockchain (unless you encrypt before submitting). The 64-bit "payment ID" will be encrypted with the "shared secret" before bein written into the TX. This can easily be decoded by the recipient as it uses a scheme similar to how outputs are made (ECDH).

Since it allows any "hex" string of 64 or 16 chars, you could use this functionality today.

As TX-extra field is not subject to consensus rules (it's fundamentally a message field - it can be anything), you could make your own wallet implementation to put whatever you want in there. It would, however, be restricted by the max TX size and the receiving wallet would need to be able to recognize it as well.


Well, a transaction id is already a 32 byte field that you can put whatever you want in there.

Payment id is actually in a part of the transaction field called "tx extra", which I believe supports arbitrary length data (as long as the tx for in a block, I guess). However, the default client does not support putting arbitrary strings on that field, and I don't think other nodes will relay what they see as a malformed tx. So, you'd have to modify the source code and then mine your own block at this point (or work with a pool).

  • 1
    There's no consensus rules enforced on TX-extra AFAIK. In theory you could even omit it, but then your recipient would have trouble finding his output since the TX public key is also part of TX-extra. You'd have to communicate it via some side-channel then.
    – JollyMort
    Sep 20, 2017 at 21:22

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.