Hackathon: Ctrl Alt Debt
Team Name: Nubz_squad_
Result: Top 25 team
Kyc in today's generation is the most important document for verification & authentication of user's identity. Bkyc gives users full control of kycs. By providing software as a service Bkyc simplifies onboarding and verification of user kyc using the ethereum blockchain. Kyc is encrypted using AES-256 symmetric encryption and stored on IPFS (distributed Storage System). The cipher key is not stored on the server and is sent to the client due to which there cannot be leakage of kyc data of the users.
- Docker
- Node v > 12.13.0 (LTS)
- Google Chrome with Metamask (wallet to connect to blockchain)
- It is recommended to use Google Chrome while connecting to metamask (Stable). Other browsers (Especially Firefox) throws error while connecting to metamask.
We have made developers life easier by adding docker to our project. With the help of a single command user can build and run our entire project hazzel free.
git clone https://github.com/Hrushi20/BKyc.git
npm install -g truffle
cd truffle
truffle build
docker-compose up -d
The above command downloads the required packages and starts all the containers in the background. After install all the dependencies the resulting log is displayed.
Creating ganache ... done
Creating mongo ... done
Creating mongo-express ... done
Creating frontend ... done
Creating ipfs ... done
Creating backend ... done
The project is up and running.
NOTE: This may take a few minutes as it builds all dependency containers of the system.
cd truffle
truffle deploy
After deploying the smart contract open the website http://localhost:3000
To store the data on the ethereum blockchain, we need ethers. We are using ganache as our local blockchain and metamask as wallet to connect to ganache. Ganache provides 100 ethers each for 10 accounts. We can use ganache ethers to pay for storing the data on local blockchain.
docker logs ganache
On scrolling you can find the private keys for your local blockchain.
NOTE: The private keys may not be the same as displayed above
Metamask wallet is used to connect to the ganache. Install metamask web extension for your browser. Create a metamask account, and you are good to go.
Follow the steps in the below url to connect metamask with ganache.
The RPC URL used in this project is http://127.0.0.1:7545
Add this RPC URL in metamask.
https://trufflesuite.com/docs/truffle/getting-started/truffle-with-metamask.html
Port No. | Application |
---|---|
3000 | Frontend |
8080 | Backend |
7545 | Ganache |
5001 | Ipfs |
27017 | Mongodb |
8081 | mongo-express |
The entire working of the application is available on YouTube. https://youtu.be/mmYmcLOrsnY
Below video helps setup metamask in browser using ganache. Using npm ganache in below video because Ganache docker image is not supported on Arm chips.
https://drive.google.com/file/d/1oZ4xTXW2SUBpeMAU8HD0DDAQzXRNZhXa/view?usp=sharin
Ipfs desktop can be used to view the encrypted kyc data on ipfs network. Connect the ipfs application to the software.
Although our solution is efficient, there's a lot more we wish to incorporate to expand bKYC, this includes:
- A robust and even more secure system
- A much more elegant UI/UX
- Improved AI models that aims to automate the validation process hence removing the human intervention in the process
- Updating user Kyc data on the blockchain.