Coinpassport

Documentation

How to verify?

Before starting the verification process, here’s what you need:

The quality of the images captured affects success rates dramatically. Below are a few best practices to help ensure that your verification succeeds:

Can I get verified using a different method?

Coinpassport requires verifying using a passport and not other identity documents in order to ensure that each person can only verify one account. Other government identity documents are not accepted since we cannot link your identity between a document like a driver's license and a passport, potentially allowing one person to verify multiple accounts.

Who has access to my verification data?

Both Coinpassport and Stripe will have access to the information that you submit through the verification flow. We rely on Stripe to help store your verification data. Stripe uses access controls and security standards that are at least as stringent as those used to handle their own KYC and payments compliance data.

Learn more about how Stripe handles and stores your data.

After becoming verified, you will have the option to revoke your verification and/or redact your personal data from Stripe.

Implementation Notes

Overlapping on passport renewal

Coinpassport sets an account to be active until the passport expiration date but passports are renewed months in advance from their expiration. This opens up a timeframe when an individual would be able to have more than one active account. At the extreme end, someone might choose to renew their passport as soon as possible, in order to maintain multiple active accounts.

This is a known limitation of this type of passport verification. Coinpassport does not claim to be an absolute solution to Proof of Personhood but wishes to serve as an example to governments around the world, that they should implement their own systems of similar character but greater integration into their internal identity databases. Being such an example, Coinpassport wishes to project values of transparency, anonymity, and freedom to any kind of government-based blockchain identity verification service.

Developer Information

Contract Specification

Coinpassport exposes functions for building applications to use verified accounts.

  interface Verification {
    // Check if an address is currently verified
    function addressActive(address toCheck) external view returns (bool);
    // Return the expiration timestamp of an address (0 if not verified)
    function addressExpiration(address toCheck) external view returns (uint);
    // Return the unique hash for the account's passport
    function addressIdHash(address toCheck) external view returns(bytes32);

    // The following functions are for accessing optionally published personal data:
    function isOver18(address toCheck) external view returns (bool);
    function isOver21(address toCheck) external view returns (bool);
    // Convert a country code integer to a ISO 3166-1 alpha-2 country code with JavaScript:
    // countryCodeStr = String.fromCharCode(countryCodeInt >> 16)
    //   + String.fromCharCode(countryCodeInt - ((countryCodeInt >> 16) << 16));
    function getCountryCode(address toCheck) external view returns (uint);
  }
      

Contract Addresses