All Projects → m1guelpf → proof-of-kyc

m1guelpf / proof-of-kyc

Licence: MIT license
An NFT that proves you've gone through an identity verification process, powered by Stripe Identity.

Programming Languages

typescript
32286 projects
solidity
1140 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to proof-of-kyc

metaboss
The Metaplex NFT-standard Swiss Army Knife tool.
Stars: ✭ 575 (+637.18%)
Mutual labels:  nft
solana-nft-monitor
Monitor Solana NFT projects using Github Actions + flatgithub.com
Stars: ✭ 31 (-60.26%)
Mutual labels:  nft
carbon-footprint
Calculate your carbon footprint 🏭👣 from food, transport, purchases, fashion, electricity and digital activities like streaming, NFT or blockchain.
Stars: ✭ 59 (-24.36%)
Mutual labels:  nft
commerce-stripe
Stripe payment gateway for Craft Commerce
Stars: ✭ 21 (-73.08%)
Mutual labels:  stripe
fnd-docs
Foundation developer docs
Stars: ✭ 33 (-57.69%)
Mutual labels:  nft
snes-punks
Real world example of a full-stack Ethereum web app for supporting minting of NFT's from a collection using Tailwind, NextJS an nes.css. Contracts are written in Solidity with the help of HardHat.
Stars: ✭ 43 (-44.87%)
Mutual labels:  nft
teini
👶 Teini (tiny, [ˈtīnē]) is an extremely small webshop leveraging awesome and free solutions like Github and Vercel.
Stars: ✭ 148 (+89.74%)
Mutual labels:  stripe
Artion-Client
Client app for Artion, a global NFT marketplace on Fantom Opera.
Stars: ✭ 71 (-8.97%)
Mutual labels:  nft
NFT-Dapp-Boilerplate
A highly scalable NFT and DEFI boilerplate with pre added web3 and different wallets with a focus on performance and best practices
Stars: ✭ 51 (-34.62%)
Mutual labels:  nft
commercejs-chopchop-demo
A Commerce.js starter kit for Next.js. A beautifully designed elegantly developed, end to end commerce experience for developers and agencies. Pre-integrated with Stripe. One-click deploy to Vercel.
Stars: ✭ 129 (+65.38%)
Mutual labels:  stripe
pinax-stripe-light
a payments Django app for Stripe
Stars: ✭ 670 (+758.97%)
Mutual labels:  stripe
saving-card-after-payment
Learn how to save a card for later reuse after making a payment
Stars: ✭ 78 (+0%)
Mutual labels:  stripe
nextjs-woocommerce-restapi
A React WooCommerce Project Example With REST API
Stars: ✭ 168 (+115.38%)
Mutual labels:  stripe
laravel-stripe
No description or website provided.
Stars: ✭ 14 (-82.05%)
Mutual labels:  stripe
Simple-Game-ERC-721-Token-Template
🔮 Very Simple ERC-721 Smart Contract Template to create your own ERC-721 Tokens on the Ethereum Blockchain, with many customizable Options 🔮
Stars: ✭ 83 (+6.41%)
Mutual labels:  nft
stripe-graphql
[WIP] 🚧🚧🚧 😎 Community-driven Stripe GraphQL API with superpowers.
Stars: ✭ 53 (-32.05%)
Mutual labels:  stripe
Artion-Server
Artion API Server
Stars: ✭ 26 (-66.67%)
Mutual labels:  nft
dungeons-and-dragons-nft
#chainlink #nft
Stars: ✭ 583 (+647.44%)
Mutual labels:  nft
nft-collection-generator
Generates images and metadata for a collection of NFTs.
Stars: ✭ 77 (-1.28%)
Mutual labels:  nft
awesome-defi
Curated list of awesome DeFi protocols, dapps, wallets and other resources
Stars: ✭ 36 (-53.85%)
Mutual labels:  nft

Proof of KYC

An NFT that proves you've gone through a KYC process, while keeping your personal information as private as possible.

This project uses Stripe Identity to issue non-transferrable "Proof of KYC" NFTs that could be used as a Sybil-resistance measure. While the system is designed to be as privacy-friendly as possible (redacting the users' information as soon as Stripe lets us), a bad agent could still use the system to dox users1.

How it works

Stripe recently announced their identity solution, which allows apps to enforce KYC (Know Your Customer) procedures or verify that their users have real identities in a much more effective way than other methods (like phone verification).

This application uses the Stripe Identity APIs to "link" your wallet with a government-issued form of identification (driver's license, passport or ID card) which is then verified. Upon verification, the app immediately redacts all personal information from Stripe's databases, leaving only a record of wallet addresses and wether the linked document was determined to be valid or not.

If the document is considered valid, the application then uses a trusted wallet to sign a message, which the user can then submit to the Proof of KYC smart contract to receive a non-transferrable NFT, which proves that they've gone through this verification.

Deployment

To deploy this project you need access to Stripe Identity, which is currently in a private beta stage.

Firstly, you'll need to deploy the ProofOfKYC contract to a chain. You can do this by running yarn hardhat run scripts/deploy.ts after setting up the corresponding .env variables (DEPLOYER_PRIVKEY, WALLET_PRIVKEY, ETHERSCAN_API_KEY, and NEXT_PUBLIC_INFURA_ID). The script should take care of granting the wallet protected by WALLET_PRIVKEY the minter role.

Then, you can deploy the project to Vercel. You'll need to set SESSION_KEY to a random 32 character string, NEXT_PUBLIC_INFURA_ID to your Infura ID, NEXT_PUBLIC_CONTRACT_ADDRESS to the address of your newly-deployed contract, and NEXT_PUBLIC_STRIPE_KEY, STRIPE_SECRET & STRIPE_WEBHOOK_SECRET to your corresponding Stripe credentials.

Finally, you'll need to create a Stripe webhook for the identity.verification_session.verified, and point it to [your_URI]/api/webhooks.

Risks

The system proposed here isn't decentralized, since it relies on both Stripe carrying out the verification and redacting personal details afterwards and the deployer, which as mentioned could update the code to remove the bit that redacts your details, or configure additional webhooks that save the users' data to a external database. Vercel can mitigate part of this risk by linking deployments with commits and allowing you to see the source of the currently deployed code, but this still doesn't protect you against additional webhooks, and it adds an additional trust vector on Vercel.

There's also no checks in place to prevent someone minting unlimited NFTs from a single identity! I'm working to figure out the best way of doing this without leaking any user info.

The contract has also not been audited.

License

This project is open-sourced software licensed under the MIT license. See the License file for more information.

Footnotes

  1. More details on how bad agents could dox users as a comment on the webhooks.ts file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].