This project was born out of the need in society to have a more effective way of distributing and allocating resources in organizations. Rather than allowing one person to control the resource flow based on their opinion (beaurocracy), we wanted to create a way of allocation that was based on people's contribution (meritocracy). By utilizing a peer-to-peer resource allocation system for payments, organizations will be able to decentralize power, reward their members more accurately, and incentivize production and creativity at a high level.
What it does
The ĐApp presents a browser based UI for peer to peer ratings. Peers rate each other, submit to the blockchain using Metamask, and can view the results. Only encrypted aggregate ratings are stored on the Ethereum blockchain. A public key is shared across clients to homomorphically encrypt ratings data before saving on the blockchain. The homomorphic encryption opens up the possibility of implementing a rolling average on each new rater's client application and save only the new average to the blockchain. Final results can be publically revealed by decrypting the rolling average with the private key and presenting on the client side. The results, once revealed, are pushed to a Radar Chart that shows the relationship between people and how their contribution ratings compare to one another.
How we built it
Tech stack includes:
- Reactjs, Web3 and MetaMask for client side UI
- Paillierjs (for ease of use not because we recommend js crypto)
- Solidity on a local testrpc
- Semantic UI and chartjs2
Challenges we ran into
On chain libraries for integers larger than uint256 limit our options. The paillier based calculations are handled off chain. Determining our game-plan - there were many ways we could go with the approach (hybrid chain, all on-chain, ex). Ultimately, we decided to modify our ideal approach due to hackathon time restraints.
Lots of interesting talks made it a challenge to choose whether to stay and code or go and watch the talk, especially when we weren't sure if we'd be able to get a feature completed by the end of the competition...but we got all the features we expected at this time :)
Accomplishments that we're proud of
We present an elegant solution to peer to peer ratings on the blockchain, while not revealing who rated who what score. The application serves as a proof of concept of how peer ratings can lead to real life implications (e.g. meritocratic pay delivered over the blockchain.)
What we learned
Privacy is a difficult challenge without an easy answer. Each technical tool we considered comes with a set of advantages and new disadvantages. To properly tackle our use case, a hybrid approach is likely needed.
What's next for Light Leadership Meritocratic Ratings
Ring signatures are next on the list to evaluate. Tackling the problem from the opposite angle–hiding the source of the rating and revealing the actual rating–supports a different set of use cases and removes relaince on a rusted reveal.
User authentication and user-friendliness is important, especially to those inexperienced interacting with the blockchain. Additional functionality must also be implemented:
- Batching "surveys" together to only reveal averages for each month
- Automatic payments for Sphere Participants based on their average ratings and profits within the Sphere
- Email/Text notifications when it's time to rate each other member
- Ability to create/manage users of Spheres
- Enhanced data viewing / data analysis (d3 libraries)