Skip to content

Implement message chaining and validation #7

@Taiiwo

Description

@Taiiwo

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions