mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
refactored code
This commit is contained in:
parent
e15d35de55
commit
45ab9219ba
|
@ -1,8 +1,107 @@
|
|||
pragma solidity ^0.7.0;
|
||||
|
||||
import { DSMath } from "../../common/math.sol";
|
||||
import { Basic } from "../../common/basic.sol";
|
||||
import {DSMath} from "../../common/math.sol";
|
||||
import {Basic} from "../../common/basic.sol";
|
||||
|
||||
import {TokenInterface} from "../../common/interfaces.sol";
|
||||
import {Stores} from "../../common/stores.sol";
|
||||
import {erc20StablecoinInterface, maticStablecoinInterface} from "./interface.sol";
|
||||
|
||||
abstract contract Helpers is DSMath, Basic {
|
||||
|
||||
address internal constant MAI = 0xa3Fa99A148fA48D14Ed51d610c367C61876997F1;
|
||||
|
||||
function getVaultId(address vaultAddress, uint256 setId)
|
||||
public
|
||||
returns (uint256 vaultId)
|
||||
{
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
vaultId = vault.createVault();
|
||||
setUint(setId, vaultId);
|
||||
}
|
||||
|
||||
function _destroyVault(
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
uint256 getId
|
||||
) public returns (uint256 _vaultId) {
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
uint256 _vaultId = getUint(getId, vaultId);
|
||||
vault.destroyVault(_vaultId);
|
||||
}
|
||||
|
||||
function _deposit(
|
||||
address token,
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
uint256 amt
|
||||
) public {
|
||||
bool isEth = token == maticAddr;
|
||||
|
||||
if (isEth) {
|
||||
maticStablecoinInterface vault = maticStablecoinInterface(
|
||||
vaultAddress
|
||||
);
|
||||
vault.depositCollateral{value: amt}(vaultId);
|
||||
} else {
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(
|
||||
vaultAddress
|
||||
);
|
||||
TokenInterface tokenContract = TokenInterface(token);
|
||||
approve(tokenContract, address(vault), amt);
|
||||
vault.depositCollateral(vaultId, amt);
|
||||
}
|
||||
}
|
||||
|
||||
function _withdraw(
|
||||
address token,
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
uint256 amt
|
||||
) public returns (uint256 initialBal, uint256 finalBal) {
|
||||
bool isEth = token == maticAddr;
|
||||
|
||||
if (isEth) {
|
||||
initialBal = address(this).balance;
|
||||
maticStablecoinInterface vault = maticStablecoinInterface(
|
||||
vaultAddress
|
||||
);
|
||||
|
||||
vault.withdrawCollateral(vaultId, amt);
|
||||
finalBal = address(this).balance;
|
||||
} else {
|
||||
TokenInterface tokenContract = TokenInterface(token);
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(
|
||||
vaultAddress
|
||||
);
|
||||
|
||||
initialBal = tokenContract.balanceOf(address(this));
|
||||
|
||||
approve(tokenContract, address(vault), amt);
|
||||
vault.withdrawCollateral(vaultId, amt);
|
||||
finalBal = tokenContract.balanceOf(address(this));
|
||||
}
|
||||
}
|
||||
|
||||
function _borrow(
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
uint256 amt
|
||||
) public {
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
vault.borrowToken(vaultId, amt);
|
||||
}
|
||||
|
||||
function _payback(
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
uint256 amt
|
||||
) public {
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
|
||||
TokenInterface tokenContract = TokenInterface(MAI);
|
||||
|
||||
approve(tokenContract, address(vault), amt);
|
||||
|
||||
vault.payBackToken(vaultId, amt);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,38 +1,30 @@
|
|||
pragma solidity ^0.7.0;
|
||||
|
||||
|
||||
/**
|
||||
* @title QiDAo.
|
||||
* @dev Lending & Borrowing.
|
||||
* TODO Update doc Strings
|
||||
*/
|
||||
|
||||
import "hardhat/console.sol";
|
||||
|
||||
import { TokenInterface } from "../../common/interfaces.sol";
|
||||
import { Stores } from "../../common/stores.sol";
|
||||
import { Helpers } from "./helpers.sol";
|
||||
import { Events } from "./events.sol";
|
||||
import { erc20StablecoinInterface, maticStablecoinInterface } from "./interface.sol";
|
||||
import {Stores} from "../../common/stores.sol";
|
||||
import {Helpers} from "./helpers.sol";
|
||||
import {Events} from "./events.sol";
|
||||
|
||||
abstract contract QiDaoResolver is Events, Helpers {
|
||||
|
||||
address constant internal MAI = 0xa3Fa99A148fA48D14Ed51d610c367C61876997F1;
|
||||
|
||||
/**
|
||||
* @dev Create a vault
|
||||
* @notice Create a vault on QiDao
|
||||
* @param vaultAddress The address of the vault smart contract for the token/asset
|
||||
* @param setId ID of the created vault.
|
||||
*/
|
||||
function createVault(address vaultAddress, uint256 setId) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
uint256 vaultId = vault.createVault();
|
||||
|
||||
setUint(setId, vaultId);
|
||||
|
||||
*/
|
||||
function createVault(address vaultAddress, uint256 setId)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
uint256 _vaultId = getVaultId(vaultAddress, setId);
|
||||
_eventName = "LogCreateVault(uint256, address)";
|
||||
_eventParam = abi.encode(vaultId, address(this));
|
||||
_eventParam = abi.encode(_vaultId, address(this));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -41,17 +33,21 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
* @param vaultAddress The address of the vault smart contract for the token/asset
|
||||
* @param vaultId The NFT ID which identifies the vault to be interacted with
|
||||
* @param getId ID to retrieve vaultId.
|
||||
*/
|
||||
function destroyVault(address vaultAddress, uint256 vaultId, uint256 getId) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
uint256 _vaultId = getUint(getId, vaultId);
|
||||
vault.destroyVault(_vaultId);
|
||||
|
||||
*/
|
||||
function destroyVault(
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
uint256 getId
|
||||
)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
uint256 _vaultId = _destroyVault(vaultAddress, vaultId, getId);
|
||||
_eventName = "LogDestroyVault(uint256, address)";
|
||||
_eventParam = abi.encode(_vaultId, address(this));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @dev Deposit MATIC/ERC20_Token.
|
||||
* @notice Deposit a token to QiDao for lending / collaterization.
|
||||
|
@ -63,7 +59,7 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
* @param setVaultId ID stores the vault being interacted with.
|
||||
* @param getAmtId ID to retrieve amt.
|
||||
* @param setAmtId ID stores the amount of tokens withdrawn.
|
||||
*/
|
||||
*/
|
||||
function deposit(
|
||||
address token,
|
||||
address vaultAddress,
|
||||
|
@ -73,29 +69,28 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
uint256 setVaultId,
|
||||
uint256 getAmtId,
|
||||
uint256 setAmtId
|
||||
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||
)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
uint256 _amt = getUint(getAmtId, amt);
|
||||
uint256 _vaultId = getUint(getVaultId, vaultId);
|
||||
|
||||
uint _amt = getUint(getAmtId, amt);
|
||||
uint _vaultId = getUint(getVaultId, vaultId);
|
||||
|
||||
bool isEth = token == maticAddr;
|
||||
|
||||
if(isEth){
|
||||
maticStablecoinInterface vault = maticStablecoinInterface(vaultAddress);
|
||||
vault.depositCollateral{value: _amt}(_vaultId);
|
||||
}
|
||||
else {
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
TokenInterface tokenContract = TokenInterface(token);
|
||||
approve(tokenContract, address(vault), _amt);
|
||||
vault.depositCollateral(_vaultId, _amt);
|
||||
}
|
||||
_deposit(token, vaultAddress, _vaultId, _amt);
|
||||
|
||||
setUint(setAmtId, _amt);
|
||||
setUint(getVaultId, _vaultId);
|
||||
|
||||
_eventName = "LogDepositCollateral(uint256, uint256, uint256, uint256, uint256, uint256)";
|
||||
_eventParam = abi.encode(_vaultId, _amt, getVaultId, setVaultId, getAmtId, setAmtId);
|
||||
_eventParam = abi.encode(
|
||||
_vaultId,
|
||||
_amt,
|
||||
getVaultId,
|
||||
setVaultId,
|
||||
getAmtId,
|
||||
setAmtId
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -109,7 +104,7 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
* @param setVaultId ID stores the vault being interacted with.
|
||||
* @param getAmtId ID to retrieve amt.
|
||||
* @param setAmtId ID stores the amount of tokens withdrawn.
|
||||
*/
|
||||
*/
|
||||
function withdraw(
|
||||
address token,
|
||||
address vaultAddress,
|
||||
|
@ -119,40 +114,29 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
uint256 setVaultId,
|
||||
uint256 getAmtId,
|
||||
uint256 setAmtId
|
||||
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||
uint _amt = getUint(getAmtId, amt);
|
||||
uint _vaultId = getUint(getVaultId, vaultId);
|
||||
|
||||
bool isEth = token == maticAddr;
|
||||
|
||||
uint initialBal;
|
||||
uint finalBal;
|
||||
|
||||
if(isEth){
|
||||
initialBal = address(this).balance;
|
||||
maticStablecoinInterface vault = maticStablecoinInterface(vaultAddress);
|
||||
|
||||
vault.withdrawCollateral(_vaultId, _amt);
|
||||
finalBal = address(this).balance;
|
||||
}
|
||||
else {
|
||||
TokenInterface tokenContract = TokenInterface(token);
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
|
||||
initialBal = tokenContract.balanceOf(address(this));
|
||||
|
||||
approve(tokenContract, address(vault), _amt);
|
||||
vault.withdrawCollateral(_vaultId, _amt);
|
||||
finalBal = tokenContract.balanceOf(address(this));
|
||||
}
|
||||
)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
uint256 _amt = getUint(getAmtId, amt);
|
||||
uint256 _vaultId = getUint(getVaultId, vaultId);
|
||||
|
||||
(uint256 initialBal, uint256 finalBal) = _withdraw(token, vaultAddress, _vaultId, _amt);
|
||||
|
||||
_amt = sub(finalBal, initialBal);
|
||||
|
||||
setUint(setAmtId, _amt);
|
||||
|
||||
_eventName = "LogWithdrawCollateral(uint256, uint256, uint256, uint256, uint256, uint256)";
|
||||
_eventParam = abi.encode(_vaultId, _amt, getVaultId, setVaultId, getAmtId, setAmtId);
|
||||
_eventParam = abi.encode(
|
||||
_vaultId,
|
||||
_amt,
|
||||
getVaultId,
|
||||
setVaultId,
|
||||
getAmtId,
|
||||
setAmtId
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -166,7 +150,7 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
* @param setVaultId ID stores the vault being interacted with.
|
||||
* @param getAmtId ID to retrieve amt.
|
||||
* @param setAmtId ID stores the amount of tokens withdrawn.
|
||||
*/
|
||||
*/
|
||||
function borrow(
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
|
@ -175,18 +159,28 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
uint256 setVaultId,
|
||||
uint256 getAmtId,
|
||||
uint256 setAmtId
|
||||
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||
uint _amt = getUint(getAmtId, amt);
|
||||
uint _vaultId = getUint(getVaultId, vaultId);
|
||||
)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
uint256 _amt = getUint(getAmtId, amt);
|
||||
uint256 _vaultId = getUint(getVaultId, vaultId);
|
||||
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
vault.borrowToken(_vaultId, _amt);
|
||||
_borrow(vaultAddress, _vaultId, _amt);
|
||||
|
||||
setUint(setAmtId, _amt);
|
||||
setUint(getVaultId, _vaultId);
|
||||
|
||||
_eventName = "LogBorrow(uint256, uint256, uint256, uint256, uint256, uint256);";
|
||||
_eventParam = abi.encode(_vaultId, _amt, getVaultId, setVaultId, getAmtId, setAmtId);
|
||||
_eventParam = abi.encode(
|
||||
_vaultId,
|
||||
_amt,
|
||||
getVaultId,
|
||||
setVaultId,
|
||||
getAmtId,
|
||||
setAmtId
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -199,7 +193,7 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
* @param setVaultId ID stores the vault being interacted with.
|
||||
* @param getAmtId ID to retrieve amt.
|
||||
* @param setAmtId ID stores the amount of tokens withdrawn.
|
||||
*/
|
||||
*/
|
||||
function payback(
|
||||
address vaultAddress,
|
||||
uint256 vaultId,
|
||||
|
@ -208,26 +202,31 @@ abstract contract QiDaoResolver is Events, Helpers {
|
|||
uint256 setVaultId,
|
||||
uint256 getAmtId,
|
||||
uint256 setAmtId
|
||||
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||
uint _amt = getUint(getAmtId, amt);
|
||||
uint _vaultId = getUint(getVaultId, vaultId);
|
||||
)
|
||||
external
|
||||
payable
|
||||
returns (string memory _eventName, bytes memory _eventParam)
|
||||
{
|
||||
uint256 _amt = getUint(getAmtId, amt);
|
||||
uint256 _vaultId = getUint(getVaultId, vaultId);
|
||||
|
||||
erc20StablecoinInterface vault = erc20StablecoinInterface(vaultAddress);
|
||||
|
||||
TokenInterface tokenContract = TokenInterface(MAI);
|
||||
|
||||
approve(tokenContract, address(vault), _amt);
|
||||
|
||||
vault.payBackToken(_vaultId, _amt);
|
||||
_payback(vaultAddress, _vaultId, _amt);
|
||||
|
||||
setUint(setAmtId, _amt);
|
||||
setUint(getVaultId, _vaultId);
|
||||
|
||||
_eventName ="LogPayBack(uint256, uint256, uint256, uint256, uint256, uint256)";
|
||||
_eventParam = abi.encode(_vaultId, _amt, getVaultId, setVaultId, getAmtId, setAmtId);
|
||||
_eventName = "LogPayBack(uint256, uint256, uint256, uint256, uint256, uint256)";
|
||||
_eventParam = abi.encode(
|
||||
_vaultId,
|
||||
_amt,
|
||||
getVaultId,
|
||||
setVaultId,
|
||||
getAmtId,
|
||||
setAmtId
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
contract ConnectV2QiDaoPolygon is QiDaoResolver{
|
||||
string constant public name = "QiDao-v1";
|
||||
contract ConnectV2QiDaoPolygon is QiDaoResolver {
|
||||
string public constant name = "QiDao-v1";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user