This project aims to create a smart cryptocurrency bank that allows users to deposit and withdraw any ERC20 tokens. The contract will interact with Compound to allow users who deposit tokens to the smart contract to earn interest.
Hi Francis – I am Kuldeep, a mentor who is assisting with the grading. Congratulations, your Final Project passed! We'll be approving it on the course itself in a week or two, but here's your feedback in the meanwhile:
Frontend comments:
Overall, Front-end is simple to use and understand. ERC20 token part can be a bit organized using listing for ERC20 token names.
It is deployed on Rinkeby Testnet.
Vercel has been used for frontend deployment. Github pages could have been used too but vercel makes it easy anyways.
Changing the network is not handled and crashed the UI if the user tries to make a transaction.
Testing comments:
I liked the way tests are arranged and handled. Maybe using describe() can make it more structured such as all deposits test cases together, the same goes for all withdraw test cases.
Coverage is good. All possible scenarios are tested.
Bonus for using mainnet fork for test cases. Another way could have been using Mock contracts for Compound and Uniswap. Kudos to you for learning how to fork and use that for testing. Awesome!
Contract Comments:
Overall, Smart Contract is the hero of this project. Very well written, deployed, and verified. Loved it. Awesome work man!
Inter-Contract Execution: This is just awesome work especially using Compound protocol and Uniswap. Interfaces and inheritance: Safe to use openzeppelin's contracts and it's been done properly.
Check-effect-Interaction: Very well used. Awesome. Re-entrancy guard is used but it's always to go with check-effect-interaction pattern if reentrancy is possible. Push-over-pull: This makes more sense when there is a lottery contract or bidding contract.
Using Openzeppelin's Address library for checking if an address is contract or not is a good idea. Please have a look at the implementation code in the library as it might help in understanding the concept better.
Overall:
Using Compound and Uniswap makes the project awesome. It is a working DeFi dapp in itself. Awesome work on understanding how these protocols work, good integration, and good use of solidity constructs to make it secure.
I would love to see ERC20 deposit/withdraw using a list of tokens instead of copying the address for a better user experience. Deposit/Withdraw can be given as a dropdown option too instead of separate segments.
I am really impressed with the project. This shows that the project developer has a good understanding of Solidity constructs and Defi protocols. The front-end is where a bit of improvement can be done but it's already above the mark for sure. Would love to see you working on hackathon projects and making awesome products there.
Hope you enjoyed the learning journey so far and can continue building on this.
Hi @kuldeep23907 thank you very much for your feedback, really gave me a confidence boost to continue my journey to become a blockchain developer and build great things. Appreciate the detailed feedback.
Hi Francis – I am Kuldeep, a mentor who is assisting with the grading. Congratulations, your Final Project passed! We'll be approving it on the course itself in a week or two, but here's your feedback in the meanwhile:
Frontend comments:
Testing comments:
describe()
can make it more structured such as all deposits test cases together, the same goes for all withdraw test cases.Contract Comments:
Overall:
Hope you enjoyed the learning journey so far and can continue building on this.