Code Monkey home page Code Monkey logo

verifications's Introduction

Coinbase Verifications

"Coinbase Verifications" is a set of Coinbase-verified onchain attestations that enable access to apps and other onchain benefits. Our implementation is built to further the broader onchain ecosystem by leveraging Ethereum Attestation Service ("EAS"), an open-source public good that is included as a predeploy in the OP Stack.

Onchain is the next online. This repository is intended for builders looking to integrate our attestations.

Important

By using the "Coinbase Verifications" service and accessing any attestation that Coinbase has provided in respect of a Coinbase customer through the Ethereum Attestation Service, you acknowledge and understand that this attestation is for informational purposes only and should not be relied upon by you or any third party for any legal, compliance, or contractual purpose. Any attestation provided by Coinbase using the Ethereum Attestation Service represents the status of the relevant individual’s Coinbase account as of the time of issuance, and subsequent changes to the status of such individual’s Coinbase account that result in such attestation no longer being true may not be reflected immediately in the Ethereum Attestation Service. Therefore, Coinbase does not represent, warrant or guarantee that the information contained in any attestation or represented thereby is complete, accurate, or current. Additionally, you should be aware that the specific processes that Coinbase uses to verify the identities of its customers may differ by jurisdiction. Furthermore, you agree that Coinbase will not be liable for any damages or loss caused by your use of the attestation.

Contracts

Goerli is no longer supported.

Base Sepolia (Development)

Contract Description Address (on Base)
EAS Stores, and manages attestations. See EAS' docs for more info. 0x4200000000000000000000000000000000000021 (Predeploy)
Schema Registry (EAS) Stores schema definitions (templates for attestations). See EAS' docs for more info. 0x4200000000000000000000000000000000000020 (Predeploy)
Coinbase Indexer All Coinbase attestations will be indexed in this contract.

You can query for the latest attestation ID by providing the attestation's recipient (address), and target schema ID (bytes32). See below for details on the full interface.

The actual attestation, and its data can be retrieved directly from EAS using the returned ID.
0xd147a19c3B085Fb9B0c15D2EAAFC6CB086ea849B
Coinbase Attester All Coinbase attestations will be issued from this contract / address.

You can use the address of this contract for verifying the origin of the attestation, though, verifying the schema ID should be sufficient in most cases as our schemas are protected such that only Coinbase permitted attesters may use it.
0xB5644397a9733f86Cacd928478B29b4cD6041C45
Coinbase Resolver A custom EAS schema resolver contract used by permissioned Coinbase schemas to restrict schema usage to permitted attesters, and to index attestations to the indexer on attest. 0x31c04B28E0Dc9909616357bD713De179408F48B0

Base Mainnet (Production)

See previous section for description.

Contract Address (on Base)
EAS 0x4200000000000000000000000000000000000021 (Predeploy)
Schema Registry (EAS) 0x4200000000000000000000000000000000000020 (Predeploy)
Coinbase Indexer 0x2c7eE1E5f416dfF40054c27A62f7B357C4E8619C
Coinbase Attester 0x357458739F90461b99789350868CD7CF330Dd7EE
Coinbase Resolver 0xD867CbEd445c37b0F95Cc956fe6B539BdEf7F32f

EAS Schemas

Base Sepolia (Development)

Schema Description ID
Verified Account An attestation type that can be claimed by a Coinbase user with a valid Coinbase trading account. The criteria / definition for this will vary across jurisdictions.

The attestation includes a boolean field that is always set to true.

(Example)
0x2f34...5a69
Verified Country An attestation type that can be claimed by a Coinbase user that includes the user’s verified country of residence on Coinbase.

The attestation includes a string field that is set to the customer’s residing country code in ISO 3166-1 alpha-2 format.

(Example)
0xef54...4028
Verified Coinbase One An attestation type that can be claimed by a Coinbase user with an active Coinbase One membership.

The attestation includes a boolean field that is always set to true.

(Example)
0xef8a...1e8c

Base Mainnet (Production)

See previous section for description.

Schema ID
Verified Account 0xf8b05c79f090979bf4a80270aba232dff11a10d9ca55c4f88de95317970f0de9
Verified Country 0x1801901fabd0e6189356b4fb52bb0ab855276d84f7ec140839fbd1f6801ca065
Verified Coinbase One 0x254bd1b63e0591fefa66818ca054c78627306f253f86be6023725a67ee6bf9f4

Build with Coinbase Verifications

Looking to build with Coinbase Verifications? Get in touch with us!

Base Contracts

To get started with our base contracts using Foundry:

forge install coinbase/verifications
Contract Description
src/abstracts/AttestationAccessControl.sol An abstract contract for managing access to a contract's functions using attestations. It is also an example of how you can use our indexer, IAttestationIndexer.
src/interfaces/IAttestationIndexer.sol The interface implemented by the Coinbase Indexer. You can use this to ease making contract-to-contract calls to our indexer or to generate an ABI for interacting with our indexer offchain.
src/libraries/AttestationErrors.sol Common errors which may be returned from our attestation verifier library.
src/libraries/AttestationVerifier.sol A simple library for verifying any EAS attestation.
src/libraries/Predeploys.sol Common predeploy addresses on OP Stack, e.g. EAS, Schema Registry.

Examples

Coming soon.

verifications's People

Contributors

cbfyi avatar jessepollak avatar mdehoog avatar qiwu7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

verifications's Issues

Sybil Resistance

From my exploration of this, it allows me to verify multiple accounts as belonging to my single Coinbase account. This doesn't help me implement apps that use 'one person, one vote,' quadratic voting, or equal disbursement of tokens to each person like a UBI.

Are there any plans to implement something like a Semaphore group that allows a person to join only once but can be used to anonymously submit votes?

I built a lottery creation app using my coinpassport.net app as Sybil resistance for creating lotteries that only allow each person to buy a single ticket but very few people are verified on Coinpassport and I would love to be able to deploy it using these verifications on Base.

Coinpassport produces a salted hash of the person's passport number and country of citizenship, which works but it's not anywhere as good as a ZK group. I never have bothered to make that for Coinpassport since it doesn't really matter to join a ZK group if there's only 20 people in it since that doesn't provide much anonymity. Please build this or hire me to build it. I want to use dApps that verify individual humans.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.