The transaction address could be just a hash of public key instead of the Merkle Root (if I understand correctly how it works). In this case we still could use Winternitz OTS, but the signature size would be smaller, and we wouldn't need to store the index of the current key in the transaction.

So, what is the rationale behind using Merkle Trees in MAM?

  • This blog post might be helpful to answer your question: Introducing Masked Authenticated Messaging
    – Ian Metten
    Commented Feb 19, 2018 at 13:15
  • Thanks, but I've read it already. It doesn't say anything about the rationale behind using Merkle Tree based signature
    – alexpods
    Commented Feb 19, 2018 at 14:48

2 Answers 2


To piggyback off of Chris, you can have forward secrecy even with a merkle tree of one leaf (which is the same as a simple one-time signature).

However, there are a few things (some of which I outlined in this blog post) that you can as a consequence of having merkle trees in MAM.

  • You can split/fork the channel into topics
  • You can encrypt different messages under different (even heirarcical) keys to control acccess different aspects of an otherwise logically related message
  • You could use MAM in a similar way as SPHINCS for a long-term identifier

Merkle trees allow you to have forward secrecy and the ability to order the data that is being sent. If you used the same address over and over for a MAM session, as you would if you just hashed the key and used that, then theres no way to tell in what order the transactions would arrive.

  • 1
    The fact that we include the root of the next Merkle Tree in the current message gives us forward secrecy and the ability to order the data. Not the Merkle Tree itself. With the same result we could just include the hash of the next public key instead of the root.
    – alexpods
    Commented Feb 19, 2018 at 15:16

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.