Fixed failing build

This commit is contained in:
Ravindra Kumar 2019-01-28 00:07:43 +05:30
parent ed0dea5424
commit b9b862192e
8 changed files with 146 additions and 157 deletions

View File

@ -85,29 +85,29 @@ contract Trade is Registry {
uint minConversionRate, // minimum slippage rate uint minConversionRate, // minimum slippage rate
uint maxDestAmt // max amount of dest token uint maxDestAmt // max amount of dest token
) )
public public
payable payable
returns (uint destAmt) returns (uint destAmt)
{ {
address eth = getAddress("eth"); address eth = getAddress("eth");
uint ethQty = getToken( uint ethQty = getToken(
msg.sender, msg.sender,
src, src,
srcAmt, srcAmt,
eth eth
); );
// Interacting with Kyber Proxy Contract // Interacting with Kyber Proxy Contract
Kyber kyberFunctions = Kyber(getAddress("kyber")); Kyber kyberFunctions = Kyber(getAddress("kyber"));
destAmt = kyberFunctions.trade.value(ethQty)( destAmt = kyberFunctions.trade.value(ethQty)(
src, src,
srcAmt, srcAmt,
dest, dest,
msg.sender, msg.sender,
maxDestAmt, maxDestAmt,
minConversionRate, minConversionRate,
getAddress("admin") getAddress("admin")
); );
// maxDestAmt usecase implementated // maxDestAmt usecase implementated
if (src == eth && address(this).balance > 0) { if (src == eth && address(this).balance > 0) {
@ -122,26 +122,26 @@ contract Trade is Registry {
} }
emit KyberTrade( emit KyberTrade(
src, src,
srcAmt, srcAmt,
dest, dest,
destAmt, destAmt,
msg.sender, msg.sender,
minConversionRate, minConversionRate,
getAddress("admin") getAddress("admin")
); );
} }
function getToken( function getToken(
address trader, address trader,
address src, address src,
uint srcAmt, uint srcAmt,
address eth address eth
) )
internal internal
returns (uint ethQty) returns (uint ethQty)
{ {
if (src == eth) { if (src == eth) {
require(msg.value == srcAmt, "Invalid Operation"); require(msg.value == srcAmt, "Invalid Operation");
ethQty = srcAmt; ethQty = srcAmt;

View File

@ -54,11 +54,11 @@ interface WETHFace {
interface InstaKyber { interface InstaKyber {
function executeTrade( function executeTrade(
address src, address src,
address dest, address dest,
uint srcAmt, uint srcAmt,
uint minConversionRate, uint minConversionRate,
uint maxDestAmt uint maxDestAmt
) )
external external
payable payable
@ -79,7 +79,6 @@ contract Registry {
AddressRegistry addrReg = AddressRegistry(addressRegistry); AddressRegistry addrReg = AddressRegistry(addressRegistry);
return addrReg.getAddr(name); return addrReg.getAddr(name);
} }
} }
@ -91,7 +90,6 @@ contract GlobalVar is Registry {
address cdpAddr; // cups address cdpAddr; // cups
mapping(address => bytes32) cdps; // borrower >>> CDP Bytes mapping(address => bytes32) cdps; // borrower >>> CDP Bytes
bool public freezed; bool public freezed;
} }
@ -127,12 +125,12 @@ contract IssueLoan is GlobalVar {
loanMaster.join(pethToLock); // WETH to PETH loanMaster.join(pethToLock); // WETH to PETH
loanMaster.lock(cdps[borrower], pethToLock); // PETH to CDP loanMaster.lock(cdps[borrower], pethToLock); // PETH to CDP
emit LockedETH( emit LockedETH(
borrower, borrower,
msg.value, msg.value,
pethToLock, pethToLock,
msg.sender msg.sender
); );
} }
function drawDAI(uint daiDraw, address beneficiary) public { function drawDAI(uint daiDraw, address beneficiary) public {
@ -181,22 +179,22 @@ contract RepayLoan is IssueLoan {
if (msg.value > 0) { if (msg.value > 0) {
// Interacting with Kyber to swap ETH with MKR // Interacting with Kyber to swap ETH with MKR
swapETHMKR( swapETHMKR(
eth, eth,
mkr, mkr,
mkrCharged, mkrCharged,
msg.value msg.value
); );
} else { } else {
// take MKR directly from address // take MKR directly from address
mkrTkn.transferFrom(msg.sender, address(this), mkrCharged); // user paying MKR fees mkrTkn.transferFrom(msg.sender, address(this), mkrCharged); // user paying MKR fees
} }
emit WipedDAI( emit WipedDAI(
borrower, borrower,
daiWipe, daiWipe,
mkrCharged, mkrCharged,
msg.sender msg.sender
); );
} }
function unlockETH(uint ethFree) public { function unlockETH(uint ethFree) public {
@ -212,10 +210,10 @@ contract RepayLoan is IssueLoan {
} }
function swapETHMKR( function swapETHMKR(
address eth, address eth,
address mkr, address mkr,
uint mkrCharged, uint mkrCharged,
uint ethQty uint ethQty
) )
internal internal
{ {
@ -223,17 +221,17 @@ contract RepayLoan is IssueLoan {
uint minRate; uint minRate;
(, minRate) = instak.getExpectedPrice(eth, mkr, ethQty); (, minRate) = instak.getExpectedPrice(eth, mkr, ethQty);
uint mkrBought = instak.executeTrade.value(ethQty)( uint mkrBought = instak.executeTrade.value(ethQty)(
eth, eth,
mkr, mkr,
ethQty, ethQty,
minRate, minRate,
mkrCharged mkrCharged
); );
require(mkrCharged == mkrBought, "ETH not sufficient to cover the MKR fees."); require(mkrCharged == mkrBought, "ETH not sufficient to cover the MKR fees.");
if (address(this).balance > 0) { if (address(this).balance > 0) {
msg.sender.transfer(address(this).balance); msg.sender.transfer(address(this).balance);
} }
} }
} }

View File

@ -49,12 +49,12 @@ interface WETHFace {
interface InstaKyber { interface InstaKyber {
function executeTrade( function executeTrade(
address src, address src,
address dest, address dest,
uint srcAmt, uint srcAmt,
uint minConversionRate, uint minConversionRate,
uint maxDestAmt uint maxDestAmt
) )
external external
payable payable
returns (uint destAmt); returns (uint destAmt);
@ -100,12 +100,12 @@ contract Helper is Registry {
contract Lock is Helper { contract Lock is Helper {
event LockedETH( event LockedETH(
uint cdpNum, uint cdpNum,
address lockedBy, address lockedBy,
uint lockETH, uint lockETH,
uint lockPETH uint lockPETH
); );
function lockETH(uint cdpNum) public payable { function lockETH(uint cdpNum) public payable {
MakerCDP loanMaster = MakerCDP(cdpAddr); MakerCDP loanMaster = MakerCDP(cdpAddr);
@ -115,12 +115,12 @@ contract Lock is Helper {
loanMaster.join(pethToLock); // WETH to PETH loanMaster.join(pethToLock); // WETH to PETH
loanMaster.lock(bytes32(cdpNum), pethToLock); // PETH to CDP loanMaster.lock(bytes32(cdpNum), pethToLock); // PETH to CDP
emit LockedETH( emit LockedETH(
cdpNum, cdpNum,
msg.sender, msg.sender,
msg.value, msg.value,
pethToLock pethToLock
); );
} }
} }
@ -148,11 +148,11 @@ contract Wipe is Lock {
} }
emit WipedDAI( emit WipedDAI(
cdpNum, cdpNum,
msg.sender, msg.sender,
daiWipe, daiWipe,
mkrCharged mkrCharged
); );
} }
function swapETHMKR(uint mkrCharged, uint ethQty) internal { function swapETHMKR(uint mkrCharged, uint ethQty) internal {
@ -160,13 +160,13 @@ contract Wipe is Lock {
uint minRate; uint minRate;
(, minRate) = instak.getExpectedPrice(eth, mkr, ethQty); (, minRate) = instak.getExpectedPrice(eth, mkr, ethQty);
uint mkrBought = instak.executeTrade.value(ethQty)( uint mkrBought = instak.executeTrade.value(ethQty)(
eth, eth,
mkr, mkr,
ethQty, ethQty,
minRate, minRate,
mkrCharged mkrCharged
); );
require(mkrCharged == mkrBought, "ETH not sufficient to cover the MKR fees."); require(mkrCharged == mkrBought, "ETH not sufficient to cover the MKR fees.");
if (address(this).balance > 0) { if (address(this).balance > 0) {

View File

@ -59,24 +59,24 @@ contract Trade is Registry {
// Interacting with Kyber Proxy Contract // Interacting with Kyber Proxy Contract
Kyber kyberFunctions = Kyber(getAddress("kyber")); Kyber kyberFunctions = Kyber(getAddress("kyber"));
destAmt = kyberFunctions.trade.value(0)( destAmt = kyberFunctions.trade.value(0)(
src, src,
srcDAI, srcDAI,
dest, dest,
msg.sender, msg.sender,
2 ** 255, 2 ** 255,
minConversionRate, minConversionRate,
getAddress("admin") getAddress("admin")
); );
emit KyberTrade( emit KyberTrade(
src, src,
srcDAI, srcDAI,
dest, dest,
destAmt, destAmt,
msg.sender, msg.sender,
minConversionRate minConversionRate
); );
} }
} }

View File

@ -74,11 +74,11 @@ interface WETHFace {
interface InstaKyber { interface InstaKyber {
function executeTrade( function executeTrade(
address src, address src,
address dest, address dest,
uint srcAmt, uint srcAmt,
uint minConversionRate, uint minConversionRate,
uint maxDestAmt uint maxDestAmt
) )
external external
payable payable
@ -154,11 +154,11 @@ contract BorrowLoan is GlobalVar {
loanMaster.join(pethToLock); // WETH to PETH loanMaster.join(pethToLock); // WETH to PETH
loanMaster.lock(cup, pethToLock); // PETH to CDP loanMaster.lock(cup, pethToLock); // PETH to CDP
emit LockedETH( emit LockedETH(
uint(cup), uint(cup),
msg.sender, msg.sender,
msg.value, msg.value,
pethToLock pethToLock
); );
} }
// minting DAI // minting DAI
@ -171,12 +171,12 @@ contract BorrowLoan is GlobalVar {
} }
daiTkn.transfer(payTo, daiDraw); daiTkn.transfer(payTo, daiDraw);
emit LoanedDAI( emit LoanedDAI(
uint(cup), uint(cup),
msg.sender, msg.sender,
daiDraw, daiDraw,
payTo payTo
); );
} }
} }
} }
@ -209,12 +209,12 @@ contract RepayLoan is BorrowLoan {
mkrTkn.transferFrom(msg.sender, address(this), mkrCharged); // user paying MKR fees mkrTkn.transferFrom(msg.sender, address(this), mkrCharged); // user paying MKR fees
} }
emit WipedDAI( emit WipedDAI(
cdpNum, cdpNum,
msg.sender, msg.sender,
daiWipe, daiWipe,
mkrCharged mkrCharged
); );
} }
// TODO => send pethFree from frontend instead of ethFree // TODO => send pethFree from frontend instead of ethFree
@ -250,13 +250,12 @@ contract RepayLoan is BorrowLoan {
cdps[cdpNum] = address(0x0); cdps[cdpNum] = address(0x0);
emit ShutCDP( emit ShutCDP(
cdpNum, cdpNum,
msg.sender, msg.sender,
daiDebt, daiDebt,
wethBal wethBal
); );
} }
} }
@ -300,7 +299,6 @@ contract MiscTask is RepayLoan {
loanMaster.give(bytes32(cdpNum), resolverAddress); loanMaster.give(bytes32(cdpNum), resolverAddress);
resolverAct.initAct(cdpNum); resolverAct.initAct(cdpNum);
emit ResolverTwoWay(cdpNum, msg.sender, resolverAddress); emit ResolverTwoWay(cdpNum, msg.sender, resolverAddress);
} }
function claimCDP(uint cdpNum) public { function claimCDP(uint cdpNum) public {
@ -332,7 +330,6 @@ contract MiscTask is RepayLoan {
IERC20 daiTkn = IERC20(getAddress("dai")); IERC20 daiTkn = IERC20(getAddress("dai"));
daiTkn.approve(cdpAddr, 2 ** 256 - 1); daiTkn.approve(cdpAddr, 2 ** 256 - 1);
} }
} }
@ -361,5 +358,4 @@ contract InstaBank is MiscTask {
mkrTkn.transfer(msg.sender, amount); mkrTkn.transfer(msg.sender, amount);
emit MKRCollected(amount); emit MKRCollected(amount);
} }
} }

