please check https://github.com/philipplgh/repootation to see text with emojis.

Inspiration

Facebook "like buttons" can be found everywhere on the Internet. Without StackOverflow upvotes it could be possible that a lot of software (maybe even Ethereum) would not (yet) exist. GitHub stars are one of the most important factors to assess the quality and popularity of a software.

While these reputation concepts are extremely powerful and make it very easy to capture reactions and a rating of content they also have major restrictions:

  • they only represent one domain specific attribute - no simple format to express them
  • they are centrally managed and stored on company servers (reputation can go "out of business", be target of DoS attacks)
  • they are hard to process by other software such as package managers (only download audited modules, display modules with >100 likes)

What it does

Repootation (repootation) is a react component for fast and efficient rating, that can be embedded anywhere on the Internet and allows to capture reactions and ratings to content in a decentralized and verifiable way. Repootation uses triples of the form <content hash><relationship><signature> that are stored on orbitdb through 3Box. With these statements we can construct an entity relationship graph and verify all edges between nodes.

How I built it

React component with one property for a content string. It uses 3Box (orbitdb, IPFS) for storage. ethereumjs-utils for ecRecover to get public addresses from signatures. It uses a flattened graph datastructure with triples of the form <content hash><relationship><signature>

Challenges I ran into

Some of the problems Repootation was facing belong arguably to the hardest CS problems. And unfortunately of Repootation does not solve all of them.

Goals:

  • Multiple votes by one account are not allowed (check)
  • One identity = one account (anti sybil attacks) (cross) - not (yet) -options:
    • central server that validates identity
    • chain of trust
    • proof of work
    • stake
  • Non repudiation: bad actors cannot revert or obscure their actions (check)
  • Decentralized storage (check)
  • Portable and expressive data format (check)
  • Verifiable relationship statements (check)

Accomplishments that I'm proud of

  • it works
  • it is extremely versatile
  • real-time updates (multi user)
  • it can be used for important use cases (smart contract audit indicators and ratings)

What I learned

Reputation systems are hard.

What's next for Repootation

  • npm module
  • remix plugin

Built With

Share this project:
×

Updates