How does it work?
By hooking thetransfer and transferFrom functions of the ERC-20 contract into the Rules Engine with a policy that verifies the receiving wallet has completed the appropriate checks.
Let’s break that down further.
KYC is an off-chain process where the user verifies their identity by submitting government issued identification that matches a liveness selfcheck via webcam or phone. This process can also include email, phone, or address verification. Once completed, the wallet address that the user initiated the request with is stored onchain. When the token contract is called to transfer tokens it first checks this onchain KYC access level contract to make sure the receiver has completed sufficient KYC. If they haven’t, then the transaction will fail, preventing the non-KYC’d wallet from receiving the token.Implementation
Forte offers a fully integrated KYC and compliance solution that handles this entire flow for you. Learn more at https://docs.fortepayments.io.KYC data for the user is not actually stored onchain. Rather, the KYC all happens off-chain in a
secure system. That process then completes by pushing the related wallet address onchain with a
specific access level that you can use to build your rules around.

Martian Mining Demo
You can see this implementation in action on this demo site
Policy JSON
It’s critical that you add the rule to both the
transfer and transferFrom functions to ensure
the tokens cannot be received by non-KYC’d wallets.