Online reputations are becoming increasingly important, and reputation systems are inevitable. Already, Uber has ratings for drivers and riders, and China has begun scoring citizens with social credit. Companies such as Google, Facebook, Apple, etc. have control over the personal data which will craft our online reputation systems. As show in the the Black Mirror episode “Nosedive”, online reputation systems have the potential to be extremely powerful and dangerous.
We believe that online reputation systems are inevitable. However we believe that if such a system is ultimately going to exist, it should be decentralized, rather than being controlled by private corporations or governments. We wanted to see how such a system would look like and operate, so we developed a distributed reputation app using Android, Ethereum blockchain, and the Eigentrust algorithm.
What it does
Repnet allows network participants to rate other participants on a 1-5 scale. The aggregate of many ratings forms a cumulative rating. A person’s digital identity is associated with an Ethereum address and ratings are transactions logging the rating events on Ethereum thereby making this information highly available and easy to adopt by existing users. A person is able to rate someone if they know their ethereum address, or if they are nearby and have the rating app. Ratings are weighted fairly and resistant to abuse as the ratings are computed using the Eigentrust algorithm adopted by many P2P applications to encourage honest file-sharing.
How we built it
We build an Android app that allows users to rate other users. The app is able to discover nearby devices running the app using the Android nearby API, and enable users to rate nearby people/addresses. When a rating is made, a rating transaction is made to our smart contract on the Ethereum Blockchain. The smart contract logs these rating events and makes them highly available and persistent for clients. The eigentrust algorithm is able to be run on any client using these rating events to compute global trust scores. This algorithm is written in Java and reads directly from our smart contract.
Challenges we ran into
We had a lot of difficulty working with the Ethereum blockchain in Java. In addition, the algorithmic aspects of aggregating rating data from multiple sources to calculate a global reputation score was fairly challenging.
Accomplishments that we're proud of
The app reliably submits transactions onto Ethereum and nearby users are notified of their updated ratings in a timely fashion. Since reputation is associated with an ether address, there is always the opportunity to restart or keep such reputation unassociated with their primary identity.
We've make a working prototype of a distributed, trusted, and immutable reputation system.
What we learned
Online reputation is hard to do efficiently, but it is possible. Leveraging blockchain is highly desirable for reputation management as no 3rd party has dominance over the system.
What's next for RepNet
This is a proof of concept where reputation can be mediated in a trustless manner rather than by a centralized authority such a governments or corporations. We’d like to polish the system.