Looks pretty good to me! This will be helpful in developing Project Decorum for sure.
I just wonder, why is for example
HashSet<AppendedData> used instead of simply a
Vec<AppendedData>? Isn’t the order of keys in a HashSet arbitrary? Or is that not the case here because it will never be resized?
Edit: One thing concerns me a bit, and that is that the cost to fill a Pub/PrivAppendableData without a white list with spam is zero. Public keys can be genereted en masse, so blacklisting won’t work against a determined attacker. In my original Project Decorum design, every reply costs a PUT and there is no kind of “reply list” that can be filled up. Spamming would thus be costly and would never result in complete denial of service.