I wonder how #blob-content would affect indexing. Same for e.g. streaming message metadata in order and then message content in reverse chronological order. How much do the current indexes assume/require messages in a feed are in order? Currently messages received through ssb-ooo
are not indexed, except for retrieval by id. But it is useful for applications to be able to find message using other indexes.
I think we could implement deleting messages with current messages/feeds. Senders and requesters of messages could keep track of banned messages and the message previous to each one. When fetching a feed, if you find that your replication state for a feed says the latest message you have for that feed is one of the ones previous to a banned message, you change it to the id of the banned message and increment your sequence number for that feed's replication state. Then proceed replicating, and you will have validated the feed except for the banned message, trusting the external info about what message the banned message followed. I think the sequence number helps here because it means you can verify that the banned message took up exactly one value in the sequence space (and not a negative value which would allow cycles). When sending a feed to peer, if you are about to send a banned message, you omit it, maybe sending a note referring to a message where someone asserted that the message was banned, and then resume sending the feed. Or, to save bandwidth when replicating to peers that don't support this protocol, just stop sending messages for the feed when reached the banned message. The peer should then notice that the latest message they got is one that precedes a banned message, and then they will update their state to skip the banned message and then resume replicating by requesting the feed from the next sequence number.
About hashing message content without metadata: wouldn't it mean a message id would not point to a unique message? If the id is the hash of the content, it might be many feeds published the same content, at different times. How would a UI show this?