Skip to content

Commit 9a29ad8

Browse files
AnyhowclickilanDoron
authored andcommittedMay 29, 2020
CleanUp. Improve file linting, add tests for coverage, update Katalyst deployer script, fix CI script.
1 parent 3c411ad commit 9a29ad8

24 files changed

+575
-237
lines changed
 

‎.prettierignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
# zeppelin contracts
22
contractsSol5/utils/zeppelin
3+
contractsSol5/bridges
34

‎.solcover.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ function removeV4ArtifactsDir(config) {
2525

2626
module.exports = {
2727
providerOptions: {
28-
"default_balance_ether": 50000
28+
"default_balance_ether": 50000,
29+
"total_accounts": 20
2930
},
3031
istanbulReporter: ['html','json'],
3132
onCompileComplete: moveFiles,

‎.solhint.json

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"extends": "solhint:default",
3+
"rules": {
4+
"indent": ["error", 4],
5+
"quotes": ["error", "double"],
6+
"avoid-suicide": "error",
7+
"avoid-sha3": "warn",
8+
"avoid-tx-origin:": "warn",
9+
"const-name-snakecase": "off",
10+
"func-order": "warn",
11+
"not-rely-on-block-hash": "warn"
12+
}
13+
}
14+

‎.solhintignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# zeppelin contracts
2+
contractsSol5/utils/zeppelin
3+
contractsSol5/bridges
4+

‎.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ install:
2424
- npm ci
2525

2626
script:
27+
- npx solhint contractsSol5/**/**.sol
2728
- ./cmp.sh
2829
- .travis/test-part.sh
2930

‎.travis/test-part.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Coverage)
1313
if [[ $TRAVIS_EVENT_TYPE != "push" ]]; then
1414
echo "Only running coverage on merge request or direct push"
1515
elif [[ $TRAVIS_BRANCH == $COVERAGE_BRANCH ]]; then
16-
./coverage.sh
16+
./coverage.sh || true
1717
else
1818
echo "Not running coverage on $TRAVIS_BRANCH"
1919
fi

‎contractsSol5/Dao/IKyberStaking.sol

+14-9
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ pragma solidity 0.5.11;
22

33

44
interface IKyberStaking {
5-
event Delegated(address indexed staker, address indexed delegatedAddress, uint256 indexed epoch, bool isDelegated);
5+
event Delegated(
6+
address indexed staker,
7+
address indexed delegatedAddress,
8+
uint256 indexed epoch,
9+
bool isDelegated
10+
);
611
event Deposited(uint256 curEpoch, address indexed staker, uint256 amount);
712
event Withdraw(uint256 indexed curEpoch, address indexed staker, uint256 amount);
813

9-
function epochPeriodInSeconds() external view returns (uint256);
10-
11-
function firstEpochStartTimestamp() external view returns (uint256);
12-
1314
function initAndReturnStakerDataForCurrentEpoch(address staker)
1415
external
1516
returns (
@@ -18,6 +19,12 @@ interface IKyberStaking {
1819
address _delegatedAddress
1920
);
2021

22+
function deposit(uint256 amount) external;
23+
24+
function delegate(address dAddr) external;
25+
26+
function withdraw(uint256 amount) external;
27+
2128
function getStakerDataForPastEpoch(address staker, uint256 epoch)
2229
external
2330
view
@@ -27,9 +34,7 @@ interface IKyberStaking {
2734
address _delegatedAddress
2835
);
2936

30-
function deposit(uint256 amount) external;
31-
32-
function withdraw(uint256 amount) external;
37+
function epochPeriodInSeconds() external view returns (uint256);
3338

34-
function delegate(address dAddr) external;
39+
function firstEpochStartTimestamp() external view returns (uint256);
3540
}

‎contractsSol5/Dao/KyberFeeHandler.sol

+16-16
Original file line numberDiff line numberDiff line change
@@ -433,22 +433,6 @@ contract KyberFeeHandler is IKyberFeeHandler, Utils4, BurnConfigPermission {
433433
}
434434
}
435435

