From b6430ee85ae44574c5f34ddf20491be283e40ce1 Mon Sep 17 00:00:00 2001 From: Samyak Jain Date: Wed, 12 Jun 2019 13:49:25 +0530 Subject: [PATCH] contract payable --- contracts/ProxyLogics/InstaBridge.sol | 25 +++++++++++++++++++++++-- contracts/bridges/MakerCompound.sol | 25 +++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/contracts/ProxyLogics/InstaBridge.sol b/contracts/ProxyLogics/InstaBridge.sol index c224519..5d272ca 100644 --- a/contracts/ProxyLogics/InstaBridge.sol +++ b/contracts/ProxyLogics/InstaBridge.sol @@ -50,6 +50,7 @@ interface UniswapExchange { interface BridgeInterface { function transferDAI(uint) external; + function transferBackDAI(uint) external; } interface CTokenInterface { @@ -313,7 +314,8 @@ contract MakerHelper is Helper { TubInterface tub = TubInterface(getSaiTubAddress()); tub.draw(cup, _wad); - ERC20Interface(getDAIAddress()).transfer(getBridgeAddress(), _wad); + setApproval(getDAIAddress(), _wad, getBridgeAddress()); + BridgeInterface(getBridgeAddress()).transferBackDAI(_wad); emit LogDraw(uint(cup), _wad, address(this)); } @@ -438,7 +440,8 @@ contract CompoundHelper is MakerHelper { function borrowDAIComp(address erc20, address cErc20, uint tokenAmt) internal { enterMarket(cErc20); require(CTokenInterface(cErc20).borrow(tokenAmt) == 0, "got collateral?"); - ERC20Interface(erc20).transfer(getBridgeAddress(), tokenAmt); + setApproval(erc20, tokenAmt, getBridgeAddress()); + BridgeInterface(getBridgeAddress()).transferBackDAI(tokenAmt); emit LogBorrow( erc20, cErc20, @@ -507,6 +510,7 @@ contract Bridge is CompoundHelper { /** * @dev convert Compound Collateral into Maker CDP + * @param cdpId = 0, if user don't have any CDP * @param toConvert ranges from 0 to 1 and has (18 decimals) */ function compoundToMaker(uint cdpId, uint toConvert) public { @@ -530,4 +534,21 @@ contract Bridge is CompoundHelper { draw(cup, daiAmt); } +} + + +contract InstaBridge is Bridge { + + uint public version; + + /** + * @dev setting up variables on deployment + * 1...2...3 versioning in each subsequent deployments + */ + constructor(uint _version) public { + version = _version; + } + + function() external payable {} + } \ No newline at end of file diff --git a/contracts/bridges/MakerCompound.sol b/contracts/bridges/MakerCompound.sol index 5f9f571..0471986 100644 --- a/contracts/bridges/MakerCompound.sol +++ b/contracts/bridges/MakerCompound.sol @@ -118,4 +118,29 @@ contract Bridge is Helper { ERC20Interface(daiAdd).transfer(msg.sender, amt); } + function transferBackDAI(uint amt) public { + require(RegistryInterface(registryAdd).proxies(msg.sender) != address(0), "Not-User-Wallet"); + ERC20Interface tokenContract = ERC20Interface(daiAdd); + tokenContract.transferFrom(msg.sender, address(this), amt); + CTokenInterface cToken = CTokenInterface(cDaiAdd); + assert(cToken.mint(amt) == 0); + } + +} + + +contract MakerCompBridge is Bridge { + + uint public version; + + /** + * @dev setting up variables on deployment + * 1...2...3 versioning in each subsequent deployments + */ + constructor(uint _version) public { + version = _version; + } + + function() external payable {} + } \ No newline at end of file