Tiny update on the metadata: I'm currently leaning towards prefixing the metadata with a varint id. It would initially be used to distinguish between encrypted messages and unencrypted messages. At some later point, it could indicate messages where the metadata does not contain timestamp/sequence-number/feed-id (otherwise we'd have to conflate that with cypherlink encoding indicators, even though this is not really an issue of content encoding), or encrypted messages that use an alternative encryption scheme (here the id gives us future-proofness), and who knows what other types of messages could one day become necessary.