/verifications

đź“ś "Coinbase Verifications" is a set of Coinbase-verified onchain attestations that enable access to apps and other onchain benefits.

Primary LanguageSolidityMIT LicenseMIT

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.