The problem Proof-of-Usage solves
For current governance structures in Web3, how much voting power to grant to someone is really important! We don’t want whales buying into the governance proposals. Several factors determine how much should someone be granted voting power be it via fungible tokens or Soulbound tokens (SBTs). Some factors are:
- Protocol contributions
- Code
- Social identity build up / Communication
- Co-ordination
- Writing (papers, blogs, etc.)
- Network
- Running Nodes
- Maintenance
- Usage
This project measures usage. At the end of the day, a protocol’s adoption is dependent on its users, and they should have a say in where the protocol should be going. The more a protocol is used by someone, they should get relatively equivalent voting power in governance proposals.
There are 2 options for this:
- On protocol layer for governance of L1/L2s itself
- On application later for governance of protocols built on top of base chains e.g. Uniswap, ENS, etc.
Challenges you ran into
The biggest one: trying to modify a big chunk of Geth over a weekend! Tried to implement protocol level mechanism, but it didn’t work. Wrote specification for that instead. What did work was implementing the second option of doing it on application layer.
Also didn’t realize limitations of publicly available JSON-RPC endpoints for fetching the data. But made it work with limited set.
Technology used
- Geth
- Foundry
- Open Zeppelin
- Nodejs
- Merkle Proofs