436-
function readBRRData()
437-
public
438-
view
439-
returns (
440-
uint256 rewardBps,
441-
uint256 rebateBps,
442-
uint256 expiryTimestamp,
443-
uint256 epoch
444-
)
445-
{
446-
rewardBps = uint256(brrAndEpochData.rewardBps);
447-
rebateBps = uint256(brrAndEpochData.rebateBps);
448-
epoch = uint256(brrAndEpochData.epoch);
449-
expiryTimestamp = uint256(brrAndEpochData.expiryTimestamp);
450-
}
451-
452436
function getBRR()
453437
public
454438
returns (
@@ -477,6 +461,22 @@ contract KyberFeeHandler is IKyberFeeHandler, Utils4, BurnConfigPermission {
477461
}
478462
}
479463

464+
function readBRRData()
465+
public
466+
view
467+
returns (
468+
uint256 rewardBps,
469+
uint256 rebateBps,
470+
uint256 expiryTimestamp,
471+
uint256 epoch
472+
)
473+
{
474+
rewardBps = uint256(brrAndEpochData.rewardBps);
475+
rebateBps = uint256(brrAndEpochData.rebateBps);
476+
epoch = uint256(brrAndEpochData.epoch);
477+
expiryTimestamp = uint256(brrAndEpochData.expiryTimestamp);
478+
}
479+
480480
function updateBRRData(
481481
uint256 reward,
482482
uint256 rebate,

‎contractsSol5/Dao/mock/MockKyberStakingMalicious.sol

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,6 @@ contract MockKyberStakingMalicious is KyberStaking {
1111
address _admin
1212
) public KyberStaking(_kncToken, _epochPeriod, _startBlock, _admin) {}
1313

14-
function getHasInitedValue(address staker, uint256 epoch) public view returns (bool) {
15-
return hasInited[epoch][staker];
16-
}
17-
1814
function setLatestStake(address staker, uint256 amount) public {
1915
stakerLatestData[staker].stake = amount;
2016
}
@@ -38,4 +34,8 @@ contract MockKyberStakingMalicious is KyberStaking {
3834
) public {
3935
stakerPerEpochData[epoch][staker].delegatedStake = amount;
4036
}
37+
38+
function getHasInitedValue(address staker, uint256 epoch) public view returns (bool) {
39+
return hasInited[epoch][staker];
40+
}
4141
}

‎contractsSol5/Dao/mock/MockStakingContract.sol

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ contract MockStakingContract is KyberStaking {
1111
address _admin
1212
) public KyberStaking(_kncToken, _epochPeriod, _startBlock, _admin) {}
1313

14+
function setDAOAddressWithoutCheck(address dao) public {
15+
daoContract = IKyberDAO(dao);
16+
}
17+
1418
function getHasInitedValue(address staker, uint256 epoch) public view returns (bool) {
1519
return hasInited[epoch][staker];
1620
}
@@ -30,8 +34,4 @@ contract MockStakingContract is KyberStaking {
3034
{
3135
return stakerPerEpochData[epoch][staker].delegatedAddress;
3236
}
33-
34-
function setDAOAddressWithoutCheck(address dao) public {
35-
daoContract = IKyberDAO(dao);
36-
}
3737
}

‎contractsSol5/IKyberNetwork.sol

+1-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import "./IERC20.sol";
44

55

