When a user requests data from another user, we need a mechanism to prevent the censorship of specific messages. Messages should be chained together, so that each message contains a signature of the message before it. This way chains of messages can be validated. When a message is "deleted", a peer simply stops sharing that message, breaking the chain. When peers request messages, they scan for availability of those subscriptions from the peers on the network. If they're looking for all posts, peers can respond with the start and end hash of any bunch of messages they have, as well as the number in each bunch. This allows the peer to prioritize connections to peers that has the largest portion of messages in the requested set. Upon receipt of the messages, they can validate the message chain of each required group against their advertised availability, and if something doesn't line up, a complaint can be sent out to the network lowering the trust score of the peer. A lowered trust score triggers on or more clients to re-request to complained about data from that peer for the express purpose of validation, re-sending a complaint of their own, or renewing the trust score. Trust score is prioritized on peer selection alongside message availability. Trust score starts at 1 and can only go down to prevent people from artificially raising their trust score. Theoretically people could bomb someone's trust score by mass complaining, but each complaint would trigger the rest of the network to re-validate, so more than 50% of the network would need to have poisoned validation to result in any given peer from having their trust score nuked.
When a user requests data from another user, we need a mechanism to prevent the censorship of specific messages. Messages should be chained together, so that each message contains a signature of the message before it. This way chains of messages can be validated. When a message is "deleted", a peer simply stops sharing that message, breaking the chain. When peers request messages, they scan for availability of those subscriptions from the peers on the network. If they're looking for all posts, peers can respond with the start and end hash of any bunch of messages they have, as well as the number in each bunch. This allows the peer to prioritize connections to peers that has the largest portion of messages in the requested set. Upon receipt of the messages, they can validate the message chain of each required group against their advertised availability, and if something doesn't line up, a complaint can be sent out to the network lowering the trust score of the peer. A lowered trust score triggers on or more clients to re-request to complained about data from that peer for the express purpose of validation, re-sending a complaint of their own, or renewing the trust score. Trust score is prioritized on peer selection alongside message availability. Trust score starts at 1 and can only go down to prevent people from artificially raising their trust score. Theoretically people could bomb someone's trust score by mass complaining, but each complaint would trigger the rest of the network to re-validate, so more than 50% of the network would need to have poisoned validation to result in any given peer from having their trust score nuked.