graphprotocol / mission-control-curator

15 stars 58 forks source link

[SUGGESTION] Project attributes #98

Open LeapGamer opened 3 years ago

LeapGamer commented 3 years ago

Add the ability for a global project_attributes.json under https://github.com/graphprotocol/mission-control-curator that defines a set of global attribute types that a project might have. For instance a project might have

[ { "name": "Total Value Locked", "id": "total-value-locked", "description": "The total value of all assets locked in the project.", "type": "time-series" }, { "name": "Exchange Volume", "id": "exchange-volume", "description": "The total value of all assets exchanged with the project.", "type": "time-series" }, { "name": "Governance Token", "id": "exchange-volume", "description": "The ERC20 token used for voting on governance decisions for the project.", "type": "ERC20-token" }, { "name": "Project Status", "id": "exchange-volume", "description": "The current status of the project.", "type": "enum", "values: ["Pre-launch","Alpha","Beta","Launched","Abandoned"] }, { "name": "Supported Tokens", "id": "supported-tokens", "description": "The tokens supported by this project.", "type": "token-list" }, ]

Then, for each project, add the ability to submit, verify, challenge, update, and remove attribute data for a particular project. The attribute submission would include the project, the attribute, and a subgraph call that supplies the correct data. For example, a Curator could submit the following to add the list of supported tokens to the Uniswap project:

{ "project-id": "0xa2e07f422b5d7cbbfca764e53b251484ecf945fa", "attribute-id": "supported-tokens", "subgraph-id": "QmWTrJJ9W8h3JE19FhCzzPYsJ2tgXZCdUqnbyuo64ToTBN", "query": "{ tokens { id symbol name decimals totalSupply tradeVolume txCount totalLiquidity } }" }

Once the attribute is successfully added, the data can be displayed on the Uniswap project page at: https://everest.link/project/0xa2e07f422b5d7cbbfca764e53b251484ecf945fa/

This would allow a consistent set of key attributes to be added in a decentralized way, allowing users to compare attributes like token price, exchange volume, supported trading pairs, vote participation, governance type, etc, across all projects. It could make Everest a one-stop-shop for important project data.

yanivtal commented 3 years ago

Nice. This starts getting into subgraph territory. The fields on a project are dictated by the schema in the Everest subgraph. There should be ways for curators to collaborate on making changes to the schema in a decentralized way. Governance over subgraphs is an exciting area of research that would be wonderful to have more collaborators on.