How can a smart contract verify that the wallet has KYCed before executing the transfer of tokens, as KYC data are private in nature and it should not be sent to a smart contract? KYC being one example of private data, in general we are talking about leveraging "arguably" any private data in the web3 on-chain world.
Advance cryptographic technology like zero knowledge proof (zkp) can help solve this problem by producing complex mathematical computational proof which can not only be sent to (and verified by) smart contract but also does not reveal any private information about the user.
Marring zkp with Self sovereign identity (#ssi) (tech like decentralized identifier (#DID) and verifiable credentials (#VC)) brings "identity" to the zk stack making the entire system trust worthy and zk-based digital interaction more secure and seamless.
In this Demo Hypersign blockchain is used to whitelist a user's wallet in the service provider chain using IBC. The zk-verifier contract is deployed on Hypersign.id and the whitelistpool contract is on service provider chain (like wasmd in this example).
Read more here:
Workable Code:
#ssi #zkp #cosmos #blockchain #crosschain #identity #verifiablecredential #zeroknowledge #hypersign #ibc #kyc