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

Keybase proof integration for ENS names #1053

Open
brantlymillegan opened this issue Jan 20, 2021 · 13 comments
Open

Keybase proof integration for ENS names #1053

brantlymillegan opened this issue Jan 20, 2021 · 13 comments

Comments

@brantlymillegan
Copy link
Contributor

brantlymillegan commented Jan 20, 2021

Create and implement a plan to allow a user to prove ownership of an ENS name to Keybase, so that their ENS name can be listed on their Keybase profile page as something verified to be owned by the user.

Here is Keybase's documentation for doing this: https://book.keybase.io/guides/proof-integration-guide

ens keybase

You may come up with a better way to accomplish this, but one way could be to have the user put the cryptographic proof in an ENS text record, and then have Keybase look up the text record entry via an Ethereum gateway service like Infura.

You should share your plan with us first before implementing to ensure that it will be an acceptable fulfillment of the bounty.

To receive the bounty, the implementation will need to be accepted and working in Keybase.

Feel free to ask questions along the way.

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 500.0 DAI (500.0 USD @ $1.0/DAI) attached to it as part of the ensdomains fund.

@mul1sh
Copy link

mul1sh commented Jan 21, 2021

@brantlymillegan I don't think keybase will be too keen on implementing an ENS lookup via infura since the cryptographic proof they create has to be literally added & verified first in the 3rd party app and then in turn verified in keybase via another redirect URL. This is my understanding so far after going through the docs

So i think the main ENS app will need to be updated to support this, so that the proof creation and verification are done via some sort of api on the ENS side. What do you think of this?

@brantlymillegan
Copy link
Contributor Author

@mul1sh Thanks for taking this on! Your plan looks good to us, we're looking forward to seeing it implemented. Let us know if you need anything from us to make it happen.

mul1sh added a commit to mul1sh/ens-app that referenced this issue Feb 16, 2021
@brantlymillegan
Copy link
Contributor Author

Hey @mul1sh, just checking in, any update on this?

@mul1sh
Copy link

mul1sh commented Apr 10, 2021

@brantlymillegan I got the keybase integration kinda working locally with my ens domain like 3 weeks ago via an infura node but I've been sidetracked alot on my end by other stuff.

Anyway I've resumed testing again right now and i'll also liase with keybase team so that we test my current implementation together. So kindly give me till end of this coming week, by latest Friday 16th, i'll definitely have it working as required, with no more delays.

@brantlymillegan
Copy link
Contributor Author

@mul1sh you still working on this?

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 265 years, 1 month from now.
Please review their action plans below:

1) shekhirin has started work.

  1. Add io.keybase text record to src/constants/textRecords.json where users will put their Keybase proofs.
  2. Create a path for prefill_url where users will be redirected from Keybase to enter their Keybase signature hash.
  3. Hard one: create an endpoint for Keybase to verify the proof. It should return user's signatures from ENS in exact form described here https://book.keybase.io/guides/proof-integration-guide#a-new-endpoint-just-for-keybase-proof-checking-the-happy-path.
  4. Prepare Keybase config according to https://book.keybase.io/guides/proof-integration-guide#config guide and a PR to ENS repo with public/.well-known/keybase-proof-config.json file.

Also ENS team needs to prepare three types of logos and put them into public/ folder with small-black-logo.svg, full-color.logo.svg and small-white-logo.svg names correspondingly:

  1. A full-black monochrome SVG. Should look good at 16px square. Expand all texts and strokes to shapes.
  2. A full color SVG. Should look good at 32px square. Expand all texts and strokes to shapes.
  3. A full-white monochrome SVG. Should look good at 16px square. Expand all texts and strokes to shapes.

Learn more on the Gitcoin Issue Details page.

@shekhirin
Copy link

@brantlymillegan sounds good? If I understand correctly, third point will require us to have a simple API proxy which will resolve ENS domain to its Keybase proof record in the needed format through Infura or The Graph. I don't think React app would work for such case.

@brantlymillegan
Copy link
Contributor Author

right, could use Infura? not sure the best way to accomplish this

@shekhirin
Copy link

shekhirin commented Sep 29, 2021

I see you've already started doing API at https://metadata.ens.domains, maybe it's possible to introduce Keybase endpoint there? I see that work on that started in https://github.com/ensdomains/ens-metadata-service, I think I can contribute there, what do you think?

@brantlymillegan
Copy link
Contributor Author

I see you've already started doing API at https://metadata.ens.domains, maybe it's possible to introduce Keybase endpoint there? I see that work on that started in https://github.com/ensdomains/ens-metadata-service, I think I can contribute there, what do you think?

pinging metadata.ens.domains works great. if you think you can get this out the door, you can win the bounty!

@shekhirin
Copy link

shekhirin commented Sep 30, 2021

I made a draft of the Keybase config with ensdomains/ens-metadata-service#34 in mind

{
  "version": 1,
  "domain": "app.ens.domains",
  "display_name": "ENS – Ethereum Name Service",
  "description": "Open source blockchain-based naming protocol.",
  "contact": ["[email protected]"],

  "username": {
    "min": 1
  },

  "brand_color": "#5284FF",
  "logo": {
    "svg_black": "https://app.ens.domains/small-black-logo.svg",
    "svg_full": "https://app.ens.domains/full-color.logo.svg",
    "svg_white": "https://app.ens.domains/small-white-logo.svg"
  },

  "prefill_url": "https://app.ens.domains/name/{username}?io.keybase=%{kb_username}:%{sig_hash}",
  "profile_url": "https://app.ens.domains/name/{username}",
  "check_url": "https://metadata.ens.domains/mainnet/keybase/{username}",
  "check_path": ["signatures"]
}

, need to double-check prefill_url format with you @brantlymillegan. What do you think, is it a good idea to have a way to prefill text records for user to edit if there's enough permissions to edit them?

@shekhirin
Copy link

Hi @makoto, maybe you can answer my question? ☝️

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

No branches or pull requests

5 participants