Kudos A Peer-to-Peer Discussion System Based on Social Voting Luca Matteis [email protected]
Social Voting (online discussions)
Nothing decentralized exists for discussing online using social voting. Central entities have control over what can be discussed. Could alter users reputation. Challenges for decentralized systems: Who keeps track of user's reputation? Where is information stored and retrieved?
peers key y ke blockchain put(key, val) distributed hash table get(key)
Incentives • Similar to Bitcoin: mine and get points. • Universal ﬁxed amounts make it uneconomical to use for trading. • To earn points users post content that others are willing to upvote.
Transaction (vote): Input —(key)—> Output A—(a)—>C C—(d)—>C D—(c)—>B block #298 B—(b)—>A B—(d)—>C C—(b)—>D block #299 4 users: A, B, C, D 4 DHT keys: a, b, c, d points(user A) = Outputs(A) = 3 points(key b) = key(b) = 2 A—(a)—>B C—(d)—>D D—(a)—>A B—(c)—>A block #300
Transaction (vote): Input —(key)—> Output A—(a)—>C C—(d)—>C D—(c)—>B block #298 B—(b)—>A B—(d)—>C C—(b)—>D A—(a)—>B C—(d)—>D D—(a)—>A B—(c)—>A block #299 4 users: A, B, C, D 4 DHT keys: a, b, c, d points(user A) = Outputs(A) = 3 points(key b) = key(b) = 2 block #300 Most relevant keys: a=3 d=3 b=2 c=2 DHT Keys in the latest block are fresher because they are pushed more often to the DHT
What's relevant lately? 2. get() the keys from the DHT peer 3. push() the keys to keep keys: a: 30 points, them alive in the DHT b: 45 points 1. get most relevant keys from the blockchain distributed hash table
Publish content. Content has a key = k and a value = "Hello World" 1. push(k, "Hello World") to the DHT peer 2. make a transaction (vote) with k inside and soon it will be mined in a block distributed hash table
Transactions universal ﬁxed amount Problem: same user might have several addresses 50 points 1EzwoH… 1AZyMz… (key) They could send votes with speciﬁc key to themselves to promote their own content
Transactions universal ﬁxed amount (constant) With universal ﬁxed amounts, transactions are of an atomic value. amount = 1 1E..0 1 point 1EzwoH… 1….. 1….. 1 point 1AZyMz… 1..N-1 1….N To send 50 points, he now needs to break it into 50 transactions (with amount=1)
Transactions universal ﬁxed amount Each transaction also requires a ﬁxed fee tx amount = 1 fee amount = 1 1E..0 1….. 1EzwoH… 1….. 2 points (1 fee, 1 receiver) 1AZyMz… 1..N-1 1….N To send someone a point (a vote) it requires 2 points from the sender: 1 for the receiver, 1 for the miners. Sending 10 points to someone would require 10 addresses with at least 2 points each. Creating 10 addresses with 2 points each, would require 10 transactions of 4 points each, meaning 40 points.
Keep alive Transactions in the latest blocks are republished more frequently to the DHT to enable quicker response times. Intuition: latest content is more frequently fetched. lower republish rate higher republish rate This means old content might not be present in the DHT anymore. System only works well for latest content: it's not meant to function as a permanent storage system (although DHT keys will remain permanently in the blockchain).
Groups subscription Content can be categorized under speciﬁc groups such as: sports, videos, politics, astronomy, etc. to enable creation of communities (subreddits). Usera subscription = soccer lower republish rate higher republish rate Users subscribe to speciﬁc groups and their republish rate is biased towards content they're subscribed to. Intuition: smaller communities might die off into old blocks, therefore subscribers can help store that content for longer periods of time in the DHT.
DHT structure • Hierarchical structure of comments to enable discussion (replies/responses are nested). • Two types of content: posts and comments. • Store little information (limited amount of bytes needed for comments/posts). • Groups can be assigned to posts to categorize content and enable creation of communities. • Blockchain doesn't care about this at all (all it needs is a reference).
Use cases Freedom of speech Decentralized reputation 1890 45 128 119 Proof of what anybody said available in the blockchain Relevant content stands out