I would like to embed human-readable short text message to outgoing transaction such that only the receiver can read it. May be reasonably short. Something similar like in wire transfer when sending money form one bank to another you can add "note" that the recipient will see with the incoming transaction.

Can payment-id or tx-extra field be utilised for this? Is it possible with current wallet somehow?

I was thinking it might be possible to create such message by sending to integrated address, where I as sender will create the integrated address such that the payment ID is human readable and encrypted by recipient public key.

Or maybe add the message to tx-extra field and encrypt by recipient public key.

However both these would need to be added as features to wallet to be usable by non experts.

How hard would it be to add this functionality into GUI wallet?


Yes you can do it, but.

There are 2 options which you can use at the moment: plain-text 256-bit PID and encrypted 64-bit PID as part of the integrated address scheme. In principle, you could put anything in the tx-extra field but you'd need to customize the wallet software to do this.

  1. Plain-text 256-bit PID - You could encode a string of 32 ASCII characters into this one. However, the receiving wallet would still display it in "hex", so your recipient would need to c&p the "hex" string into some converter to see the human-readable message. This is not private, because anyone could read the message attached to the TX.

  2. Encrypted (stealth) 64-bit PID - You could encode a string of 8 ASCII characters into this one. Again, the receiving wallet would still display it in "hex". This is the more private version, because only the intended recipient would see the actual message. In this scheme the message is encrypted with the shared secret. This means that each TX has a different encryption key so it looks like the PID is randomized every time, while the recipient would see the same message.

Of course, some arbitrary length "note" functionality could be implemented into the wallet, using the TX-extra field. It would be better to encrypt it with shared secret, as it's done for stealth PIDs already.

| improve this answer | |

Your Answer