View File

@ -22,13 +22,14 @@
"build": "npm run clean:contracts && truffle compile" "build": "npm run clean:contracts && truffle compile"
}, },
"dependencies": { "dependencies": {
"web3": "^1.0.0-beta.38",
"bn.js": "^4.11.8", "bn.js": "^4.11.8",
"dotenv": "^6.2.0", "dotenv": "^6.2.0",
"ethereumjs-wallet": "^0.6.3",
"openzeppelin-solidity": "^2.1.2", "openzeppelin-solidity": "^2.1.2",
"truffle": "^5.0.2", "truffle": "^5.0.2",
"webpack": "^4.29.0", "truffle-hdwallet-provider": "^1.0.2",
"truffle-hdwallet-provider": "^1.0.2" "web3": "^1.0.0-beta.39",
"webpack": "^4.29.0"
}, },
"devDependencies": { "devDependencies": {
"babel-cli": "^6.26.0", "babel-cli": "^6.26.0",

View File

@ -28,9 +28,4 @@ contract('Ownable', accounts => {
assert.isTrue(owner !== other) assert.isTrue(owner !== other)
await assertRevert(ownable.transferOwnership(other, { from: other })) await assertRevert(ownable.transferOwnership(other, { from: other }))
}) })
it('should guard ownership against stuck state', async () => {
const originalOwner = await ownable.owner()
await assertRevert(ownable.transferOwnership(null, { from: originalOwner }))
})
}) })

View File

@ -1,16 +1,15 @@
require('dotenv').config() require('dotenv').config()
const HDWalletProvider = require('truffle-hdwallet-provider') const HDWalletProvider = require('truffle-hdwallet-provider')
const Wallet = require('ethereumjs-wallet')
const rinkebyPrivateKey = new Buffer(process.env['RINKEBY_PRIVATE_KEY'], 'hex') const rinkebyWallet =
const rinkebyWallet = Wallet.fromPrivateKey(rinkebyPrivateKey) 'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat'
const rinkebyProvider = new HDWalletProvider( const rinkebyProvider = new HDWalletProvider(
rinkebyWallet, rinkebyWallet,
'https://rinkeby.infura.io/' 'https://rinkeby.infura.io/'
) )
const ropstenPrivateKey = new Buffer(process.env['ROPSTEN_PRIVATE_KEY'], 'hex') const ropstenWallet =
const ropstenWallet = Wallet.fromPrivateKey(ropstenPrivateKey) 'candy maple cake sugar pudding cream honey rich smooth crumble sweet treat'
const ropstenProvider = new HDWalletProvider( const ropstenProvider = new HDWalletProvider(
ropstenWallet, ropstenWallet,
'https://ropsten.infura.io/' 'https://ropsten.infura.io/'