From 058fc7d8f577fa22f28bd416de29bb406855c2f7 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Thu, 20 Aug 2020 21:46:41 +0530 Subject: [PATCH 1/3] Code refactoring --- contracts/connectors/curve_gauge.sol | 82 +++++++++++----------------- 1 file changed, 33 insertions(+), 49 deletions(-) diff --git a/contracts/connectors/curve_gauge.sol b/contracts/connectors/curve_gauge.sol index 1276f5a..371b1d1 100644 --- a/contracts/connectors/curve_gauge.sol +++ b/contracts/connectors/curve_gauge.sol @@ -52,7 +52,7 @@ contract GaugeHelper is DSMath, Stores{ } } -contract CurveGauge is GaugeHelper { +contract CurveGaugeEvent is GaugeHelper { event LogDeposit( string indexed gaugePoolName, uint amount, @@ -75,12 +75,22 @@ contract CurveGauge is GaugeHelper { uint setIdReward ); - event LogClaimedReward( - string indexed gaugePoolName, - uint amount, - uint setId - ); + function emitLogWithdraw(string memory gaugePoolName, uint _amt, uint getId, uint setId) internal { + emit LogWithdraw(gaugePoolName, _amt, getId, setId); + bytes32 _eventCodeWithdraw = keccak256("LogWithdraw(string,uint256,uint256,uint256)"); + bytes memory _eventParamWithdraw = abi.encode(gaugePoolName, _amt, getId, setId); + emitEvent(_eventCodeWithdraw, _eventParamWithdraw); + } + function emitLogClaimedReward(string memory gaugePoolName, uint crvAmt, uint rewardAmt, uint setIdCrv, uint setIdReward) internal { + emit LogClaimedReward(gaugePoolName, crvAmt, rewardAmt, setIdCrv, setIdReward); + bytes32 _eventCode = keccak256("LogClaimedReward(string,uint256,uint256,uint256,uint256)"); + bytes memory _eventParam = abi.encode(gaugePoolName, crvAmt, rewardAmt, setIdCrv, setIdReward); + emitEvent(_eventCode, _eventParam); + } +} + +contract CurveGauge is CurveGaugeEvent { struct Balances{ uint intialCRVBal; uint intialRewardBal; @@ -105,7 +115,9 @@ contract CurveGauge is GaugeHelper { ) external payable { uint _amt = getUint(getId, amt); ICurveGaugeMapping curveGaugeMapping = ICurveGaugeMapping(getCurveGaugeMappingAddr()); - ICurveGaugeMapping.GaugeData memory curveGaugeData = curveGaugeMapping.gaugeMapping(bytes32(stringToBytes32(gaugePoolName))); + ICurveGaugeMapping.GaugeData memory curveGaugeData = curveGaugeMapping.gaugeMapping( + bytes32(stringToBytes32(gaugePoolName) + )); require(curveGaugeData.gaugeAddress != address(0), "wrong-gauge-pool-name"); IGauge gauge = IGauge(curveGaugeData.gaugeAddress); TokenInterface lp_token = TokenInterface(address(gauge.lp_token())); @@ -127,7 +139,7 @@ contract CurveGauge is GaugeHelper { * @param amt LP token amount. * @param getId Get token amount at this ID from `InstaMemory` Contract. * @param setId Set token amount at this ID in `InstaMemory` Contract. - * @param setIdCRVReward Set CRV token reward amount at this ID in `InstaMemory` Contract. + * @param setIdCrv Set CRV token reward amount at this ID in `InstaMemory` Contract. * @param setIdReward Set reward amount at this ID in `InstaMemory` Contract. */ function withdraw( @@ -135,7 +147,7 @@ contract CurveGauge is GaugeHelper { uint amt, uint getId, uint setId, - uint setIdCRVReward, + uint setIdCrv, uint setIdReward ) external payable { uint _amt = getUint(getId, amt); @@ -144,13 +156,14 @@ contract CurveGauge is GaugeHelper { require(curveGaugeData.gaugeAddress != address(0), "wrong-gauge-pool-name"); IGauge gauge = IGauge(curveGaugeData.gaugeAddress); TokenInterface crv_token = TokenInterface(address(gauge.crv_token())); + TokenInterface rewarded_token; Balances memory balances; _amt = _amt == uint(-1) ? gauge.balanceOf(address(this)) : _amt; balances.intialCRVBal = crv_token.balanceOf(address(this)); - if(curveGaugeData.rewardToken == true){ - TokenInterface rewarded_token = TokenInterface(address(gauge.rewarded_token())); + if (curveGaugeData.rewardToken) { + rewarded_token = TokenInterface(address(gauge.rewarded_token())); balances.intialRewardBal = rewarded_token.balanceOf(address(this)); } @@ -160,39 +173,17 @@ contract CurveGauge is GaugeHelper { balances.finalCRVBal = crv_token.balanceOf(address(this)); balances.crvRewardAmt = sub(balances.finalCRVBal, balances.intialCRVBal); setUint(setId, _amt); - setUint(setIdCRVReward, balances.crvRewardAmt); + setUint(setIdCrv, balances.crvRewardAmt); emitLogWithdraw(gaugePoolName, _amt, getId, setId); - if(curveGaugeData.rewardToken == true){ - TokenInterface rewarded_token = TokenInterface(address(gauge.rewarded_token())); + if (curveGaugeData.rewardToken) { balances.finalRewardBal = rewarded_token.balanceOf(address(this)); balances.rewardAmt = sub(balances.finalRewardBal, balances.intialRewardBal); setUint(setIdReward, balances.rewardAmt); - emit LogClaimedReward(gaugePoolName, balances.crvRewardAmt, setIdCRVReward, balances.rewardAmt, setIdReward); - bytes32 _eventCode = keccak256("LogClaimedReward(string,uint256,uint256,uint256,uint256)"); - bytes memory _eventParam = abi.encode(gaugePoolName, balances.crvRewardAmt, setIdCRVReward, balances.rewardAmt, setIdReward); - emitEvent(_eventCode, _eventParam); - }else{ - emit LogClaimedReward(gaugePoolName, balances.crvRewardAmt, setIdCRVReward); - bytes32 _eventCode = keccak256("LogClaimedReward(string,uint256,uint256"); - bytes memory _eventParam = abi.encode(gaugePoolName, balances.crvRewardAmt, setIdCRVReward); - emitEvent(_eventCode, _eventParam); } - } - /** - * @dev emit LogWithdraw event - * @param gaugePoolName gauge pool name. - * @param _amt LP token amount. - * @param getId Get token amount at this ID from `InstaMemory` Contract. - * @param setId Set token amount at this ID in `InstaMemory` Contract. - */ - function emitLogWithdraw(string memory gaugePoolName, uint _amt, uint getId, uint setId) internal { - emit LogWithdraw(gaugePoolName, _amt, getId, setId); - bytes32 _eventCodeWithdraw = keccak256("LogWithdraw(string,uint256,uint256,uint256)"); - bytes memory _eventParamWithdraw = abi.encode(gaugePoolName, _amt, getId, setId); - emitEvent(_eventCodeWithdraw, _eventParamWithdraw); + emitLogClaimedReward(gaugePoolName, balances.crvRewardAmt, balances.rewardAmt, setIdCrv, setIdReward); } /** @@ -212,10 +203,11 @@ contract CurveGauge is GaugeHelper { IMintor mintor = IMintor(getCurveMintorAddr()); IGauge gauge = IGauge(curveGaugeData.gaugeAddress); TokenInterface crv_token = TokenInterface(address(gauge.crv_token())); + TokenInterface rewarded_token; Balances memory balances; - if(curveGaugeData.rewardToken == true){ - TokenInterface rewarded_token = TokenInterface(address(gauge.rewarded_token())); + if (curveGaugeData.rewardToken) { + rewarded_token = TokenInterface(address(gauge.rewarded_token())); balances.intialRewardBal = rewarded_token.balanceOf(address(this)); } @@ -227,21 +219,13 @@ contract CurveGauge is GaugeHelper { balances.crvRewardAmt = sub(balances.finalCRVBal, balances.intialCRVBal); setUint(setId, balances.crvRewardAmt); - if(curveGaugeData.rewardToken == true){ - TokenInterface rewarded_token = TokenInterface(address(gauge.rewarded_token())); + if(curveGaugeData.rewardToken){ balances.finalRewardBal = rewarded_token.balanceOf(address(this)); balances.rewardAmt = sub(balances.finalRewardBal, balances.intialRewardBal); setUint(setIdReward, balances.rewardAmt); - emit LogClaimedReward(gaugePoolName, balances.crvRewardAmt, setId, balances.rewardAmt, setIdReward); - bytes32 _eventCode = keccak256("LogClaimedReward(string,uint256,uint256,uint256,uint256)"); - bytes memory _eventParam = abi.encode(gaugePoolName, balances.crvRewardAmt, setId, balances.rewardAmt, setIdReward); - emitEvent(_eventCode, _eventParam); - }else{ - emit LogClaimedReward(gaugePoolName, balances.crvRewardAmt, setId); - bytes32 _eventCode = keccak256("LogClaimedReward(string,uint256,uint256"); - bytes memory _eventParam = abi.encode(gaugePoolName, balances.crvRewardAmt, setId); - emitEvent(_eventCode, _eventParam); } + + emitLogClaimedReward(gaugePoolName, balances.crvRewardAmt, balances.rewardAmt, setId, setIdReward); } } From b2a31a24c71fab46ac1f476e1671519ad420c1f2 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Thu, 20 Aug 2020 21:51:54 +0530 Subject: [PATCH 2/3] Minor edits --- contracts/connectors/curve_gauge.sol | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/contracts/connectors/curve_gauge.sol b/contracts/connectors/curve_gauge.sol index 371b1d1..75fc9f2 100644 --- a/contracts/connectors/curve_gauge.sol +++ b/contracts/connectors/curve_gauge.sol @@ -124,7 +124,9 @@ contract CurveGauge is CurveGaugeEvent { _amt = _amt == uint(-1) ? lp_token.balanceOf(address(this)) : _amt; lp_token.approve(address(curveGaugeData.gaugeAddress), _amt); + gauge.deposit(_amt); + setUint(setId, _amt); emit LogDeposit(gaugePoolName, _amt, getId, setId); @@ -152,7 +154,9 @@ contract CurveGauge is CurveGaugeEvent { ) external payable { uint _amt = getUint(getId, amt); ICurveGaugeMapping curveGaugeMapping = ICurveGaugeMapping(getCurveGaugeMappingAddr()); - ICurveGaugeMapping.GaugeData memory curveGaugeData = curveGaugeMapping.gaugeMapping(bytes32(stringToBytes32(gaugePoolName))); + ICurveGaugeMapping.GaugeData memory curveGaugeData = curveGaugeMapping.gaugeMapping( + bytes32(stringToBytes32(gaugePoolName)) + ); require(curveGaugeData.gaugeAddress != address(0), "wrong-gauge-pool-name"); IGauge gauge = IGauge(curveGaugeData.gaugeAddress); TokenInterface crv_token = TokenInterface(address(gauge.crv_token())); @@ -172,17 +176,17 @@ contract CurveGauge is CurveGaugeEvent { balances.finalCRVBal = crv_token.balanceOf(address(this)); balances.crvRewardAmt = sub(balances.finalCRVBal, balances.intialCRVBal); + setUint(setId, _amt); setUint(setIdCrv, balances.crvRewardAmt); - emitLogWithdraw(gaugePoolName, _amt, getId, setId); - if (curveGaugeData.rewardToken) { balances.finalRewardBal = rewarded_token.balanceOf(address(this)); balances.rewardAmt = sub(balances.finalRewardBal, balances.intialRewardBal); setUint(setIdReward, balances.rewardAmt); } + emitLogWithdraw(gaugePoolName, _amt, getId, setId); emitLogClaimedReward(gaugePoolName, balances.crvRewardAmt, balances.rewardAmt, setIdCrv, setIdReward); } @@ -198,7 +202,9 @@ contract CurveGauge is CurveGaugeEvent { uint setIdReward ) external payable { ICurveGaugeMapping curveGaugeMapping = ICurveGaugeMapping(getCurveGaugeMappingAddr()); - ICurveGaugeMapping.GaugeData memory curveGaugeData = curveGaugeMapping.gaugeMapping(bytes32(stringToBytes32(gaugePoolName))); + ICurveGaugeMapping.GaugeData memory curveGaugeData = curveGaugeMapping.gaugeMapping( + bytes32(stringToBytes32(gaugePoolName)) + ); require(curveGaugeData.gaugeAddress != address(0), "wrong-gauge-pool-name"); IMintor mintor = IMintor(getCurveMintorAddr()); IGauge gauge = IGauge(curveGaugeData.gaugeAddress); @@ -217,6 +223,7 @@ contract CurveGauge is CurveGaugeEvent { balances.finalCRVBal = crv_token.balanceOf(address(this)); balances.crvRewardAmt = sub(balances.finalCRVBal, balances.intialCRVBal); + setUint(setId, balances.crvRewardAmt); if(curveGaugeData.rewardToken){ From 8e5f68efbd74f78ef5b6ba268fd0089e25690c92 Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Thu, 20 Aug 2020 21:57:37 +0530 Subject: [PATCH 3/3] Removed not used function --- contracts/mapping/curve_gauge_mapping.sol | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/contracts/mapping/curve_gauge_mapping.sol b/contracts/mapping/curve_gauge_mapping.sol index cd6b14f..22863d1 100644 --- a/contracts/mapping/curve_gauge_mapping.sol +++ b/contracts/mapping/curve_gauge_mapping.sol @@ -20,22 +20,6 @@ contract BytesHelper { result := mload(add(str, 32)) } } - - function bytes32ToString(bytes32 _bytes32) internal pure returns (string memory) { - bytes32 _temp; - uint count; - for (uint256 i; i < 32; i++) { - _temp = _bytes32[i]; - if( _temp != bytes32(0)) { - count += 1; - } - } - bytes memory bytesArray = new bytes(count); - for (uint256 i; i < count; i++) { - bytesArray[i] = (_bytes32[i]); - } - return (string(bytesArray)); - } } contract Helpers is BytesHelper {