Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

As a Gitcoin Grants user, I would like to be able to verify my identity on BrightID, so that I can contribute to Sybil Resistence of the application, and be assured that Gitcoin Grants is not sybil attackable. #7125

Closed
owocki opened this issue Jul 21, 2020 · 36 comments

Comments

@owocki
Copy link
Contributor

owocki commented Jul 21, 2020

User Story

As a Gitcoin Grants user, I would like to be able to verify my identity on BrightID, so that I can contribute to Sybil Resistence of the application, and be assured that Gitcoin Grants is not sybil attackable.

Why Is this Needed

Summary:
QF is sybil attackable
BrightID is a solution to that.

Description

Type:

Current Behavior

Only github, SMS auth

Expected Behavior

User is prompted for BrightID Auth when they contribute
A page that shows all the diff levels of verification I can go through (SMS, Github, Twitter, Idena, etc) and shows my sybil score.

Definition of Done

See Above

Data Requirements

comment: # (How will we measure the success of this feature? What kind of tracking is needed for this feature (clicks, impressions, flag)?)
How many users have BrightID? What is their BrightID Score?

Additional Information

Need to confirmw ith Bright ID whether we do this with their SDK or app.

@adamstallard
Copy link

Some UX thoughts.

To make the experience a joy rather than a hassle, we need to prep users to find BrightID-ready communities so they can be verified by the time they're ready to check out. I'm not sure how much of this community finding can be encouraged through the gitcoin UI, but it could be a natural place. Off the top of my head, project pages could display a link to a community gathering spot where BrightID connections can happen, and we could have a one-time, dismissable info message mentioning that BrightID verification can mean extra matching--find out how, so that people can start thinking about it as early as possible. That could lead to an instruction page with lots of tips on how to get verified and links to communities.

We could also provide an integrated gitcoin gathering space for meeting other contributors and making connections towards verification.

@adamstallard
Copy link

The API for BrightID has been improving a lot. The docs are not caught up, but I'm working on it. Expect some nice API docs and guides at api.brightid.org soon.

Here is a somewhat outdated guide that outlines integration with BrightID and links to another somewhat outdated API spec We still support API v4, but v5 is better, so for gitcoin integration we'll use that.

We may end up with the start of a python SDK that comes out of this integration 🎉 . There is the potential to port the entire capability set of the reference mobile app to a web SDK. I think this is ideal and should be our eventual goal, because then no one has to leave the comfort of Gitcoin, but creating the SDK including all the web components, plus figuring out the best way to manage key pairs for users, and doing that in time to actually integrate seems very optimistic for 6-7 weeks given our (BrightID + Gitcoin) resources.

@adamstallard
Copy link

What we will need specifically from the API/SDK/BrightID nodes is:

  1. A way to link users (link their BrightID to an ethereum address, so we can query their verification status using that address). If you look at https://ethereum.brightid.org , you will see a way that was created by BurnSignal. They are also working on a way to have that experience integrated as a web plugin / component. So we can use that.

  2. Something (server-side or smart contract, but in our case, since gitcoin is already centralized, server-side is easiest) to check the verification. This is as easy as hitting the GET /verifications/ethereum/<eth address> endpoint.

@owocki
Copy link
Contributor Author

owocki commented Jul 28, 2020

@owocki
Copy link
Contributor Author

owocki commented Jul 29, 2020

ok @adamstallard @PixelantDesign @willsputra here is the lo fi prototype i promised

Screen Shot 2020-07-29 at 4 47 31 PM

basically i am proposing adding a /trust tab to the user profile, wherein users can connect various external services (brightID, twitter, SMS, etc) and for doing certain actions on the site (send a tip, do a bounty, etc) to their gitcoin profile to confer more trust. we can algorithmically come up with a trust score (for now very simply, +1 for each service/action, and that can translate to low, medium, high on the UI)

then on the grants checkout flow. if you are low trust youll get a little warning that says "warning, you are currently "low" trust score. click here(link to your profile trust tab) to increase your trust score + matching multipler"

we can then build in brightID + other services over time into this connection flow

feedback?

@adamstallard
Copy link

adamstallard commented Jul 29, 2020 via email

@owocki
Copy link
Contributor Author

owocki commented Aug 6, 2020

call notes:

  • put everyone through BrightID for the bonus
  • need a mock for the insterstitial ; @PixelantDesign will do that

@owocki
Copy link
Contributor Author

owocki commented Aug 6, 2020

Ed will work on this from a scopelift perspective. Will sidebar with Adam on the tech stuff.

@owocki
Copy link
Contributor Author

owocki commented Aug 6, 2020

kevin/adam to sidebar on marketing for this

@adamstallard
Copy link

adamstallard commented Aug 6, 2020

