Message
in a bottle.
“The whole chain can watch it float past. Only one person can open it.”
Every shielded Zcash payment carries a sealed 512-byte memo. Write one here and send the only key as a link.
Everyone sees the bottle. One person reads it.
You write it and cork it, then the link goes to one person. The ocean in between is public and gets nothing but hex.
Up to 512 bytes. A letter costs 1, an ü costs 2, an emoji costs 4. The counter does the maths as you type.
Your browser pads the note to exactly 512 bytes and seals it with a random key. The key goes into the link after the #, and browsers never send that part to a server.
Whoever opens the link gets the bottle and the key together, so the note unrolls for them. Anyone else who finds the bottle gets 540 bytes of noise.
Every shielded payment carries a bottle.
In Zcash every shielded payment has an encrypted memo field, and it is always 512 bytes. A short note gets padded with zeros, an empty memo is all zeros, and the fee is the same either way, so from the outside nobody can tell a "thanks" from a love letter. The recipient can read it. So can anyone they hand a viewing key to. The chain itself only stores ciphertext.
People use it for invoice numbers, refund addresses, receipts and thank-you notes, and there are chat apps whose whole history is memos.
Sources: Zcash docs, memos · ZecHub, memos · z.cash/learn
This is all they get.
A demo bottle, sealed with a key that went over the side. Seal your own and it shows up here instead.
12 bytes of nonce, 512 bytes of sealed memo, 16 bytes of tag. A "hi" and a ten-line letter come out the same length, which is exactly why Zcash pads memos to 512.
Nobody here can read any of these.
Tap a bottle to see its hex. Demo bottles are labelled. Yours are kept as ciphertext only, on this device, because the key went into the link you sent.