- Interface: https://sybil.org
- Read the Sybil announcement post: https://uniswap.org/blog/sybil/
- Sybil list documentation: https://github.com/Uniswap/sybil-list
Sybil is a governance tool for discovering delegates. Sybil maps on-chain addresses to digital identities to maintain a list of delegates. This interface displays governance data for supported protocols, and also allows users to link social profiles with their Ethereum addresses.
Mainnet support only.
Sybil is a tool that connects wallet addresses to digital identities. Users sign messages with their Ethereum keys, and post signatures on their social profiles. Verifiers can then check these signatures and verify truthful address -> profile mappings.
This interface allows users to connect their Ethereum addresses to social profiles using the Sybil verification flow. For more detailed documentation on the Sybil verification process, see here: https://github.com/Uniswap/sybil-list
This interface supports social verification through Twitter only. However, more platforms can be added in the future (Github, etc).
The interface allows users to view data about delegates and proposals for multiple Ethereum governance. Users can also delegate votes and vote on active proposals.
Currently Uniswap and Compound governance are supported in the interface.
Forks of Compound or Uniswap governance can easily be integrated into the interface. There are two data sources the interface uses: data directly pulled from Governance contracts and data from governance subgraphs.
Steps to add new protocol support:
-
Add relevant information to list of supported protocols in reducer.js
-
Make sure to have a subgraph that can return data that matches the stuctures in queries.js. See subgraph code for governance here: https://github.com/protofire/compound-governance-subgraph. This subgraph can easily be forked and pointed towards other governance systems.
-
Add subgraph client support by adding relevant information in client.js and in hook
useSubgraphClient
in hooks.ts
PR's for additional protocol support are welcome.
yarn
yarn start
To have the interface default to a different network when a wallet is not connected:
- Make a copy of
.env
named.env.local
- Change
REACT_APP_NETWORK_ID
to"{YOUR_NETWORK_ID}"
- Change
REACT_APP_NETWORK_URL
to e.g."https://{YOUR_NETWORK_ID}.infura.io/v3/{YOUR_INFURA_KEY}"
Note that the interface only works on mainnet to limit the amount of required data sources for governance systems.
Please open all pull requests against the master
branch.
CI checks will run against all PRs.