call notes:

  • put everyone through BrightID for the bonus
  • need a mock for the insterstitial ; @PixelantDesign will do that

One other important note by @UBIpromoter is that we can tell people at checkout that they still have 2(?) weeks to get verified after they've checked out to receive the brightid bonus match for their chosen projects.

There are two ways to know if you've been verified for gitcoin specifically--one is from the apps tab on the brightid mobile app (it clearly shows "not verified for this app" next to the app if you're not), the second is on the gitcoin website--it's easy to make a BrightID api call to check a user's verification status and display it.

@PixelantDesign
Copy link
Contributor

@adamstallard do you have the list of steps? How many people are required to be considered as verified? I'm showing 3, will is showing 5, we are both unverified.

@adamstallard
Copy link

@adamstallard do you have the list of steps? How many people are required to be considered as verified? I'm showing 3, will is showing 5, we are both unverified.

We're working on finding a high-confidence method for getting verified. Our best so far is: find a community, make connections, if not yet verified find another community, make connections.

@willsputra
Copy link
Contributor

some design drafts cc @PixelantDesign

  1. Info on Grants Cart
    cart

  2. Trust Score tab on profile + BrightID verification step
    trustscore

additional stuff that might be needed:

  • an email to announce Trust Score feature to users
  • an email to confirm a user's registration to a community call. it should have the Zoom link, date/time, and maybe an "add to calendar" button
  • some way to inform users that they can verify within X weeks after funding a grant and still get a match (maybe in the grants thank you email?)

lemme know if I missed anything!

@PixelantDesign
Copy link
Contributor

Awesome! Agree. ....could be something like this:

Promo on Gitcoin Grants homepage > take users to do bright ID up front > once verified >get an email> checkout.

Hmm, wee really need to do bright ID upfront, even before then grants round starts if possible.

@adamstallard
Copy link

@willsputra

The "additional stuff" you outlined sounds good.

There is one step I don't see: linking BrightID to Gitcoin. The way it works is user clicks somewhere (if viewing the site on mobile) or scans a QR with their phone (if viewing the site on desktop) and that opens up the BrightID app and asks them if they want to link their account. This step can be done any time after downloading the app.

There's a visual cue that would be helpful. We can show a user whether or not they're verified (by BrightID). I see there's a blue checkmark. There could also be an orange checkmark (or a BrightID logo).

I have questions about the screens that maybe @owocki can answer.

  1. Is SMS verification going to carry over from the previous round? I wrote in this comment about the challenges with stacking different kinds of verifications.

  2. What other options might we have for enjoyable community-building + verification besides a catch-all zoom call? Meeting random gitcoiners that way could be nice--as long as those calls don't get too large; the group connecting feature works well for up to 30 users. Meeting the team / community of a project you're donating to can be rewarding beyond just getting verified. Meet + greet + get verified is going to be a nice outcome. I just noticed that if you follow someone there is a "chat" option. The upcoming release of BrightID has a "share" button that creates a message like "Let's connect on BrightID" with a clickable link that makes a connection. Do people get an easy to spot alert if someone sends them a chat message?

@owocki
Copy link
Contributor Author

owocki commented Aug 17, 2020

These look really good! I dont have any immediate comments rn; but will fish around for more comments.

I agree we need these.

  • an email to announce Trust Score feature to users
  • an email to confirm a user's registration to a community call. it should have the Zoom link, date/time, and maybe an "add to calendar" button
  • some way to inform users that they can verify within X weeks after funding a grant and still get a match (maybe in the grants thank you email?)

the first and third email are most important i think.

@owocki
Copy link
Contributor Author

owocki commented Aug 17, 2020

keep an eye on twitter ppl! https://twitter.com/owocki/status/1295419437806313472

@owocki
Copy link
Contributor Author

owocki commented Aug 17, 2020

@adamstallard
Copy link

adamstallard commented Aug 17, 2020

So @owocki for round 7, are we stacking bonuses? So you get the maximum bonus if you do both SMS and BrightID? This works, by the way, from the standpoint of punishing sybils because it's AND and not OR to get the max bonus.

@adamstallard
Copy link

adamstallard commented Aug 17, 2020

For our current meet calls, we have registration pages. (Check out one of the links on https://www.brightid.org/meet .) They will email you reminders and add it to a calendar. It's pretty ok.

@owocki
Copy link
Contributor Author

owocki commented Aug 17, 2020 via email

@owocki
Copy link
Contributor Author

owocki commented Aug 17, 2020

So @owocki for round 7, are we stacking bonuses? So you get the maximum bonus if you do both SMS and BrightID? This works, by the way, from the standpoint of punishing sybils because it's AND and not OR to get the max bonus.

i need to think this through:

@frankchen07 can i just add a 'bonus multipler' on the contribution object, that you can feed into your grants/clr.py code?

@willsputra
Copy link
Contributor

There is one step I don't see: linking BrightID to Gitcoin. The way it works is user clicks somewhere (if viewing the site on mobile) or scans a QR with their phone (if viewing the site on desktop) and that opens up the BrightID app and asks them if they want to link their account. This step can be done any time after downloading the app.

@adamstallard noted! will add this.

the first and third email are most important i think.

@owocki workin on it :)

