Giveth / Roadmap

Open Roadmap Planning via Tokenlog
0 stars 1 forks source link

DeVouch - Decentralized Vouching #108

Open divine-comedian opened 2 months ago

divine-comedian commented 2 months ago

A system of vouching for an RPGF applicant’s trustworthiness using attestations.

This will allow anyone to use a given schema to attest that they back this project - meaning that, it is legitimate, and can be trusted to fulfill on its promises or has fulfilled its promises.

Using a subgraph and graphQL API we will be able to get a list of RPGF applicants and show them on a webpage along with information related to how many people have vouched for this project

Anyone can use the schema to attest for a given project but by default we are able to filter by if an attester themselves have received a certain attestation.

For example, we can filter if the person who is attesting for project x if they have received an attestation stating they are an Optimism badgeholder.

We are also able to see the addresses of who vouched for the project, this creates trust and accountability on the part of the vouchers

On top of this we can allow users to filter from other schemas, checking the projects that have been vouched for by recipients of a certain attestation.

Alternatively projects can flag a project for untrustworthiness or if the project is an imposter or not legitimate.

User Stories

Personas

Stories

Features

Attestations

Viewing Projects

Project Sorting & Filtering

“My Attestations”

External Integration/OSS

Links

Notion

https://www.notion.so/giveth/Project-Attestations-System-for-Optimism-DeVouch-f6caaec2dbe14e42912580285fbecce9?pvs=4

Attestation Services Technical Design

by @aminlatifi https://www.notion.so/giveth/Project-Verification-Attestation-Support-Design-a991597acd0e4220b23131fa434e2339

Figma WIP :construction:

https://www.figma.com/file/QBvhJZY3C93a8NKqcMnEHX/DeVouch?type=design&node-id=2007-2633&mode=design

Agora (Optimism) REST API spec WIP :construction:

https://argoagora.notion.site/Agora-s-OP-API-Draft-Document-32b2bed3193841d4b272b5ab39167cbb

Gitcoin graphQL API

https://grants-stack-indexer-v2.gitcoin.co/

Giveth graphQL API

https://mainnet.serve.giveth.io/graphql

EAS Attestations graphql

https://optimism.easscan.org/graphql

divine-comedian commented 2 months ago

Keep JSON on the back-end and people can update the JSON at the particular endpoint - without releasing a version of the front-end we can keep the data updated.

We'll need to create the documentation for other parties to use the API.

lets use two different repos for FE and BE

If we need a screen that takes from 2 or more data sources we should build a unified API so the front-end can call one endpoint. (list view of projects)

on the project details page we make one direct call to the given data source API

caching layer - three data sources there should be some form of caching, if we come to the same page in 30 seconds we don't need to load all the data from the API, we have some of it stored in the FE cache, because there are personalized elements - show if user has already attested to a given project in list view. We define how often we reload the projects into the cache

divine-comedian commented 2 months ago

Unified API is considered its own service and should have its own epic