66
interface IKyberNetwork {
7-
8-
event KyberTrade(
7+
event KyberTrade(
98
address indexed trader,
109
IERC20 indexed src,
1110
IERC20 indexed dest,

‎contractsSol5/IKyberNetworkProxy.sol

+12-12
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ interface IKyberNetworkProxy {
2727
bytes calldata hint
2828
) external payable returns (uint256);
2929

30+
function tradeWithHintAndFee(
31+
IERC20 src,
32+
uint256 srcAmount,
33+
IERC20 dest,
34+
address payable destAddress,
35+
uint256 maxDestAmount,
36+
uint256 minConversionRate,
37+
address payable platformWallet,
38+
uint256 platformFeeBps,
39+
bytes calldata hint
40+
) external payable returns (uint256 destAmount);
41+
3042
function trade(
3143
IERC20 src,
3244
uint256 srcAmount,
@@ -58,16 +70,4 @@ interface IKyberNetworkProxy {
5870
uint256 srcQty,
5971
bytes calldata hint
6072
) external view returns (uint256 priceNoFee);
61-
62-
function tradeWithHintAndFee(
63-
IERC20 src,
64-
uint256 srcAmount,
65-
IERC20 dest,
66-
address payable destAddress,
67-
uint256 maxDestAmount,
68-
uint256 minConversionRate,
69-
address payable platformWallet,
70-
uint256 platformFeeBps,
71-
bytes calldata hint
72-
) external payable returns (uint256 destAmount);
7373
}

‎contractsSol5/KyberHintHandler.sol

+2-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import "./IKyberHint.sol";
1414
* - Will revert with error message if an error is found
1515
* - parse*Hint() returns both reserveIds and reserveAddresses
1616
* Internal functions unpackT2THint() and parseHint():
17-
* - Are part of ger rate && trade flow
17+
* - Are part of get rate && trade flow
1818
* - Don't revert if an error is found
1919
* - If an error is found, return no data such that the trade flow
2020
* returns 0 rate for bad hint values
@@ -200,7 +200,7 @@ contract KyberHintHandler is IKyberHint, Utils4 {
200200
HintErrors valid
201201
)
202202
{
203-
(tradeType, reserveIds, splits) = abi.decode(hint, (TradeType, bytes32[], uint256[]));
203+
(tradeType, reserveIds, splits) = abi.decode(hint, (TradeType, bytes32[], uint256[])); // solhint-disable
204204
valid = verifyData(tradeType, reserveIds, splits);
205205

206206
if (valid != HintErrors.NoError) {

‎contractsSol5/mock/GenerousKyberNetwork.sol

+2-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ contract GenerousKyberNetwork is KyberNetwork {
7575
if (tData.input.srcAmount == 1313) {
7676
//signal for "reverse trade" for source token
7777
emit GenerousTrade(1313, 1755, tData.input.src);
78-
// since 1313 src token is transfered to proxy, we must transfer a bigger number to trader to break the check of src Amount
78+
// since 1313 src token is transfered to proxy, we must transfer a bigger number to
79+
// trader to break the check of src Amount
7980
tData.input.src.safeTransfer(tData.input.trader, 1755);
8081
// we should return the dest amount, otherwise it can not pass the check of dest Amount balance
8182
tData.input.dest.safeTransfer(tData.input.destAddress, destAmount);

‎contractsSol5/mock/MockReserve.sol

+4-2
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,11 @@ contract MockReserve is IKyberReserve, Utils4 {
3131
bool validate
3232
) public payable returns (bool) {
3333
validate;
34-
if (srcToken == ETH_TOKEN_ADDRESS)
34+
if (srcToken == ETH_TOKEN_ADDRESS) {
3535
require(msg.value == srcAmount, "ETH sent != srcAmount");
36-
else require(msg.value == 0, "ETH was sent for token -> ETH trade");
36+
} else {
37+
require(msg.value == 0, "ETH was sent for token -> ETH trade");
38+
}
3739

3840
uint256 srcDecimals = getDecimals(srcToken);
3941
uint256 destDecimals = getDecimals(destToken);

‎contractsSol5/utils/Utils4.sol

+10-4
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,22 @@ contract Utils4 {
3737
function setDecimals(IERC20 token) internal {
3838
if (decimals[address(token)] != 0) return; //already set
3939

40-
if (token == ETH_TOKEN_ADDRESS) decimals[address(token)] = ETH_DECIMALS;
41-
else decimals[address(token)] = token.decimals();
40+
if (token == ETH_TOKEN_ADDRESS) {
41+
decimals[address(token)] = ETH_DECIMALS;
42+
} else {
43+
decimals[address(token)] = token.decimals();
44+
}
4245
}
4346

4447
/// @dev get the balance of a user.
4548
/// @param token The token type
4649
/// @return The balance
4750
function getBalance(IERC20 token, address user) internal view returns (uint256) {
48-
if (token == ETH_TOKEN_ADDRESS) return user.balance;
49-
else return token.balanceOf(user);
51+
if (token == ETH_TOKEN_ADDRESS) {
52+
return user.balance;
53+
} else {
54+
return token.balanceOf(user);
55+
}
5056
}
5157

5258
function getDecimals(IERC20 token) internal view returns (uint256) {

‎coverage.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ npx buidler compile --config ./buidlerCoverageSol4.js
1010

1111
if [ -n "$FILE" ]
1212
then
13-
npx buidler coverage --config ./buidlerConfigSol5.js --testfiles $FILE
13+
npx buidler coverage --config ./buidlerConfigSol5.js --testfiles $FILE --solcoverjs ".solcover.js" --temp ""
1414
else
1515
npx buidler coverage --config ./buidlerConfigSol5.js --testfiles "" --solcoverjs ".solcover.js" --temp ""
1616
fi

0 commit comments

Comments
 (0)
Please sign in to comment.