@willsputra
Copy link
Contributor

some email drafts:

an email to announce Trust Score feature to users

trust score intro

some way to inform users that they can verify within X weeks after funding a grant and still get a match (maybe in the grants thank you email?)

grants thank you email:
contribution success email

@owocki
Copy link
Contributor Author

owocki commented Aug 18, 2020 via email

@apbendi
Copy link
Contributor

apbendi commented Aug 18, 2020

Hey @owocki @willsputra @PixelantDesign, do we want the "Trust Score" tab to be visible for users viewing someone else's profile, or only for your own profile?

@owocki
Copy link
Contributor Author

owocki commented Aug 18, 2020

just your own profile for now pls

@PixelantDesign
Copy link
Contributor

Here are the flows as we understand it from a product perspective - does this seem accurate to everyone?
Orange boxes are what we are missing on the design side.
Anything else we aren't thinking of?

We do need more clarification on the steps and how many users are required to be considered verified.

Screen Shot 2020-08-19 at 10 48 50 AM

@owocki
Copy link
Contributor Author

owocki commented Aug 19, 2020

looks right to me; ill let @adamstallard comment on the "how many users required" bit

@adamstallard
Copy link

Here are the flows as we understand it from a product perspective - does this seem accurate to everyone?
Orange boxes are what we are missing on the design side.
Anything else we aren't thinking of?

We do need more clarification on the steps and how many users are required to be considered verified.

Screen Shot 2020-08-19 at 10 48 50 AM

We can check to see if they linked BrightID (@wildmolasses and @apbendi know how to check this). If they already have linked their BrightID, we shouldn't send them back to the screen that asks them to download BrightID.

To me, the ideal experience for being verified will be

  1. Find a community for a project you're donating to that has a meeting place for making connections.
    a. Go there and make connections
  2. If still not verified go back to step 1. with a different community, or come to general BrightID "meet" call (see https://www.brightid.org/meet -- we will add more of these as needed)

We could skip the making connections with project communities part, but to me it's a side-benefit of BrightID verification that you get to meet other people interested in the same projects / causes.

It could be another side benefit if we (Gitcoin) offer to set up regular meets for any project that wants their communities to get to know each other.

What do you think? I'm trying to think of ways to make Gitcoin more social, because this helps BrightID verification, and helps it be more integrated. I think everyone wants that in future rounds, so you won't have to install a separate mobile app--the socialization required can happen from Gitcoin. There's also the follow feature which includes a link to start a chat. Did you know you can connect in BrightID by sharing something in a chat? This works for individual or group chats up to 30 people. That could be another integration point.

@owocki
Copy link
Contributor Author

owocki commented Aug 21, 2020

OK so here is my proposal after our convo this week

lets change TrustScore to TrustBonus, and just say that

  • SMS verification - 5% bonus
  • Twitter verification - 5% bonus
  • BrightID verification 25% bonus

does that work? this collapses the trustcore and the bonus into one metric, greatyly simplifyin gthings

@adamstallard
Copy link

OK so here is my proposal after our convo this week

lets change TrustScore to TrustBonus, and just say that

  • SMS verification - 5% bonus
  • Twitter verification - 5% bonus
  • BrightID verification 25% bonus

does that work? this collapses the trustcore and the bonus into one metric, greatyly simplifyin gthings

I really like the sound of TrustBonus.

@UBIpromoter
Copy link

Love this @owocki.
Nice simplification and naming.

@PixelantDesign
Copy link
Contributor

@apbendi here is the banner to get users to increase trust bonus.

https://www.figma.com/file/GLvOGLbovtU8scAnIHochM/Grants-Round-7?node-id=1%3A2

Screen Shot 2020-09-08 at 12 59 49 PM

@frankchen07
Copy link
Contributor

what kind of estimate should we provide with the +x% amount? I was thinking of running some scenarios tomorrow to see the effects on average, but it really depends on 3-4 variables. It'll be a bit difficult to control.

I was thinking the average of differences of all clr rewards by grants between all unverified and all verified by brightID, which would give us the biggest differences

@owocki
Copy link
Contributor Author

owocki commented Sep 9, 2020

what kind of estimate should we provide with the +x% amount?

depends on the computational complexity of providing the estimate on the fly. i think maybe just +25% if we want to keep it simple.

did we ever build the code to pass through the trustscorebonus on the contribution object/profile objects? we could re-use that code path if so

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants