P2P-Lending-Borrowing
About The Project
A decentralized, smart contract based platform for p2p-lending of any existing ERC20 Token on the Ethereum Blockchain with ETH as colletral. The open ecosystem of the p2p-lending platform has the potential to offer cheaper lending contracts than traditional centralized institutions, while also enabling people all over the world to profit from a fair and transparent portfolio of products.
Built With
Prerequisites
These are the requisites you need, in order to use the software and instructions, on how to install them.
NodeJS and NPM
curl -sL https://deb.nodesource.com/setup_12.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install nodejs
Ganache
Download it form this link https://truffleframework.com/ganache
Truffle
npm install truffle -g
Installation
Clone the repo
git clone <Current_URL>
Run Ganache on port 8545
Ganache -> Settings -> Server -> Port Number -> 8545
Go to smart_contract folder and Install dependencies
npm install
Compile Smart Contracts
truffle compile
Deploy Smart Contracts to local blockchain
npm run migrate:dev
Create Test Cases
Important : Run this only if you want to create new test cases.
Example :
truffle create test AskRequest
Run Test
npm run test
Backend
Update Smart Contract address in config/development.js (get this from the ganache gui or console output)
config.smartContractAddress.p2pToken
config.smartContractAddress.p2pPlatform
Go to api folder and Install dependencies
sudo npm install
Create Log folder
sudo mkdir -p /var/log/defi/
sudo chmod 777 -R /var/log/defi
Start backend
npm run start
Point to Testnets
Change below configuration in config/development.js
config.blockchain.url = {INFURA_URL} config.blockchain.chainId = {CHAIN_ID} (Ropsten - 3)
API Document
https://www.getpostman.com/collections/bab6a07226f6791e2eda
Deploying the Smart contract (Manually)
- P2PToken.sol
- RequestFactory.sol
- Governance.sol
- P2PPlatform.sol
Understand the Smart contract
- Create Ask Request with collateral as ETH
- Get created requests from API -> get Requests
- Give Token approval from Lender to above address (same amount as asked)
- Call Lend Function from Lender
- Transfer some extra token to asker so that he can payback
- Payback from lender, Colletral will come back
- Collect Collateral if not paid before deadline
- Cancel Request before Lender pay
- Change is Valid from upVote from Governance Contract
Deploy on Ropsten Network
HINT (Session 2) Deploy contract on ethereum ropsten network
- Set your Infura Key(https://infura.io/) and Mnemonic as below (Use your existing seed or create new and transfer some ether to it)
- Update "from" address in truffle-config.js which have funds
export INFURA_API_KEY="asdasd"
export MNEMONIC="asd asd ...."
Services
Block Crawler (Sample)
To capture all blockchain transaction
cd api
node script/blockCrawler.js
Upgradable Smart Contract Demo
Move to upgradable_smart_contract_demo folder.
Install Open Zepplelin Cli
npm install -g @openzeppelin/cli
oz --version