I've been thinking about a similar system for a while.
I think you can avoid a lot of the success-as-worst-case issues by designing this as a decentralized protocol.
Each 'user' is a cryptographic identity: all votes or posts are authenticated by the users signature. When you follow/upvote a user, your clientside software increases that user's weight in your feed. All content on the system is content addressable by hash. All 'likes' are signatures on a content hash.
When you connect to another node, you request all recent signatures for people you follow/have upvoted. Clientside software can use various schemes for weighting - totally up to each individual user (ex. how many upvotes is equivalent to following someone? how much time decay in scoring do you want? how deep do you want to traverse followed users' social graph? etc.). Weights for each followed user are multiplied by that user's score for that piece of content, and is then summed across all followed users to create an ordinal list of content - a 'feed'. In this way, if multiple users you follow all like the same piece of content, it would probably be scored higher than a piece of content liked by only one user you follow - so long as your weighting for all those users is equal.
Ideally:
- Nodes should be able to support multiple users, and host a webserver that provides access to the network to those who are not technically sophisticated enough to host it themselves.
- User data should be portable and transferrable to different nodes.
- Nodes could implement their own email+forgotpassword userflow to abstract the crypto complexity away from laypeople, though this complicates account transfers and risks account theft by unscrupulous nodes.
I think you can avoid a lot of the success-as-worst-case issues by designing this as a decentralized protocol.
Each 'user' is a cryptographic identity: all votes or posts are authenticated by the users signature. When you follow/upvote a user, your clientside software increases that user's weight in your feed. All content on the system is content addressable by hash. All 'likes' are signatures on a content hash.
When you connect to another node, you request all recent signatures for people you follow/have upvoted. Clientside software can use various schemes for weighting - totally up to each individual user (ex. how many upvotes is equivalent to following someone? how much time decay in scoring do you want? how deep do you want to traverse followed users' social graph? etc.). Weights for each followed user are multiplied by that user's score for that piece of content, and is then summed across all followed users to create an ordinal list of content - a 'feed'. In this way, if multiple users you follow all like the same piece of content, it would probably be scored higher than a piece of content liked by only one user you follow - so long as your weighting for all those users is equal.
Ideally:
- Nodes should be able to support multiple users, and host a webserver that provides access to the network to those who are not technically sophisticated enough to host it themselves.
- User data should be portable and transferrable to different nodes.
- Nodes could implement their own email+forgotpassword userflow to abstract the crypto complexity away from laypeople, though this complicates account transfers and risks account theft by unscrupulous nodes.