Kimlic - KYC on Quorum Blockchain and Elixir. We utilize our experience and best practices to create a distributed and decentralized network for KYC operations for banks, exchanges, ICOs and every type of businesses with KYC/AML procedures.
There are 4 main parts of the system:
- Plain User - represented with a mobile app user;
- Attestation Party - a company represented in a Kimlic marketplace as a verification provider for documents. In the current version only Veriff is present;
- Relying Party - any business that requires KYC/AML procedure;
- Kimlic Core services - basic email and OTP verifier, also acts as an interface API for smart contract addresses.
Every party except Plain Users consists of a browser dashboard, elixir backend with REST API, blockchain node and a database. For the database, we have used PostgreSQL. All parties can be deployed to the environment of the choice - AWS, Azure, Digital Ocean or plain Linux. We have prepared dockerized and non-dockerized types of deployment and continuous integration with Ansible and Jenkins. As an orchestration tool, we have used Kubernetes. Backend development language was Elixir. Also, we have used the Phoenix framework for API layers and Erlang OTP for the multiprocess stateful environment. For browser, front ends we have used React. Mobile apps are native - Kotlin and Java for Android, Swift for iOS.
All documents inside the system go directly from user to Relying Parties. There is no centralized server which can store and submit a document on behalf of the user. The document should be verified by an Attestation Party, in our case Veriff service. All documents are hashed and stored into the blockchain. Hashes are non-reversible letters and numbers combination cryptographically converted from images and users data. Kimlic guarantees data consistency by comparing user’s photos and text information to hashes while sending them to Relying Parties. Such comparison gives a possibility to immediately compare documents on the second consumption and guarantee that the document has been verified previously.