UniswapV2OracleLibrary.currentBlockTimestamp() (contracts/libraries/UniswapV2OracleLibrary.sol#13-15) uses a weak PRNG: "uint32(block.timestamp % 2 ** 32) (contracts/libraries/UniswapV2OracleLibrary.sol#14)"
MockPair._update(uint256,uint256,uint112,uint112) (contracts/mock/swap/MockPair.sol#78-91) uses a weak PRNG: "blockTimestamp = uint32(block.timestamp % 2 ** 32) (contracts/mock/swap/MockPair.sol#80)"
Do not use block.timestamp, now or blockhash as a source of randomness
Additional information: link
MockRouter.removeLiquidity(address,address,uint256,uint256,uint256,address,uint256) (contracts/mock/swap/MockRouter.sol#112-128) ignores return value by IMockPair(pair).transferFrom(msg.sender,pair,liquidity) (contracts/mock/swap/MockRouter.sol#122)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
DsysAMOMinter.DSYS (contracts/amo/DsysAMOMinter.sol#16) is never initialized. It is used in:
- DsysAMOMinter.mintDsysForAMO(address,uint256) (contracts/amo/DsysAMOMinter.sol#151-172)
- DsysAMOMinter.burnDsysFromAMO(uint256) (contracts/amo/DsysAMOMinter.sol#174-186)
DsysAMOMinter.DSYSShares (contracts/amo/DsysAMOMinter.sol#17) is never initialized. It is used in:
- DsysAMOMinter.mintDsysSharesForAMO(address,uint256) (contracts/amo/DsysAMOMinter.sol#191-204)
- DsysAMOMinter.burnDsysSharesFromAMO(uint256) (contracts/amo/DsysAMOMinter.sol#206-218)
DsysPool.DSYS (contracts/pool/DsysPool.sol#34) is never initialized. It is used in:
- DsysPool.getDsysPrice() (contracts/pool/DsysPool.sol#201-203)
- DsysPool.getDsysSharesPrice() (contracts/pool/DsysPool.sol#205-207)
- DsysPool.buybackAvailableCollat() (contracts/pool/DsysPool.sol#257-276)
- DsysPool.recollatTheoColAvailableE18() (contracts/pool/DsysPool.sol#279-292)
- DsysPool.mintDUSD(uint256,uint256,uint256,bool) (contracts/pool/DsysPool.sol#312-358)
- DsysPool.redeemDUSD(uint256,uint256,uint256,uint256) (contracts/pool/DsysPool.sol#360-417)
DsysPool.DSYSShares (contracts/pool/DsysPool.sol#35) is never initialized. It is used in:
- DsysPool.mintDUSD(uint256,uint256,uint256,bool) (contracts/pool/DsysPool.sol#312-358)
- DsysPool.redeemDUSD(uint256,uint256,uint256,uint256) (contracts/pool/DsysPool.sol#360-417)
- DsysPool.collectRedemption(uint256) (contracts/pool/DsysPool.sol#422-450)
- DsysPool.buyBackFxs(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#454-483)
- DsysPool.recollateralize(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#489-516)
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
MockPair._safeTransfer(address,address,uint256) (contracts/mock/swap/MockPair.sol#49-52) uses a dangerous strict equality:
- require(bool,string)(success && (data.length == 0 || abi.decode(data,(bool))),Mock: TRANSFER_FAILED) (contracts/mock/swap/MockPair.sol#51)
MockPair.mint(address) (contracts/mock/swap/MockPair.sol#115-136) uses a dangerous strict equality:
- _totalSupply == 0 (contracts/mock/swap/MockPair.sol#124)
DsysShares._writeCheckpoint(address,uint32,uint96,uint96) (contracts/token/DsysShares.sol#201-212) uses a dangerous strict equality:
- nCheckpoints > 0 && checkpoints[voter][nCheckpoints - 1].fromBlock == blockNumber (contracts/token/DsysShares.sol#204)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
DsysAMOMinter.addAMO(address,bool) (contracts/amo/DsysAMOMinter.sol#259-281) contains a tautology or contradiction:
- require(bool,string)(dsys_val_e18 >= 0 && collat_val_e18 >= 0,Invalid AMO) (contracts/amo/DsysAMOMinter.sol#263)
DsysPool.addAMOMinter(address) (contracts/pool/DsysPool.sol#537-547) contains a tautology or contradiction:
- require(bool,string)(collat_val_e18 >= 0,Invalid AMO) (contracts/pool/DsysPool.sol#542)
Fix the incorrect comparison by changing the value type or the comparison.
Additional information: link
DsysPool.recollatTheoColAvailableE18() (contracts/pool/DsysPool.sol#279-292) performs a multiplication on the result of a division:
-effective_collateral_ratio = DSYS.globalCollateralValue().mul(PRICE_PRECISION).div(frax_total_supply) (contracts/pool/DsysPool.sol#281)
-effective_collat_e24 = effective_collateral_ratio.mul(frax_total_supply) (contracts/pool/DsysPool.sol#284)
DsysPool.redeemDUSD(uint256,uint256,uint256,uint256) (contracts/pool/DsysPool.sol#360-417) performs a multiplication on the result of a division:
-frax_after_fee = (frax_amount.mul(PRICE_PRECISION.sub(redemption_fee[col_idx]))).div(PRICE_PRECISION) (contracts/pool/DsysPool.sol#375)
-collat_out = frax_after_fee.mul(collateral_prices[col_idx]).div(10 ** (6 + missing_decimals[col_idx])) (contracts/pool/DsysPool.sol#380-382)
DsysPool.redeemDUSD(uint256,uint256,uint256,uint256) (contracts/pool/DsysPool.sol#360-417) performs a multiplication on the result of a division:
-frax_after_fee = (frax_amount.mul(PRICE_PRECISION.sub(redemption_fee[col_idx]))).div(PRICE_PRECISION) (contracts/pool/DsysPool.sol#375)
-fxs_out = frax_after_fee.mul(PRICE_PRECISION).div(getDsysSharesPrice()) (contracts/pool/DsysPool.sol#386-388)
DsysPool.redeemDUSD(uint256,uint256,uint256,uint256) (contracts/pool/DsysPool.sol#360-417) performs a multiplication on the result of a division:
-frax_after_fee = (frax_amount.mul(PRICE_PRECISION.sub(redemption_fee[col_idx]))).div(PRICE_PRECISION) (contracts/pool/DsysPool.sol#375)
-collat_out = frax_after_fee.mul(global_collateral_ratio).mul(collateral_prices[col_idx]).div(10 ** (12 + missing_decimals[col_idx])) (contracts/pool/DsysPool.sol#392-395)
DsysPool.redeemDUSD(uint256,uint256,uint256,uint256) (contracts/pool/DsysPool.sol#360-417) performs a multiplication on the result of a division:
-frax_after_fee = (frax_amount.mul(PRICE_PRECISION.sub(redemption_fee[col_idx]))).div(PRICE_PRECISION) (contracts/pool/DsysPool.sol#375)
-fxs_out = frax_after_fee.mul(PRICE_PRECISION.sub(global_collateral_ratio)).div(getDsysSharesPrice()) (contracts/pool/DsysPool.sol#396-398)
DsysPool.buyBackFxs(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#454-483) performs a multiplication on the result of a division:
-fxs_dollar_value_d18 = fxs_amount.mul(fxs_price).div(PRICE_PRECISION) (contracts/pool/DsysPool.sol#463)
-collateral_equivalent_d18 = fxs_dollar_value_d18.mul(PRICE_PRECISION).div(collateral_prices[col_idx]) (contracts/pool/DsysPool.sol#467)
DsysPool.buyBackFxs(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#454-483) performs a multiplication on the result of a division:
-col_out = collateral_equivalent_d18.div(10 ** missing_decimals[col_idx]) (contracts/pool/DsysPool.sol#468)
-col_out = (col_out.mul(PRICE_PRECISION.sub(buyback_fee[col_idx]))).div(PRICE_PRECISION) (contracts/pool/DsysPool.sol#471)
Consider ordering multiplication before division.
Additional information: link
Reentrancy in MockPair.burn(address) (contracts/mock/swap/MockPair.sol#139-162):
External calls:
- _safeTransfer(_token0,to,amount0) (contracts/mock/swap/MockPair.sol#154)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- _safeTransfer(_token1,to,amount1) (contracts/mock/swap/MockPair.sol#155)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
State variables written after the call(s):
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#159)
- blockTimestampLast = blockTimestamp (contracts/mock/swap/MockPair.sol#89)
- kLast = uint256(reserve0).mul(reserve1) (contracts/mock/swap/MockPair.sol#160)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#159)
- reserve0 = uint112(balance0) (contracts/mock/swap/MockPair.sol#87)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#159)
- reserve1 = uint112(balance1) (contracts/mock/swap/MockPair.sol#88)
Reentrancy in DsysPool.buyBackFxs(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#454-483):
External calls:
- DSYSShares.pool_burn_from(msg.sender,fxs_amount) (contracts/pool/DsysPool.sol#477)
- SafeERC20.safeTransfer(IERC20(collateral_addresses[col_idx]),msg.sender,col_out) (contracts/pool/DsysPool.sol#478)
State variables written after the call(s):
- bbkHourlyCum[curEpochHr()] += collateral_equivalent_d18 (contracts/pool/DsysPool.sol#482)
Reentrancy in MockFactory.createPair(address,address) (contracts/mock/swap/MockFactory.sol#31-46):
External calls:
- IMockPair(pair).initialize(token0,token1) (contracts/mock/swap/MockFactory.sol#41)
State variables written after the call(s):
- getPair[token0][token1] = pair (contracts/mock/swap/MockFactory.sol#42)
- getPair[token1][token0] = pair (contracts/mock/swap/MockFactory.sol#43)
Reentrancy in DsysPool.recollateralize(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#489-516):
External calls:
- SafeERC20.safeTransferFrom(IERC20(collateral_addresses[col_idx]),msg.sender,address(this),collateral_amount) (contracts/pool/DsysPool.sol#510)
- DSYSShares.pool_mint(msg.sender,fxs_out) (contracts/pool/DsysPool.sol#511)
State variables written after the call(s):
- rctHourlyCum[curEpochHr()] += fxs_out (contracts/pool/DsysPool.sol#515)
Reentrancy in MockPair.swap(uint256,uint256,address,bytes) (contracts/mock/swap/MockPair.sol#165-193):
External calls:
- _safeTransfer(_token0,to,amount0Out) (contracts/mock/swap/MockPair.sol#176)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- _safeTransfer(_token1,to,amount1Out) (contracts/mock/swap/MockPair.sol#177)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- IMockCallee(to).gibxCall(msg.sender,amount0Out,amount1Out,data) (contracts/mock/swap/MockPair.sol#178)
State variables written after the call(s):
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#191)
- blockTimestampLast = blockTimestamp (contracts/mock/swap/MockPair.sol#89)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#191)
- reserve0 = uint112(balance0) (contracts/mock/swap/MockPair.sol#87)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#191)
- reserve1 = uint112(balance1) (contracts/mock/swap/MockPair.sol#88)
Apply the check-effects-interactions pattern.
Additional information: link
MockRouter._swap(uint256[],address[],address).i (contracts/mock/swap/MockRouter.sol#222) is a local variable never initialized
FixedPoint.mul(FixedPoint.uq112x112,uint256).z (contracts/libraries/FixedPoint.sol#44) is a local variable never initialized
MockRouter._swapSupportingFeeOnTransferTokens(address[],address).i (contracts/mock/swap/MockRouter.sol#334) is a local variable never initialized
DsysStablecoin.oracle_price(DsysStablecoin.PriceChoice).price_vs_eth (contracts/token/DsysStablecoin.sol#101) is a local variable never initialized
MockLibrary.getAmountsOut(address,uint256,address[]).i (contracts/mock/swap/MockLibrary.sol#72) is a local variable never initialized
Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.
Additional information: link
MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256) (contracts/mock/swap/MockRouter.sol#42-69) ignores return value by IMockFactory(factory).createPair(tokenA,tokenB) (contracts/mock/swap/MockRouter.sol#52)
MockRouter._swap(uint256[],address[],address) (contracts/mock/swap/MockRouter.sol#221-235) ignores return value by ISwapMining(swapMining).swap(msg.sender,input,output,amountOut) (contracts/mock/swap/MockRouter.sol#227)
MockRouter._swapSupportingFeeOnTransferTokens(address[],address) (contracts/mock/swap/MockRouter.sol#333-353) ignores return value by ISwapMining(swapMining).swap(msg.sender,input,output,amountOutput) (contracts/mock/swap/MockRouter.sol#347)
Ensure that all the return values of the function calls are used.
Additional information: link
DsysShares.constructor(string,string,address,address,address)._name (contracts/token/DsysShares.sol#49) shadows:
- ERC20._name (@openzeppelin/contracts/token/ERC20/ERC20.sol#42) (state variable)
DsysShares.constructor(string,string,address,address,address)._symbol (contracts/token/DsysShares.sol#50) shadows:
- ERC20._symbol (@openzeppelin/contracts/token/ERC20/ERC20.sol#43) (state variable)
DsysStablecoin.constructor(string,string,address,address)._name (contracts/token/DsysStablecoin.sol#80) shadows:
- ERC20._name (@openzeppelin/contracts/token/ERC20/ERC20.sol#42) (state variable)
DsysStablecoin.constructor(string,string,address,address)._symbol (contracts/token/DsysStablecoin.sol#81) shadows:
- ERC20._symbol (@openzeppelin/contracts/token/ERC20/ERC20.sol#43) (state variable)
Rename the local variables that shadow another component.
Additional information: link
Variable SafeOwnable._pendingOwner (contracts/core/SafeOwnable.sol#13) is too similar to SafeOwnable.setPendingOwner(address).pendingOwner_ (contracts/core/SafeOwnable.sol#56)
Variable UniswapV2OracleLibrary.currentCumulativePrices(address).price0Cumulative (contracts/libraries/UniswapV2OracleLibrary.sol#20) is too similar to UniswapV2OracleLibrary.currentCumulativePrices(address).price1Cumulative (contracts/libraries/UniswapV2OracleLibrary.sol#20)
Variable MockUniswapPairOracle.price0Average (contracts/mock/MockUniswapPairOracle.sol#19) is too similar to MockUniswapPairOracle.price1Average (contracts/mock/MockUniswapPairOracle.sol#20)
Variable MockUniswapPairOracle.price0Average (contracts/mock/MockUniswapPairOracle.sol#19) is too similar to MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#33)
Variable MockUniswapPairOracle.price0Average (contracts/mock/MockUniswapPairOracle.sol#19) is too similar to MockUniswapPairOracle.setPrice0Average(uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#22)
Variable MockUniswapPairOracle.price0Average (contracts/mock/MockUniswapPairOracle.sol#19) is too similar to MockUniswapPairOracle.setPrice1Average(uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#26)
Variable MockUniswapPairOracle.price0Average (contracts/mock/MockUniswapPairOracle.sol#19) is too similar to MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#34)
Variable MockUniswapPairOracle.price1Average (contracts/mock/MockUniswapPairOracle.sol#20) is too similar to MockUniswapPairOracle.setPrice0Average(uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#22)
Variable MockUniswapPairOracle.price1Average (contracts/mock/MockUniswapPairOracle.sol#20) is too similar to MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#33)
Variable MockUniswapPairOracle.price1Average (contracts/mock/MockUniswapPairOracle.sol#20) is too similar to MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#34)
Variable MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#33) is too similar to MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#34)
Variable MockUniswapPairOracle.setPrice0Average(uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#22) is too similar to MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#34)
Variable MockUniswapPairOracle.price1Average (contracts/mock/MockUniswapPairOracle.sol#20) is too similar to MockUniswapPairOracle.setPrice1Average(uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#26)
Variable MockUniswapPairOracle.constructor(address,address,uint256,uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#33) is too similar to MockUniswapPairOracle.setPrice1Average(uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#26)
Variable MockUniswapPairOracle.setPrice0Average(uint256).priceAAverage (contracts/mock/MockUniswapPairOracle.sol#22) is too similar to MockUniswapPairOracle.setPrice1Average(uint256).priceBAverage (contracts/mock/MockUniswapPairOracle.sol#26)
Variable IMockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/mock/swap/IMockRouter.sol#12) is too similar to IMockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/mock/swap/IMockRouter.sol#13)
Variable MockPair.swap(uint256,uint256,address,bytes).balance0Adjusted (contracts/mock/swap/MockPair.sol#186) is too similar to MockPair.swap(uint256,uint256,address,bytes).balance1Adjusted (contracts/mock/swap/MockPair.sol#187)
Variable MockPair.price0CumulativeLast (contracts/mock/swap/MockPair.sol#31) is too similar to MockPair.price1CumulativeLast (contracts/mock/swap/MockPair.sol#32)
Variable MockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/mock/swap/MockRouter.sol#73) is too similar to MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountBDesired (contracts/mock/swap/MockRouter.sol#46)
Variable MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountADesired (contracts/mock/swap/MockRouter.sol#45) is too similar to MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountBDesired (contracts/mock/swap/MockRouter.sol#46)
Variable MockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/mock/swap/MockRouter.sol#73) is too similar to MockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/mock/swap/MockRouter.sol#74)
Variable MockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/mock/swap/MockRouter.sol#73) is too similar to IMockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/mock/swap/IMockRouter.sol#13)
Variable MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountADesired (contracts/mock/swap/MockRouter.sol#45) is too similar to IMockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/mock/swap/IMockRouter.sol#13)
Variable MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountAOptimal (contracts/mock/swap/MockRouter.sol#63) is too similar to MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountBOptimal (contracts/mock/swap/MockRouter.sol#58)
Variable IMockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/mock/swap/IMockRouter.sol#12) is too similar to MockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/mock/swap/MockRouter.sol#74)
Variable MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountADesired (contracts/mock/swap/MockRouter.sol#45) is too similar to MockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (contracts/mock/swap/MockRouter.sol#74)
Variable IMockRouter.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (contracts/mock/swap/IMockRouter.sol#12) is too similar to MockRouter._addLiquidity(address,address,uint256,uint256,uint256,uint256).amountBDesired (contracts/mock/swap/MockRouter.sol#46)
Variable UniswapPairOracle.price0Average (contracts/oracle/UniswapPairOracle.sol#29) is too similar to UniswapPairOracle.price1Average (contracts/oracle/UniswapPairOracle.sol#30)
Variable UniswapPairOracle.update().price0Cumulative (contracts/oracle/UniswapPairOracle.sol#83) is too similar to UniswapPairOracle.update().price1Cumulative (contracts/oracle/UniswapPairOracle.sol#83)
Variable UniswapPairOracle.price0CumulativeLast (contracts/oracle/UniswapPairOracle.sol#26) is too similar to UniswapPairOracle.price1CumulativeLast (contracts/oracle/UniswapPairOracle.sol#27)
Variable DsysStablecoin.COLLATERAL_RATIO_PAUSER (contracts/token/DsysStablecoin.sol#52) is too similar to DsysStablecoin.collateral_ratio_paused (contracts/token/DsysStablecoin.sol#53)
Prevent variables from having similar names.
Additional information: link
DsysAMOMinter.setTimelock(address) (contracts/amo/DsysAMOMinter.sol#304-307) should emit an event for:
- timelock_address = new_timelock (contracts/amo/DsysAMOMinter.sol#306)
UniswapPairOracle.setTimelock(address) (contracts/oracle/UniswapPairOracle.sol#59-61) should emit an event for:
- timelock_address = _timelock_address (contracts/oracle/UniswapPairOracle.sol#60)
DsysShares.setTimelock(address) (contracts/token/DsysShares.sol#68-70) should emit an event for:
- timelock_address = new_timelock (contracts/token/DsysShares.sol#69)
DsysShares.setOwner(address) (contracts/token/DsysShares.sol#80-82) should emit an event for:
- owner_address = _owner_address (contracts/token/DsysShares.sol#81)
DsysStablecoin.setOwner(address) (contracts/token/DsysStablecoin.sol#219-221) should emit an event for:
- owner_address = _owner_address (contracts/token/DsysStablecoin.sol#220)
- owner_address = _owner_address (contracts/token/DsysStablecoin.sol#220)
DsysStablecoin.setTimelock(address) (contracts/token/DsysStablecoin.sol#252-254) should emit an event for:
- timelock_address = new_timelock (contracts/token/DsysStablecoin.sol#253)
- timelock_address = new_timelock (contracts/token/DsysStablecoin.sol#253)
DsysStablecoin.setController(address) (contracts/token/DsysStablecoin.sol#256-258) should emit an event for:
- controller_address = _controller_address (contracts/token/DsysStablecoin.sol#257)
Emit an event for critical parameter changes.
Additional information: link
DsysAMOMinter.mintDsysForAMO(address,uint256) (contracts/amo/DsysAMOMinter.sol#151-172) should emit an event for:
- dsys_mint_sum += dsys_amt_i256 (contracts/amo/DsysAMOMinter.sol#157)
DsysAMOMinter.burnDsysFromAMO(uint256) (contracts/amo/DsysAMOMinter.sol#174-186) should emit an event for:
- dsys_mint_sum -= dsys_amt_i256 (contracts/amo/DsysAMOMinter.sol#182)
DsysAMOMinter.giveCollatToAMO(address,uint256) (contracts/amo/DsysAMOMinter.sol#224-242) should emit an event for:
- collat_borrowed_sum += collat_amount_i256 (contracts/amo/DsysAMOMinter.sol#232)
DsysAMOMinter.receiveCollatFromAMO(uint256) (contracts/amo/DsysAMOMinter.sol#244-256) should emit an event for:
- collat_borrowed_sum -= collat_amt_i256 (contracts/amo/DsysAMOMinter.sol#252)
UniswapPairOracle.setPeriod(uint256) (contracts/oracle/UniswapPairOracle.sol#63-65) should emit an event for:
- PERIOD = _period (contracts/oracle/UniswapPairOracle.sol#64)
UniswapPairOracle.setConsultLeniency(uint256) (contracts/oracle/UniswapPairOracle.sol#67-69) should emit an event for:
- CONSULT_LENIENCY = _consult_leniency (contracts/oracle/UniswapPairOracle.sol#68)
DsysStablecoin.setRedemptionFee(uint256) (contracts/token/DsysStablecoin.sol#223-225) should emit an event for:
- redemption_fee = red_fee (contracts/token/DsysStablecoin.sol#224)
DsysStablecoin.setMintingFee(uint256) (contracts/token/DsysStablecoin.sol#227-229) should emit an event for:
- minting_fee = min_fee (contracts/token/DsysStablecoin.sol#228)
DsysStablecoin.setStep(uint256) (contracts/token/DsysStablecoin.sol#231-233) should emit an event for:
- step = _new_step (contracts/token/DsysStablecoin.sol#232)
DsysStablecoin.setPriceTarget(uint256) (contracts/token/DsysStablecoin.sol#235-237) should emit an event for:
- price_target = _new_price_target (contracts/token/DsysStablecoin.sol#236)
DsysStablecoin.setRefreshCooldown(uint256) (contracts/token/DsysStablecoin.sol#239-241) should emit an event for:
- refresh_cooldown = _new_cooldown (contracts/token/DsysStablecoin.sol#240)
DsysStablecoin.setETHUSDOracle(address) (contracts/token/DsysStablecoin.sol#247-250) should emit an event for:
- eth_usd_pricer_decimals = eth_usd_pricer.getDecimals() (contracts/token/DsysStablecoin.sol#249)
DsysStablecoin.setPriceBand(uint256) (contracts/token/DsysStablecoin.sol#260-262) should emit an event for:
- price_band = _price_band (contracts/token/DsysStablecoin.sol#261)
Emit an event for critical parameter changes.
Additional information: link
DsysAMOMinter.constructor(address,address,address,address,address)._custodian_address (contracts/amo/DsysAMOMinter.sol#70) lacks a zero-check on :
- custodian_address = _custodian_address (contracts/amo/DsysAMOMinter.sol#75)
DsysAMOMinter.constructor(address,address,address,address,address)._timelock_address (contracts/amo/DsysAMOMinter.sol#71) lacks a zero-check on :
- timelock_address = _timelock_address (contracts/amo/DsysAMOMinter.sol#76)
DsysAMOMinter.constructor(address,address,address,address,address)._collateral_address (contracts/amo/DsysAMOMinter.sol#72) lacks a zero-check on :
- collateral_address = _collateral_address (contracts/amo/DsysAMOMinter.sol#82)
DsysAMOMinter.execute(address,uint256,bytes)._to (contracts/amo/DsysAMOMinter.sol#353) lacks a zero-check on :
- (success,result) = _to.call{value: _value}(_data) (contracts/amo/DsysAMOMinter.sol#357)
MockUniswapPairOracle.constructor(address,address,uint256,uint256).tokenA (contracts/mock/MockUniswapPairOracle.sol#31) lacks a zero-check on :
- token0 = tokenA (contracts/mock/MockUniswapPairOracle.sol#36)
MockUniswapPairOracle.constructor(address,address,uint256,uint256).tokenB (contracts/mock/MockUniswapPairOracle.sol#32) lacks a zero-check on :
- token1 = tokenB (contracts/mock/MockUniswapPairOracle.sol#37)
MockFactory.constructor(address)._feeToSetter (contracts/mock/swap/MockFactory.sol#19) lacks a zero-check on :
- feeToSetter = _feeToSetter (contracts/mock/swap/MockFactory.sol#20)
MockFactory.setFeeTo(address)._feeTo (contracts/mock/swap/MockFactory.sol#48) lacks a zero-check on :
- feeTo = _feeTo (contracts/mock/swap/MockFactory.sol#50)
MockFactory.setFeeToSetter(address)._feeToSetter (contracts/mock/swap/MockFactory.sol#53) lacks a zero-check on :
- feeToSetter = _feeToSetter (contracts/mock/swap/MockFactory.sol#55)
MockPair.initialize(address,address)._token0 (contracts/mock/swap/MockPair.sol#71) lacks a zero-check on :
- token0 = _token0 (contracts/mock/swap/MockPair.sol#73)
MockPair.initialize(address,address)._token1 (contracts/mock/swap/MockPair.sol#71) lacks a zero-check on :
- token1 = _token1 (contracts/mock/swap/MockPair.sol#74)
MockRouter.setSwapMining(address)._swapMining (contracts/mock/swap/MockRouter.sol#30) lacks a zero-check on :
- swapMining = _swapMining (contracts/mock/swap/MockRouter.sol#31)
UniswapPairOracle.constructor(address,address,address,address,address)._timelock_address (contracts/oracle/UniswapPairOracle.sol#43) lacks a zero-check on :
- timelock_address = _timelock_address (contracts/oracle/UniswapPairOracle.sol#56)
UniswapPairOracle.setTimelock(address)._timelock_address (contracts/oracle/UniswapPairOracle.sol#59) lacks a zero-check on :
- timelock_address = _timelock_address (contracts/oracle/UniswapPairOracle.sol#60)
DsysPool.constructor(address,address,address,address[],uint256[],uint256[])._timelock_address (contracts/pool/DsysPool.sol#106) lacks a zero-check on :
- timelock_address = _timelock_address (contracts/pool/DsysPool.sol#112)
DsysPool.constructor(address,address,address,address[],uint256[],uint256[])._custodian_address (contracts/pool/DsysPool.sol#105) lacks a zero-check on :
- custodian_address = _custodian_address (contracts/pool/DsysPool.sol#113)
DsysPool.setCustodian(address).new_custodian (contracts/pool/DsysPool.sol#603) lacks a zero-check on :
- custodian_address = new_custodian (contracts/pool/DsysPool.sol#604)
DsysPool.setTimelock(address).new_timelock (contracts/pool/DsysPool.sol#609) lacks a zero-check on :
- timelock_address = new_timelock (contracts/pool/DsysPool.sol#610)
DsysShares.constructor(string,string,address,address,address)._owner_address (contracts/token/DsysShares.sol#52) lacks a zero-check on :
- owner_address = _owner_address (contracts/token/DsysShares.sol#55)
DsysShares.constructor(string,string,address,address,address)._oracle_address (contracts/token/DsysShares.sol#51) lacks a zero-check on :
- oracle_address = _oracle_address (contracts/token/DsysShares.sol#56)
DsysShares.constructor(string,string,address,address,address)._timelock_address (contracts/token/DsysShares.sol#53) lacks a zero-check on :
- timelock_address = _timelock_address (contracts/token/DsysShares.sol#57)
DsysShares.setOracle(address).new_oracle (contracts/token/DsysShares.sol#64) lacks a zero-check on :
- oracle_address = new_oracle (contracts/token/DsysShares.sol#65)
DsysShares.setTimelock(address).new_timelock (contracts/token/DsysShares.sol#68) lacks a zero-check on :
- timelock_address = new_timelock (contracts/token/DsysShares.sol#69)
DsysShares.setOwner(address)._owner_address (contracts/token/DsysShares.sol#80) lacks a zero-check on :
- owner_address = _owner_address (contracts/token/DsysShares.sol#81)
DsysStablecoin.constructor(string,string,address,address)._creator_address (contracts/token/DsysStablecoin.sol#82) lacks a zero-check on :
- creator_address = _creator_address (contracts/token/DsysStablecoin.sol#85)
- owner_address = _creator_address (contracts/token/DsysStablecoin.sol#87)
DsysStablecoin.constructor(string,string,address,address)._timelock_address (contracts/token/DsysStablecoin.sol#83) lacks a zero-check on :
- timelock_address = _timelock_address (contracts/token/DsysStablecoin.sol#86)
DsysStablecoin.setOwner(address)._owner_address (contracts/token/DsysStablecoin.sol#219) lacks a zero-check on :
- owner_address = _owner_address (contracts/token/DsysStablecoin.sol#220)
DsysStablecoin.setDsysShareAddress(address)._dsys_share_address (contracts/token/DsysStablecoin.sol#243) lacks a zero-check on :
- dsys_share_address = _dsys_share_address (contracts/token/DsysStablecoin.sol#244)
DsysStablecoin.setTimelock(address).new_timelock (contracts/token/DsysStablecoin.sol#252) lacks a zero-check on :
- timelock_address = new_timelock (contracts/token/DsysStablecoin.sol#253)
DsysStablecoin.setController(address)._controller_address (contracts/token/DsysStablecoin.sol#256) lacks a zero-check on :
- controller_address = _controller_address (contracts/token/DsysStablecoin.sol#257)
DsysStablecoin.setDsysEthOracle(address,address)._dsys_oracle_addr (contracts/token/DsysStablecoin.sol#265) lacks a zero-check on :
- dsys_eth_oracle_address = _dsys_oracle_addr (contracts/token/DsysStablecoin.sol#266)
DsysStablecoin.setDsysEthOracle(address,address)._weth_address (contracts/token/DsysStablecoin.sol#265) lacks a zero-check on :
- weth_address = _weth_address (contracts/token/DsysStablecoin.sol#268)
DsysStablecoin.setDsysShareEthOracle(address,address)._dsys_share_oracle_addr (contracts/token/DsysStablecoin.sol#272) lacks a zero-check on :
- dsys_share_eth_oracle_address = _dsys_share_oracle_addr (contracts/token/DsysStablecoin.sol#273)
DsysStablecoin.setDsysShareEthOracle(address,address)._weth_address (contracts/token/DsysStablecoin.sol#272) lacks a zero-check on :
- weth_address = _weth_address (contracts/token/DsysStablecoin.sol#275)
Check that the address is not zero.
Additional information: link
DsysAMOMinter.syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#127-141) has external calls inside a loop: (dsys_val_e18,collat_val_e18) = IAMO(amo_address).dollarBalances() (contracts/amo/DsysAMOMinter.sol#134)
DsysPool.constructor(address,address,address,address[],uint256[],uint256[]) (contracts/pool/DsysPool.sol#103-151) has external calls inside a loop: missing_decimals.push(uint256(18).sub(ERC20(_collateral_addresses[i]).decimals())) (contracts/pool/DsysPool.sol#125)
DsysPool.constructor(address,address,address,address[],uint256[],uint256[]) (contracts/pool/DsysPool.sol#103-151) has external calls inside a loop: collateral_symbols.push(ERC20(_collateral_addresses[i]).symbol()) (contracts/pool/DsysPool.sol#128)
DsysPool.freeCollatBalance(uint256) (contracts/pool/DsysPool.sol#215-217) has external calls inside a loop: IERC20(collateral_addresses[col_idx]).balanceOf(address(this)).sub(unclaimed_pool_collateral[col_idx]) (contracts/pool/DsysPool.sol#216)
DsysStablecoin.globalCollateralValue() (contracts/token/DsysStablecoin.sol#130-141) has external calls inside a loop: total_collateral_value_d18 = total_collateral_value_d18.add(IDsysPool(pools_array[i]).collatDollarBalance()) (contracts/token/DsysStablecoin.sol#136)
Favor pull over push strategy for external calls.
Additional information: link
Reentrancy in MockPair.burn(address) (contracts/mock/swap/MockPair.sol#139-162):
External calls:
- _safeTransfer(_token0,to,amount0) (contracts/mock/swap/MockPair.sol#154)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- _safeTransfer(_token1,to,amount1) (contracts/mock/swap/MockPair.sol#155)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
State variables written after the call(s):
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#159)
- price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed (contracts/mock/swap/MockPair.sol#84)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#159)
- price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed (contracts/mock/swap/MockPair.sol#85)
Reentrancy in DsysAMOMinter.burnDsysFromAMO(uint256) (contracts/amo/DsysAMOMinter.sol#174-186):
External calls:
- DSYS.pool_burn_from(msg.sender,dsys_amount) (contracts/amo/DsysAMOMinter.sol#178)
State variables written after the call(s):
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#185)
- collatDollarBalanceStored = total_collateral_value_d18 (contracts/amo/DsysAMOMinter.sol#140)
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#185)
- dsysDollarBalanceStored = total_dsys_value_d18 (contracts/amo/DsysAMOMinter.sol#139)
- dsys_mint_balances[msg.sender] -= dsys_amt_i256 (contracts/amo/DsysAMOMinter.sol#181)
- dsys_mint_sum -= dsys_amt_i256 (contracts/amo/DsysAMOMinter.sol#182)
Reentrancy in DsysAMOMinter.burnDsysSharesFromAMO(uint256) (contracts/amo/DsysAMOMinter.sol#206-218):
External calls:
- DSYSShares.pool_burn_from(msg.sender,dsys_shares_amount) (contracts/amo/DsysAMOMinter.sol#210)
State variables written after the call(s):
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#217)
- collatDollarBalanceStored = total_collateral_value_d18 (contracts/amo/DsysAMOMinter.sol#140)
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#217)
- dsysDollarBalanceStored = total_dsys_value_d18 (contracts/amo/DsysAMOMinter.sol#139)
- dsys_shares_mint_balances[msg.sender] -= dsys_shares_amt_i256 (contracts/amo/DsysAMOMinter.sol#213)
- dsys_shares_mint_sum -= dsys_shares_amt_i256 (contracts/amo/DsysAMOMinter.sol#214)
Reentrancy in MockFactory.createPair(address,address) (contracts/mock/swap/MockFactory.sol#31-46):
External calls:
- IMockPair(pair).initialize(token0,token1) (contracts/mock/swap/MockFactory.sol#41)
State variables written after the call(s):
- allPairs.push(pair) (contracts/mock/swap/MockFactory.sol#44)
Reentrancy in DsysAMOMinter.giveCollatToAMO(address,uint256) (contracts/amo/DsysAMOMinter.sol#224-242):
External calls:
- pool.amoMinterBorrow(collat_amount) (contracts/amo/DsysAMOMinter.sol#235)
- SafeERC20.safeTransfer(IERC20(collateral_address),destination_amo,collat_amount) (contracts/amo/DsysAMOMinter.sol#238)
State variables written after the call(s):
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#241)
- collatDollarBalanceStored = total_collateral_value_d18 (contracts/amo/DsysAMOMinter.sol#140)
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#241)
- dsysDollarBalanceStored = total_dsys_value_d18 (contracts/amo/DsysAMOMinter.sol#139)
Reentrancy in DsysAMOMinter.mintDsysForAMO(address,uint256) (contracts/amo/DsysAMOMinter.sol#151-172):
External calls:
- DSYS.pool_mint(destination_amo,frax_amount) (contracts/amo/DsysAMOMinter.sol#168)
State variables written after the call(s):
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#171)
- collatDollarBalanceStored = total_collateral_value_d18 (contracts/amo/DsysAMOMinter.sol#140)
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#171)
- dsysDollarBalanceStored = total_dsys_value_d18 (contracts/amo/DsysAMOMinter.sol#139)
Reentrancy in DsysAMOMinter.mintDsysSharesForAMO(address,uint256) (contracts/amo/DsysAMOMinter.sol#191-204):
External calls:
- DSYSShares.pool_mint(destination_amo,dsys_shares_amount) (contracts/amo/DsysAMOMinter.sol#200)
State variables written after the call(s):
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#203)
- collatDollarBalanceStored = total_collateral_value_d18 (contracts/amo/DsysAMOMinter.sol#140)
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#203)
- dsysDollarBalanceStored = total_dsys_value_d18 (contracts/amo/DsysAMOMinter.sol#139)
Reentrancy in DsysAMOMinter.receiveCollatFromAMO(uint256) (contracts/amo/DsysAMOMinter.sol#244-256):
External calls:
- SafeERC20.safeTransferFrom(IERC20(collateral_address),msg.sender,address(pool),usdc_amount) (contracts/amo/DsysAMOMinter.sol#248)
State variables written after the call(s):
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#255)
- collatDollarBalanceStored = total_collateral_value_d18 (contracts/amo/DsysAMOMinter.sol#140)
- collat_borrowed_balances[msg.sender] -= collat_amt_i256 (contracts/amo/DsysAMOMinter.sol#251)
- collat_borrowed_sum -= collat_amt_i256 (contracts/amo/DsysAMOMinter.sol#252)
- syncDollarBalances() (contracts/amo/DsysAMOMinter.sol#255)
- dsysDollarBalanceStored = total_dsys_value_d18 (contracts/amo/DsysAMOMinter.sol#139)
Reentrancy in MockPair.swap(uint256,uint256,address,bytes) (contracts/mock/swap/MockPair.sol#165-193):
External calls:
- _safeTransfer(_token0,to,amount0Out) (contracts/mock/swap/MockPair.sol#176)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- _safeTransfer(_token1,to,amount1Out) (contracts/mock/swap/MockPair.sol#177)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- IMockCallee(to).gibxCall(msg.sender,amount0Out,amount1Out,data) (contracts/mock/swap/MockPair.sol#178)
State variables written after the call(s):
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#191)
- price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed (contracts/mock/swap/MockPair.sol#84)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#191)
- price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed (contracts/mock/swap/MockPair.sol#85)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in MockPair.burn(address) (contracts/mock/swap/MockPair.sol#139-162):
External calls:
- _safeTransfer(_token0,to,amount0) (contracts/mock/swap/MockPair.sol#154)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- _safeTransfer(_token1,to,amount1) (contracts/mock/swap/MockPair.sol#155)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
Event emitted after the call(s):
- Burn(msg.sender,amount0,amount1,to) (contracts/mock/swap/MockPair.sol#161)
- Sync(reserve0,reserve1) (contracts/mock/swap/MockPair.sol#90)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#159)
Reentrancy in MockFactory.createPair(address,address) (contracts/mock/swap/MockFactory.sol#31-46):
External calls:
- IMockPair(pair).initialize(token0,token1) (contracts/mock/swap/MockFactory.sol#41)
Event emitted after the call(s):
- PairCreated(token0,token1,pair,allPairs.length) (contracts/mock/swap/MockFactory.sol#45)
Reentrancy in DsysAMOMinter.recoverERC20(address,uint256) (contracts/amo/DsysAMOMinter.sol#344-349):
External calls:
- SafeERC20.safeTransfer(IERC20(tokenAddress),owner(),tokenAmount) (contracts/amo/DsysAMOMinter.sol#346)
Event emitted after the call(s):
- Recovered(tokenAddress,tokenAmount) (contracts/amo/DsysAMOMinter.sol#348)
Reentrancy in MockPair.swap(uint256,uint256,address,bytes) (contracts/mock/swap/MockPair.sol#165-193):
External calls:
- _safeTransfer(_token0,to,amount0Out) (contracts/mock/swap/MockPair.sol#176)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- _safeTransfer(_token1,to,amount1Out) (contracts/mock/swap/MockPair.sol#177)
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
- IMockCallee(to).gibxCall(msg.sender,amount0Out,amount1Out,data) (contracts/mock/swap/MockPair.sol#178)
Event emitted after the call(s):
- Swap(msg.sender,amount0In,amount1In,amount0Out,amount1Out,to) (contracts/mock/swap/MockPair.sol#192)
- Sync(reserve0,reserve1) (contracts/mock/swap/MockPair.sol#90)
- _update(balance0,balance1,_reserve0,_reserve1) (contracts/mock/swap/MockPair.sol#191)
Apply the check-effects-interactions pattern.
Additional information: link
DsysAMOMinter.slitherConstructorVariables() (contracts/amo/DsysAMOMinter.sol#14-364) uses literals with too many digits:
- collat_borrow_cap = int256(10000000e6) (contracts/amo/DsysAMOMinter.sol#35)
DsysAMOMinter.slitherConstructorVariables() (contracts/amo/DsysAMOMinter.sol#14-364) uses literals with too many digits:
- dsys_mint_cap = int256(100000000e18) (contracts/amo/DsysAMOMinter.sol#38)
DsysAMOMinter.slitherConstructorVariables() (contracts/amo/DsysAMOMinter.sol#14-364) uses literals with too many digits:
- dsys_shares_mint_cap = int256(100000000e18) (contracts/amo/DsysAMOMinter.sol#39)
MockFactory.createPair(address,address) (contracts/mock/swap/MockFactory.sol#31-46) uses literals with too many digits:
- bytecode = type()(MockPair).creationCode (contracts/mock/swap/MockFactory.sol#36)
MockFactory.slitherConstructorConstantVariables() (contracts/mock/swap/MockFactory.sol#8-57) uses literals with too many digits:
- INIT_CODE_PAIR_HASH = keccak256(bytes)(abi.encodePacked(type()(MockPair).creationCode)) (contracts/mock/swap/MockFactory.sol#9)
EBIT.slitherConstructorConstantVariables() (contracts/token/DsysNToken.sol#7-16) uses literals with too many digits:
- MAX_SUPPLY = 250000000000 * 10 ** 12 (contracts/token/DsysNToken.sol#9)
DsysShares.slitherConstructorConstantVariables() (contracts/token/DsysShares.sol#13-249) uses literals with too many digits:
- genesis_supply = 100000000e18 (contracts/token/DsysShares.sol#16)
DsysStablecoin.constructor(string,string,address,address) (contracts/token/DsysStablecoin.sol#79-97) uses literals with too many digits:
- global_collateral_ratio = 1000000 (contracts/token/DsysStablecoin.sol#93)
DsysStablecoin.constructor(string,string,address,address) (contracts/token/DsysStablecoin.sol#79-97) uses literals with too many digits:
- price_target = 1000000 (contracts/token/DsysStablecoin.sol#95)
DsysStablecoin.refreshCollateralRatio() (contracts/token/DsysStablecoin.sol#160-182) uses literals with too many digits:
- global_collateral_ratio.add(step) >= 1000000 (contracts/token/DsysStablecoin.sol#174)
DsysStablecoin.refreshCollateralRatio() (contracts/token/DsysStablecoin.sol#160-182) uses literals with too many digits:
- global_collateral_ratio = 1000000 (contracts/token/DsysStablecoin.sol#175)
DsysStablecoin.slitherConstructorConstantVariables() (contracts/token/DsysStablecoin.sol#15-282) uses literals with too many digits:
- genesis_supply = 2000000e18 (contracts/token/DsysStablecoin.sol#37)
console.slitherConstructorConstantVariables() (hardhat/console.sol#4-1532) uses literals with too many digits:
- CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67) (hardhat/console.sol#5)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
UniswapV2OracleLibrary.currentCumulativePrices(address) (contracts/libraries/UniswapV2OracleLibrary.sol#18-36) uses timestamp for comparisons
Dangerous comparisons:
- blockTimestampLast != blockTimestamp (contracts/libraries/UniswapV2OracleLibrary.sol#27)
MockERC20.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (contracts/mock/swap/MockERC20.sol#79-91) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(deadline >= block.timestamp,Mock: EXPIRED) (contracts/mock/swap/MockERC20.sol#80)
MockPair._update(uint256,uint256,uint112,uint112) (contracts/mock/swap/MockPair.sol#78-91) uses timestamp for comparisons
Dangerous comparisons:
- timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0 (contracts/mock/swap/MockPair.sol#82)
DsysStablecoin.refreshCollateralRatio() (contracts/token/DsysStablecoin.sol#160-182) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp - last_call_time >= refresh_cooldown,Must wait for the refresh cooldown since last refresh) (contracts/token/DsysStablecoin.sol#163)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (@openzeppelin/contracts/utils/Address.sol#26-35) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#33)
Address._verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#171-188) uses assembly
- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#180-183)
MockERC20.constructor() (contracts/mock/swap/MockERC20.sol#22-36) uses assembly
- INLINE ASM (contracts/mock/swap/MockERC20.sol#24-26)
MockFactory.createPair(address,address) (contracts/mock/swap/MockFactory.sol#31-46) uses assembly
- INLINE ASM (contracts/mock/swap/MockFactory.sol#38-40)
DsysShares.getChainId() (contracts/token/DsysShares.sol#235-239) uses assembly
- INLINE ASM (contracts/token/DsysShares.sol#237)
console._sendLogPayload(bytes) (hardhat/console.sol#7-14) uses assembly
- INLINE ASM (hardhat/console.sol#10-13)
Do not use evm assembly.
Additional information: link
DsysAMOMinter.addAMO(address,bool) (contracts/amo/DsysAMOMinter.sol#259-281) compares to a boolean constant:
-require(bool,string)(amos[amo_address] == false,Address already exists) (contracts/amo/DsysAMOMinter.sol#265)
DsysAMOMinter.removeAMO(address,bool) (contracts/amo/DsysAMOMinter.sol#284-302) compares to a boolean constant:
-require(bool,string)(amos[amo_address] == true,Address nonexistant) (contracts/amo/DsysAMOMinter.sol#286)
DsysPool.mintDUSD(uint256,uint256,uint256,bool) (contracts/pool/DsysPool.sol#312-358) compares to a boolean constant:
-require(bool,string)(mintPaused[col_idx] == false,Minting is paused) (contracts/pool/DsysPool.sol#322)
DsysPool.redeemDUSD(uint256,uint256,uint256,uint256) (contracts/pool/DsysPool.sol#360-417) compares to a boolean constant:
-require(bool,string)(redeemPaused[col_idx] == false,Redeeming is paused) (contracts/pool/DsysPool.sol#369)
DsysPool.collectRedemption(uint256) (contracts/pool/DsysPool.sol#422-450) compares to a boolean constant:
-require(bool,string)(redeemPaused[col_idx] == false,Redeeming is paused) (contracts/pool/DsysPool.sol#423)
DsysPool.buyBackFxs(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#454-483) compares to a boolean constant:
-require(bool,string)(buyBackPaused[col_idx] == false,Buyback is paused) (contracts/pool/DsysPool.sol#455)
DsysPool.recollateralize(uint256,uint256,uint256) (contracts/pool/DsysPool.sol#489-516) compares to a boolean constant:
-require(bool,string)(recollateralizePaused[col_idx] == false,Recollat is paused) (contracts/pool/DsysPool.sol#490)
DsysShares.onlyPools() (contracts/token/DsysShares.sol#38-41) compares to a boolean constant:
-require(bool,string)(DSYS.pools(msg.sender) == true,Only frax pools can mint new FRAX) (contracts/token/DsysShares.sol#39)
DsysStablecoin.refreshCollateralRatio() (contracts/token/DsysStablecoin.sol#160-182) compares to a boolean constant:
-require(bool,string)(collateral_ratio_paused == false,Collateral Ratio has been paused) (contracts/token/DsysStablecoin.sol#161)
DsysStablecoin.addPool(address) (contracts/token/DsysStablecoin.sol#197-201) compares to a boolean constant:
-require(bool,string)(pools[pool_address] == false,address already exists) (contracts/token/DsysStablecoin.sol#198)
DsysStablecoin.removePool(address) (contracts/token/DsysStablecoin.sol#204-217) compares to a boolean constant:
-require(bool,string)(pools[pool_address] == true,address doesn't exist already) (contracts/token/DsysStablecoin.sol#205)
DsysStablecoin.onlyPools() (contracts/token/DsysStablecoin.sol#60-63) compares to a boolean constant:
-require(bool,string)(pools[msg.sender] == true,Only frax pools can call this function) (contracts/token/DsysStablecoin.sol#61)
DsysStablecoin.onlyByOwnerGovernanceOrPool() (contracts/token/DsysStablecoin.sol#70-77) compares to a boolean constant:
-require(bool,string)(msg.sender == owner_address || msg.sender == timelock_address || pools[msg.sender] == true,You are not the owner, the governance timelock, or a pool) (contracts/token/DsysStablecoin.sol#71-75)
Remove the equality to the boolean constant.
Additional information: link
Different versions of Solidity is used:
- Version used: ['0.7.6', '>=0.4.22<0.9.0', '>=0.6.0<0.8.0', '>=0.6.11', '>=0.6.2<0.8.0', '>=0.7.6']
- >=0.6.0<0.8.0 (@openzeppelin/contracts/access/AccessControl.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts/math/Math.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts/math/SafeMath.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts/token/ERC20/SafeERC20.sol#3)
- >=0.6.2<0.8.0 (@openzeppelin/contracts/utils/Address.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts/utils/Context.sol#3)
- >=0.6.0<0.8.0 (@openzeppelin/contracts/utils/EnumerableSet.sol#3)
- >=0.7.6 (contracts/amo/DsysAMOMinter.sol#3)
- 0.7.6 (contracts/core/SafeOwnable.sol#3)
- 0.7.6 (contracts/interfaces/IAMO.sol#3)
- 0.7.6 (contracts/interfaces/IChainlinkPriceConsumer.sol#3)
- >=0.6.11 (contracts/interfaces/IDsysAMOMinter.sol#3)
- >=0.7.6 (contracts/interfaces/IDsysPool.sol#3)
- 0.7.6 (contracts/interfaces/IDsysShares.sol#3)
- 0.7.6 (contracts/interfaces/IDsysStablecoin.sol#3)
- 0.7.6 (contracts/interfaces/IUniswapPairOracle.sol#3)
- >=0.7.6 (contracts/interfaces/IUniswapV2Factory.sol#3)
- 0.7.6 (contracts/interfaces/IUniswapV2Pair.sol#3)
- 0.7.6 (contracts/interfaces/IWETH.sol#3)
- 0.7.6 (contracts/libraries/Babylonian.sol#3)
- 0.7.6 (contracts/libraries/FixedPoint.sol#3)
- 0.7.6 (contracts/libraries/UniswapV2Library.sol#3)
- 0.7.6 (contracts/libraries/UniswapV2OracleLibrary.sol#3)
- 0.7.6 (contracts/mock/MockToken.sol#3)
- 0.7.6 (contracts/mock/MockUniswapPairOracle.sol#3)
- 0.7.6 (contracts/mock/swap/IMockCallee.sol#3)
- 0.7.6 (contracts/mock/swap/IMockERC20.sol#3)
- 0.7.6 (contracts/mock/swap/IMockFactory.sol#3)
- 0.7.6 (contracts/mock/swap/IMockPair.sol#3)
- 0.7.6 (contracts/mock/swap/IMockRouter.sol#3)
- 0.7.6 (contracts/mock/swap/ISwapMining.sol#3)
- 0.7.6 (contracts/mock/swap/MockERC20.sol#3)
- 0.7.6 (contracts/mock/swap/MockFactory.sol#3)
- 0.7.6 (contracts/mock/swap/MockLibrary.sol#3)
- 0.7.6 (contracts/mock/swap/MockPair.sol#3)
- 0.7.6 (contracts/mock/swap/MockRouter.sol#3)
- 0.7.6 (contracts/mock/swap/SqrtMath.sol#3)
- 0.7.6 (contracts/mock/swap/TransferHelper.sol#3)
- 0.7.6 (contracts/mock/swap/UQ112x112.sol#3)
- 0.7.6 (contracts/oracle/UniswapPairOracle.sol#3)
- 0.7.6 (contracts/pool/DsysPool.sol#3)
- v2 (contracts/pool/DsysPool.sol#4)
- 0.7.6 (contracts/token/DsysNToken.sol#3)
- 0.7.6 (contracts/token/DsysShares.sol#3)
- 0.7.6 (contracts/token/DsysStablecoin.sol#3)
- ABIEncoderV2 (contracts/token/DsysStablecoin.sol#4)
- >=0.4.22<0.9.0 (hardhat/console.sol#2)
Use one Solidity version.
Additional information: link
AccessControl._setRoleAdmin(bytes32,bytes32) (@openzeppelin/contracts/access/AccessControl.sol#201-204) is never used and should be removed
Address.functionCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#79-81) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts/utils/Address.sol#104-106) is never used and should be removed
Address.functionDelegateCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#153-155) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#163-169) is never used and should be removed
Address.functionStaticCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#129-131) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#139-145) is never used and should be removed
Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#53-59) is never used and should be removed
Babylonian.sqrt(uint256) (contracts/libraries/Babylonian.sol#8-20) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#20-23) is never used and should be removed
DsysShares.getChainId() (contracts/token/DsysShares.sol#235-239) is never used and should be removed
DsysShares.safe96(uint256,string) (contracts/token/DsysShares.sol#219-222) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/EnumerableSet.sol#147-149) is never used and should be removed
EnumerableSet.add(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/EnumerableSet.sol#256-258) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (@openzeppelin/contracts/utils/EnumerableSet.sol#185-187) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/EnumerableSet.sol#294-296) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/EnumerableSet.sol#164-166) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/EnumerableSet.sol#273-275) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/EnumerableSet.sol#171-173) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/EnumerableSet.sol#280-282) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/EnumerableSet.sol#157-159) is never used and should be removed
EnumerableSet.remove(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/EnumerableSet.sol#266-268) is never used and should be removed
FixedPoint.decode(FixedPoint.uq112x112) (contracts/libraries/FixedPoint.sol#57-59) is never used and should be removed
FixedPoint.div(FixedPoint.uq112x112,uint112) (contracts/libraries/FixedPoint.sol#36-39) is never used and should be removed
FixedPoint.encode(uint112) (contracts/libraries/FixedPoint.sol#26-28) is never used and should be removed
FixedPoint.encode144(uint144) (contracts/libraries/FixedPoint.sol#31-33) is never used and should be removed
FixedPoint.reciprocal(FixedPoint.uq112x112) (contracts/libraries/FixedPoint.sol#67-70) is never used and should be removed
FixedPoint.sqrt(FixedPoint.uq112x112) (contracts/libraries/FixedPoint.sol#73-75) is never used and should be removed
Math.average(uint256,uint256) (@openzeppelin/contracts/math/Math.sol#27-30) is never used and should be removed
Math.max(uint256,uint256) (@openzeppelin/contracts/math/Math.sol#12-14) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (@openzeppelin/contracts/token/ERC20/SafeERC20.sol#37-46) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (@openzeppelin/contracts/token/ERC20/SafeERC20.sol#53-56) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (@openzeppelin/contracts/token/ERC20/SafeERC20.sol#48-51) is never used and should be removed
SafeMath.div(uint256,uint256,string) (@openzeppelin/contracts/math/SafeMath.sol#190-193) is never used and should be removed
SafeMath.mod(uint256,uint256) (@openzeppelin/contracts/math/SafeMath.sol#152-155) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (@openzeppelin/contracts/math/SafeMath.sol#210-213) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (@openzeppelin/contracts/math/SafeMath.sol#24-28) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (@openzeppelin/contracts/math/SafeMath.sol#60-63) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (@openzeppelin/contracts/math/SafeMath.sol#70-73) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (@openzeppelin/contracts/math/SafeMath.sol#45-53) is never used and should be removed
SafeMath.trySub(uint256,uint256) (@openzeppelin/contracts/math/SafeMath.sol#35-38) is never used and should be removed
TransferHelper.safeApprove(address,address,uint256) (contracts/mock/swap/TransferHelper.sol#10-12) is never used and should be removed
UniswapV2Library.getAmountIn(uint256,uint256,uint256) (contracts/libraries/UniswapV2Library.sol#62-68) is never used and should be removed
UniswapV2Library.getAmountOut(uint256,uint256,uint256) (contracts/libraries/UniswapV2Library.sol#52-59) is never used and should be removed
UniswapV2Library.getAmountsIn(address,uint256,address[]) (contracts/libraries/UniswapV2Library.sol#82-90) is never used and should be removed
UniswapV2Library.getAmountsOut(address,uint256,address[]) (contracts/libraries/UniswapV2Library.sol#71-79) is never used and should be removed
UniswapV2Library.getReserves(address,address,address) (contracts/libraries/UniswapV2Library.sol#38-42) is never used and should be removed
UniswapV2Library.pairForCreate2(address,address,address) (contracts/libraries/UniswapV2Library.sol#27-35) is never used and should be removed
UniswapV2Library.quote(uint256,uint256,uint256) (contracts/libraries/UniswapV2Library.sol#45-49) is never used and should be removed
console._sendLogPayload(bytes) (hardhat/console.sol#7-14) is never used and should be removed
console.log() (hardhat/console.sol#16-18) is never used and should be removed
console.log(address) (hardhat/console.sol#184-186) is never used and should be removed
console.log(address,address) (hardhat/console.sol#248-250) is never used and should be removed
console.log(address,address,address) (hardhat/console.sol#504-506) is never used and should be removed
console.log(address,address,address,address) (hardhat/console.sol#1528-1530) is never used and should be removed
console.log(address,address,address,bool) (hardhat/console.sol#1524-1526) is never used and should be removed
console.log(address,address,address,string) (hardhat/console.sol#1520-1522) is never used and should be removed
console.log(address,address,address,uint256) (hardhat/console.sol#1516-1518) is never used and should be removed
console.log(address,address,bool) (hardhat/console.sol#500-502) is never used and should be removed
console.log(address,address,bool,address) (hardhat/console.sol#1512-1514) is never used and should be removed
console.log(address,address,bool,bool) (hardhat/console.sol#1508-1510) is never used and should be removed
console.log(address,address,bool,string) (hardhat/console.sol#1504-1506) is never used and should be removed
console.log(address,address,bool,uint256) (hardhat/console.sol#1500-1502) is never used and should be removed
console.log(address,address,string) (hardhat/console.sol#496-498) is never used and should be removed
console.log(address,address,string,address) (hardhat/console.sol#1496-1498) is never used and should be removed
console.log(address,address,string,bool) (hardhat/console.sol#1492-1494) is never used and should be removed
console.log(address,address,string,string) (hardhat/console.sol#1488-1490) is never used and should be removed
console.log(address,address,string,uint256) (hardhat/console.sol#1484-1486) is never used and should be removed
console.log(address,address,uint256) (hardhat/console.sol#492-494) is never used and should be removed
console.log(address,address,uint256,address) (hardhat/console.sol#1480-1482) is never used and should be removed
console.log(address,address,uint256,bool) (hardhat/console.sol#1476-1478) is never used and should be removed
console.log(address,address,uint256,string) (hardhat/console.sol#1472-1474) is never used and should be removed
console.log(address,address,uint256,uint256) (hardhat/console.sol#1468-1470) is never used and should be removed
console.log(address,bool) (hardhat/console.sol#244-246) is never used and should be removed
console.log(address,bool,address) (hardhat/console.sol#488-490) is never used and should be removed
console.log(address,bool,address,address) (hardhat/console.sol#1464-1466) is never used and should be removed
console.log(address,bool,address,bool) (hardhat/console.sol#1460-1462) is never used and should be removed
console.log(address,bool,address,string) (hardhat/console.sol#1456-1458) is never used and should be removed
console.log(address,bool,address,uint256) (hardhat/console.sol#1452-1454) is never used and should be removed
console.log(address,bool,bool) (hardhat/console.sol#484-486) is never used and should be removed
console.log(address,bool,bool,address) (hardhat/console.sol#1448-1450) is never used and should be removed
console.log(address,bool,bool,bool) (hardhat/console.sol#1444-1446) is never used and should be removed
console.log(address,bool,bool,string) (hardhat/console.sol#1440-1442) is never used and should be removed
console.log(address,bool,bool,uint256) (hardhat/console.sol#1436-1438) is never used and should be removed
console.log(address,bool,string) (hardhat/console.sol#480-482) is never used and should be removed
console.log(address,bool,string,address) (hardhat/console.sol#1432-1434) is never used and should be removed
console.log(address,bool,string,bool) (hardhat/console.sol#1428-1430) is never used and should be removed
console.log(address,bool,string,string) (hardhat/console.sol#1424-1426) is never used and should be removed
console.log(address,bool,string,uint256) (hardhat/console.sol#1420-1422) is never used and should be removed
console.log(address,bool,uint256) (hardhat/console.sol#476-478) is never used and should be removed
console.log(address,bool,uint256,address) (hardhat/console.sol#1416-1418) is never used and should be removed
console.log(address,bool,uint256,bool) (hardhat/console.sol#1412-1414) is never used and should be removed
console.log(address,bool,uint256,string) (hardhat/console.sol#1408-1410) is never used and should be removed
console.log(address,bool,uint256,uint256) (hardhat/console.sol#1404-1406) is never used and should be removed
console.log(address,string) (hardhat/console.sol#240-242) is never used and should be removed
console.log(address,string,address) (hardhat/console.sol#472-474) is never used and should be removed
console.log(address,string,address,address) (hardhat/console.sol#1400-1402) is never used and should be removed
console.log(address,string,address,bool) (hardhat/console.sol#1396-1398) is never used and should be removed
console.log(address,string,address,string) (hardhat/console.sol#1392-1394) is never used and should be removed
console.log(address,string,address,uint256) (hardhat/console.sol#1388-1390) is never used and should be removed
console.log(address,string,bool) (hardhat/console.sol#468-470) is never used and should be removed
console.log(address,string,bool,address) (hardhat/console.sol#1384-1386) is never used and should be removed
console.log(address,string,bool,bool) (hardhat/console.sol#1380-1382) is never used and should be removed
console.log(address,string,bool,string) (hardhat/console.sol#1376-1378) is never used and should be removed
console.log(address,string,bool,uint256) (hardhat/console.sol#1372-1374) is never used and should be removed
console.log(address,string,string) (hardhat/console.sol#464-466) is never used and should be removed
console.log(address,string,string,address) (hardhat/console.sol#1368-1370) is never used and should be removed
console.log(address,string,string,bool) (hardhat/console.sol#1364-1366) is never used and should be removed
console.log(address,string,string,string) (hardhat/console.sol#1360-1362) is never used and should be removed
console.log(address,string,string,uint256) (hardhat/console.sol#1356-1358) is never used and should be removed
console.log(address,string,uint256) (hardhat/console.sol#460-462) is never used and should be removed
console.log(address,string,uint256,address) (hardhat/console.sol#1352-1354) is never used and should be removed
console.log(address,string,uint256,bool) (hardhat/console.sol#1348-1350) is never used and should be removed
console.log(address,string,uint256,string) (hardhat/console.sol#1344-1346) is never used and should be removed
console.log(address,string,uint256,uint256) (hardhat/console.sol#1340-1342) is never used and should be removed
console.log(address,uint256) (hardhat/console.sol#236-238) is never used and should be removed
console.log(address,uint256,address) (hardhat/console.sol#456-458) is never used and should be removed
console.log(address,uint256,address,address) (hardhat/console.sol#1336-1338) is never used and should be removed
console.log(address,uint256,address,bool) (hardhat/console.sol#1332-1334) is never used and should be removed
console.log(address,uint256,address,string) (hardhat/console.sol#1328-1330) is never used and should be removed
console.log(address,uint256,address,uint256) (hardhat/console.sol#1324-1326) is never used and should be removed
console.log(address,uint256,bool) (hardhat/console.sol#452-454) is never used and should be removed
console.log(address,uint256,bool,address) (hardhat/console.sol#1320-1322) is never used and should be removed
console.log(address,uint256,bool,bool) (hardhat/console.sol#1316-1318) is never used and should be removed
console.log(address,uint256,bool,string) (hardhat/console.sol#1312-1314) is never used and should be removed
console.log(address,uint256,bool,uint256) (hardhat/console.sol#1308-1310) is never used and should be removed
console.log(address,uint256,string) (hardhat/console.sol#448-450) is never used and should be removed
console.log(address,uint256,string,address) (hardhat/console.sol#1304-1306) is never used and should be removed
console.log(address,uint256,string,bool) (hardhat/console.sol#1300-1302) is never used and should be removed
console.log(address,uint256,string,string) (hardhat/console.sol#1296-1298) is never used and should be removed
console.log(address,uint256,string,uint256) (hardhat/console.sol#1292-1294) is never used and should be removed
console.log(address,uint256,uint256) (hardhat/console.sol#444-446) is never used and should be removed
console.log(address,uint256,uint256,address) (hardhat/console.sol#1288-1290) is never used and should be removed
console.log(address,uint256,uint256,bool) (hardhat/console.sol#1284-1286) is never used and should be removed
console.log(address,uint256,uint256,string) (hardhat/console.sol#1280-1282) is never used and should be removed
console.log(address,uint256,uint256,uint256) (hardhat/console.sol#1276-1278) is never used and should be removed
console.log(bool) (hardhat/console.sol#180-182) is never used and should be removed
console.log(bool,address) (hardhat/console.sol#232-234) is never used and should be removed
console.log(bool,address,address) (hardhat/console.sol#440-442) is never used and should be removed
console.log(bool,address,address,address) (hardhat/console.sol#1272-1274) is never used and should be removed
console.log(bool,address,address,bool) (hardhat/console.sol#1268-1270) is never used and should be removed
console.log(bool,address,address,string) (hardhat/console.sol#1264-1266) is never used and should be removed
console.log(bool,address,address,uint256) (hardhat/console.sol#1260-1262) is never used and should be removed
console.log(bool,address,bool) (hardhat/console.sol#436-438) is never used and should be removed
console.log(bool,address,bool,address) (hardhat/console.sol#1256-1258) is never used and should be removed
console.log(bool,address,bool,bool) (hardhat/console.sol#1252-1254) is never used and should be removed
console.log(bool,address,bool,string) (hardhat/console.sol#1248-1250) is never used and should be removed
console.log(bool,address,bool,uint256) (hardhat/console.sol#1244-1246) is never used and should be removed
console.log(bool,address,string) (hardhat/console.sol#432-434) is never used and should be removed
console.log(bool,address,string,address) (hardhat/console.sol#1240-1242) is never used and should be removed
console.log(bool,address,string,bool) (hardhat/console.sol#1236-1238) is never used and should be removed
console.log(bool,address,string,string) (hardhat/console.sol#1232-1234) is never used and should be removed
console.log(bool,address,string,uint256) (hardhat/console.sol#1228-1230) is never used and should be removed
console.log(bool,address,uint256) (hardhat/console.sol#428-430) is never used and should be removed
console.log(bool,address,uint256,address) (hardhat/console.sol#1224-1226) is never used and should be removed
console.log(bool,address,uint256,bool) (hardhat/console.sol#1220-1222) is never used and should be removed
console.log(bool,address,uint256,string) (hardhat/console.sol#1216-1218) is never used and should be removed
console.log(bool,address,uint256,uint256) (hardhat/console.sol#1212-1214) is never used and should be removed
console.log(bool,bool) (hardhat/console.sol#228-230) is never used and should be removed
console.log(bool,bool,address) (hardhat/console.sol#424-426) is never used and should be removed
console.log(bool,bool,address,address) (hardhat/console.sol#1208-1210) is never used and should be removed
console.log(bool,bool,address,bool) (hardhat/console.sol#1204-1206) is never used and should be removed
console.log(bool,bool,address,string) (hardhat/console.sol#1200-1202) is never used and should be removed
console.log(bool,bool,address,uint256) (hardhat/console.sol#1196-1198) is never used and should be removed
console.log(bool,bool,bool) (hardhat/console.sol#420-422) is never used and should be removed
console.log(bool,bool,bool,address) (hardhat/console.sol#1192-1194) is never used and should be removed
console.log(bool,bool,bool,bool) (hardhat/console.sol#1188-1190) is never used and should be removed
console.log(bool,bool,bool,string) (hardhat/console.sol#1184-1186) is never used and should be removed
console.log(bool,bool,bool,uint256) (hardhat/console.sol#1180-1182) is never used and should be removed
console.log(bool,bool,string) (hardhat/console.sol#416-418) is never used and should be removed
console.log(bool,bool,string,address) (hardhat/console.sol#1176-1178) is never used and should be removed
console.log(bool,bool,string,bool) (hardhat/console.sol#1172-1174) is never used and should be removed
console.log(bool,bool,string,string) (hardhat/console.sol#1168-1170) is never used and should be removed
console.log(bool,bool,string,uint256) (hardhat/console.sol#1164-1166) is never used and should be removed
console.log(bool,bool,uint256) (hardhat/console.sol#412-414) is never used and should be removed
console.log(bool,bool,uint256,address) (hardhat/console.sol#1160-1162) is never used and should be removed
console.log(bool,bool,uint256,bool) (hardhat/console.sol#1156-1158) is never used and should be removed
console.log(bool,bool,uint256,string) (hardhat/console.sol#1152-1154) is never used and should be removed
console.log(bool,bool,uint256,uint256) (hardhat/console.sol#1148-1150) is never used and should be removed
console.log(bool,string) (hardhat/console.sol#224-226) is never used and should be removed
console.log(bool,string,address) (hardhat/console.sol#408-410) is never used and should be removed
console.log(bool,string,address,address) (hardhat/console.sol#1144-1146) is never used and should be removed
console.log(bool,string,address,bool) (hardhat/console.sol#1140-1142) is never used and should be removed
console.log(bool,string,address,string) (hardhat/console.sol#1136-1138) is never used and should be removed
console.log(bool,string,address,uint256) (hardhat/console.sol#1132-1134) is never used and should be removed
console.log(bool,string,bool) (hardhat/console.sol#404-406) is never used and should be removed
console.log(bool,string,bool,address) (hardhat/console.sol#1128-1130) is never used and should be removed
console.log(bool,string,bool,bool) (hardhat/console.sol#1124-1126) is never used and should be removed
console.log(bool,string,bool,string) (hardhat/console.sol#1120-1122) is never used and should be removed
console.log(bool,string,bool,uint256) (hardhat/console.sol#1116-1118) is never used and should be removed
console.log(bool,string,string) (hardhat/console.sol#400-402) is never used and should be removed
console.log(bool,string,string,address) (hardhat/console.sol#1112-1114) is never used and should be removed
console.log(bool,string,string,bool) (hardhat/console.sol#1108-1110) is never used and should be removed
console.log(bool,string,string,string) (hardhat/console.sol#1104-1106) is never used and should be removed
console.log(bool,string,string,uint256) (hardhat/console.sol#1100-1102) is never used and should be removed
console.log(bool,string,uint256) (hardhat/console.sol#396-398) is never used and should be removed
console.log(bool,string,uint256,address) (hardhat/console.sol#1096-1098) is never used and should be removed
console.log(bool,string,uint256,bool) (hardhat/console.sol#1092-1094) is never used and should be removed
console.log(bool,string,uint256,string) (hardhat/console.sol#1088-1090) is never used and should be removed
console.log(bool,string,uint256,uint256) (hardhat/console.sol#1084-1086) is never used and should be removed
console.log(bool,uint256) (hardhat/console.sol#220-222) is never used and should be removed
console.log(bool,uint256,address) (hardhat/console.sol#392-394) is never used and should be removed
console.log(bool,uint256,address,address) (hardhat/console.sol#1080-1082) is never used and should be removed
console.log(bool,uint256,address,bool) (hardhat/console.sol#1076-1078) is never used and should be removed
console.log(bool,uint256,address,string) (hardhat/console.sol#1072-1074) is never used and should be removed
console.log(bool,uint256,address,uint256) (hardhat/console.sol#1068-1070) is never used and should be removed
console.log(bool,uint256,bool) (hardhat/console.sol#388-390) is never used and should be removed
console.log(bool,uint256,bool,address) (hardhat/console.sol#1064-1066) is never used and should be removed
console.log(bool,uint256,bool,bool) (hardhat/console.sol#1060-1062) is never used and should be removed
console.log(bool,uint256,bool,string) (hardhat/console.sol#1056-1058) is never used and should be removed
console.log(bool,uint256,bool,uint256) (hardhat/console.sol#1052-1054) is never used and should be removed
console.log(bool,uint256,string) (hardhat/console.sol#384-386) is never used and should be removed
console.log(bool,uint256,string,address) (hardhat/console.sol#1048-1050) is never used and should be removed
console.log(bool,uint256,string,bool) (hardhat/console.sol#1044-1046) is never used and should be removed
console.log(bool,uint256,string,string) (hardhat/console.sol#1040-1042) is never used and should be removed
console.log(bool,uint256,string,uint256) (hardhat/console.sol#1036-1038) is never used and should be removed
console.log(bool,uint256,uint256) (hardhat/console.sol#380-382) is never used and should be removed
console.log(bool,uint256,uint256,address) (hardhat/console.sol#1032-1034) is never used and should be removed
console.log(bool,uint256,uint256,bool) (hardhat/console.sol#1028-1030) is never used and should be removed
console.log(bool,uint256,uint256,string) (hardhat/console.sol#1024-1026) is never used and should be removed
console.log(bool,uint256,uint256,uint256) (hardhat/console.sol#1020-1022) is never used and should be removed
console.log(string) (hardhat/console.sol#176-178) is never used and should be removed
console.log(string,address) (hardhat/console.sol#216-218) is never used and should be removed
console.log(string,address,address) (hardhat/console.sol#376-378) is never used and should be removed
console.log(string,address,address,address) (hardhat/console.sol#1016-1018) is never used and should be removed
console.log(string,address,address,bool) (hardhat/console.sol#1012-1014) is never used and should be removed
console.log(string,address,address,string) (hardhat/console.sol#1008-1010) is never used and should be removed
console.log(string,address,address,uint256) (hardhat/console.sol#1004-1006) is never used and should be removed
console.log(string,address,bool) (hardhat/console.sol#372-374) is never used and should be removed
console.log(string,address,bool,address) (hardhat/console.sol#1000-1002) is never used and should be removed
console.log(string,address,bool,bool) (hardhat/console.sol#996-998) is never used and should be removed
console.log(string,address,bool,string) (hardhat/console.sol#992-994) is never used and should be removed
console.log(string,address,bool,uint256) (hardhat/console.sol#988-990) is never used and should be removed
console.log(string,address,string) (hardhat/console.sol#368-370) is never used and should be removed
console.log(string,address,string,address) (hardhat/console.sol#984-986) is never used and should be removed
console.log(string,address,string,bool) (hardhat/console.sol#980-982) is never used and should be removed
console.log(string,address,string,string) (hardhat/console.sol#976-978) is never used and should be removed
console.log(string,address,string,uint256) (hardhat/console.sol#972-974) is never used and should be removed
console.log(string,address,uint256) (hardhat/console.sol#364-366) is never used and should be removed
console.log(string,address,uint256,address) (hardhat/console.sol#968-970) is never used and should be removed
console.log(string,address,uint256,bool) (hardhat/console.sol#964-966) is never used and should be removed
console.log(string,address,uint256,string) (hardhat/console.sol#960-962) is never used and should be removed
console.log(string,address,uint256,uint256) (hardhat/console.sol#956-958) is never used and should be removed
console.log(string,bool) (hardhat/console.sol#212-214) is never used and should be removed
console.log(string,bool,address) (hardhat/console.sol#360-362) is never used and should be removed
console.log(string,bool,address,address) (hardhat/console.sol#952-954) is never used and should be removed
console.log(string,bool,address,bool) (hardhat/console.sol#948-950) is never used and should be removed
console.log(string,bool,address,string) (hardhat/console.sol#944-946) is never used and should be removed
console.log(string,bool,address,uint256) (hardhat/console.sol#940-942) is never used and should be removed
console.log(string,bool,bool) (hardhat/console.sol#356-358) is never used and should be removed
console.log(string,bool,bool,address) (hardhat/console.sol#936-938) is never used and should be removed
console.log(string,bool,bool,bool) (hardhat/console.sol#932-934) is never used and should be removed
console.log(string,bool,bool,string) (hardhat/console.sol#928-930) is never used and should be removed
console.log(string,bool,bool,uint256) (hardhat/console.sol#924-926) is never used and should be removed
console.log(string,bool,string) (hardhat/console.sol#352-354) is never used and should be removed
console.log(string,bool,string,address) (hardhat/console.sol#920-922) is never used and should be removed
console.log(string,bool,string,bool) (hardhat/console.sol#916-918) is never used and should be removed
console.log(string,bool,string,string) (hardhat/console.sol#912-914) is never used and should be removed
console.log(string,bool,string,uint256) (hardhat/console.sol#908-910) is never used and should be removed
console.log(string,bool,uint256) (hardhat/console.sol#348-350) is never used and should be removed
console.log(string,bool,uint256,address) (hardhat/console.sol#904-906) is never used and should be removed
console.log(string,bool,uint256,bool) (hardhat/console.sol#900-902) is never used and should be removed
console.log(string,bool,uint256,string) (hardhat/console.sol#896-898) is never used and should be removed
console.log(string,bool,uint256,uint256) (hardhat/console.sol#892-894) is never used and should be removed
console.log(string,string) (hardhat/console.sol#208-210) is never used and should be removed
console.log(string,string,address) (hardhat/console.sol#344-346) is never used and should be removed
console.log(string,string,address,address) (hardhat/console.sol#888-890) is never used and should be removed
console.log(string,string,address,bool) (hardhat/console.sol#884-886) is never used and should be removed
console.log(string,string,address,string) (hardhat/console.sol#880-882) is never used and should be removed
console.log(string,string,address,uint256) (hardhat/console.sol#876-878) is never used and should be removed
console.log(string,string,bool) (hardhat/console.sol#340-342) is never used and should be removed
console.log(string,string,bool,address) (hardhat/console.sol#872-874) is never used and should be removed
console.log(string,string,bool,bool) (hardhat/console.sol#868-870) is never used and should be removed
console.log(string,string,bool,string) (hardhat/console.sol#864-866) is never used and should be removed
console.log(string,string,bool,uint256) (hardhat/console.sol#860-862) is never used and should be removed
console.log(string,string,string) (hardhat/console.sol#336-338) is never used and should be removed
console.log(string,string,string,address) (hardhat/console.sol#856-858) is never used and should be removed
console.log(string,string,string,bool) (hardhat/console.sol#852-854) is never used and should be removed
console.log(string,string,string,string) (hardhat/console.sol#848-850) is never used and should be removed
console.log(string,string,string,uint256) (hardhat/console.sol#844-846) is never used and should be removed
console.log(string,string,uint256) (hardhat/console.sol#332-334) is never used and should be removed
console.log(string,string,uint256,address) (hardhat/console.sol#840-842) is never used and should be removed
console.log(string,string,uint256,bool) (hardhat/console.sol#836-838) is never used and should be removed
console.log(string,string,uint256,string) (hardhat/console.sol#832-834) is never used and should be removed
console.log(string,string,uint256,uint256) (hardhat/console.sol#828-830) is never used and should be removed
console.log(string,uint256) (hardhat/console.sol#204-206) is never used and should be removed
console.log(string,uint256,address) (hardhat/console.sol#328-330) is never used and should be removed
console.log(string,uint256,address,address) (hardhat/console.sol#824-826) is never used and should be removed
console.log(string,uint256,address,bool) (hardhat/console.sol#820-822) is never used and should be removed
console.log(string,uint256,address,string) (hardhat/console.sol#816-818) is never used and should be removed
console.log(string,uint256,address,uint256) (hardhat/console.sol#812-814) is never used and should be removed
console.log(string,uint256,bool) (hardhat/console.sol#324-326) is never used and should be removed
console.log(string,uint256,bool,address) (hardhat/console.sol#808-810) is never used and should be removed
console.log(string,uint256,bool,bool) (hardhat/console.sol#804-806) is never used and should be removed
console.log(string,uint256,bool,string) (hardhat/console.sol#800-802) is never used and should be removed
console.log(string,uint256,bool,uint256) (hardhat/console.sol#796-798) is never used and should be removed
console.log(string,uint256,string) (hardhat/console.sol#320-322) is never used and should be removed
console.log(string,uint256,string,address) (hardhat/console.sol#792-794) is never used and should be removed
console.log(string,uint256,string,bool) (hardhat/console.sol#788-790) is never used and should be removed
console.log(string,uint256,string,string) (hardhat/console.sol#784-786) is never used and should be removed
console.log(string,uint256,string,uint256) (hardhat/console.sol#780-782) is never used and should be removed
console.log(string,uint256,uint256) (hardhat/console.sol#316-318) is never used and should be removed
console.log(string,uint256,uint256,address) (hardhat/console.sol#776-778) is never used and should be removed
console.log(string,uint256,uint256,bool) (hardhat/console.sol#772-774) is never used and should be removed
console.log(string,uint256,uint256,string) (hardhat/console.sol#768-770) is never used and should be removed
console.log(string,uint256,uint256,uint256) (hardhat/console.sol#764-766) is never used and should be removed
console.log(uint256) (hardhat/console.sol#172-174) is never used and should be removed
console.log(uint256,address) (hardhat/console.sol#200-202) is never used and should be removed
console.log(uint256,address,address) (hardhat/console.sol#312-314) is never used and should be removed
console.log(uint256,address,address,address) (hardhat/console.sol#760-762) is never used and should be removed
console.log(uint256,address,address,bool) (hardhat/console.sol#756-758) is never used and should be removed
console.log(uint256,address,address,string) (hardhat/console.sol#752-754) is never used and should be removed
console.log(uint256,address,address,uint256) (hardhat/console.sol#748-750) is never used and should be removed
console.log(uint256,address,bool) (hardhat/console.sol#308-310) is never used and should be removed
console.log(uint256,address,bool,address) (hardhat/console.sol#744-746) is never used and should be removed
console.log(uint256,address,bool,bool) (hardhat/console.sol#740-742) is never used and should be removed
console.log(uint256,address,bool,string) (hardhat/console.sol#736-738) is never used and should be removed
console.log(uint256,address,bool,uint256) (hardhat/console.sol#732-734) is never used and should be removed
console.log(uint256,address,string) (hardhat/console.sol#304-306) is never used and should be removed
console.log(uint256,address,string,address) (hardhat/console.sol#728-730) is never used and should be removed
console.log(uint256,address,string,bool) (hardhat/console.sol#724-726) is never used and should be removed
console.log(uint256,address,string,string) (hardhat/console.sol#720-722) is never used and should be removed
console.log(uint256,address,string,uint256) (hardhat/console.sol#716-718) is never used and should be removed
console.log(uint256,address,uint256) (hardhat/console.sol#300-302) is never used and should be removed
console.log(uint256,address,uint256,address) (hardhat/console.sol#712-714) is never used and should be removed
console.log(uint256,address,uint256,bool) (hardhat/console.sol#708-710) is never used and should be removed
console.log(uint256,address,uint256,string) (hardhat/console.sol#704-706) is never used and should be removed
console.log(uint256,address,uint256,uint256) (hardhat/console.sol#700-702) is never used and should be removed
console.log(uint256,bool) (hardhat/console.sol#196-198) is never used and should be removed
console.log(uint256,bool,address) (hardhat/console.sol#296-298) is never used and should be removed
console.log(uint256,bool,address,address) (hardhat/console.sol#696-698) is never used and should be removed
console.log(uint256,bool,address,bool) (hardhat/console.sol#692-694) is never used and should be removed
console.log(uint256,bool,address,string) (hardhat/console.sol#688-690) is never used and should be removed
console.log(uint256,bool,address,uint256) (hardhat/console.sol#684-686) is never used and should be removed
console.log(uint256,bool,bool) (hardhat/console.sol#292-294) is never used and should be removed
console.log(uint256,bool,bool,address) (hardhat/console.sol#680-682) is never used and should be removed
console.log(uint256,bool,bool,bool) (hardhat/console.sol#676-678) is never used and should be removed
console.log(uint256,bool,bool,string) (hardhat/console.sol#672-674) is never used and should be removed
console.log(uint256,bool,bool,uint256) (hardhat/console.sol#668-670) is never used and should be removed
console.log(uint256,bool,string) (hardhat/console.sol#288-290) is never used and should be removed
console.log(uint256,bool,string,address) (hardhat/console.sol#664-666) is never used and should be removed
console.log(uint256,bool,string,bool) (hardhat/console.sol#660-662) is never used and should be removed
console.log(uint256,bool,string,string) (hardhat/console.sol#656-658) is never used and should be removed
console.log(uint256,bool,string,uint256) (hardhat/console.sol#652-654) is never used and should be removed
console.log(uint256,bool,uint256) (hardhat/console.sol#284-286) is never used and should be removed
console.log(uint256,bool,uint256,address) (hardhat/console.sol#648-650) is never used and should be removed
console.log(uint256,bool,uint256,bool) (hardhat/console.sol#644-646) is never used and should be removed
console.log(uint256,bool,uint256,string) (hardhat/console.sol#640-642) is never used and should be removed
console.log(uint256,bool,uint256,uint256) (hardhat/console.sol#636-638) is never used and should be removed
console.log(uint256,string) (hardhat/console.sol#192-194) is never used and should be removed
console.log(uint256,string,address) (hardhat/console.sol#280-282) is never used and should be removed
console.log(uint256,string,address,address) (hardhat/console.sol#632-634) is never used and should be removed
console.log(uint256,string,address,bool) (hardhat/console.sol#628-630) is never used and should be removed
console.log(uint256,string,address,string) (hardhat/console.sol#624-626) is never used and should be removed
console.log(uint256,string,address,uint256) (hardhat/console.sol#620-622) is never used and should be removed
console.log(uint256,string,bool) (hardhat/console.sol#276-278) is never used and should be removed
console.log(uint256,string,bool,address) (hardhat/console.sol#616-618) is never used and should be removed
console.log(uint256,string,bool,bool) (hardhat/console.sol#612-614) is never used and should be removed
console.log(uint256,string,bool,string) (hardhat/console.sol#608-610) is never used and should be removed
console.log(uint256,string,bool,uint256) (hardhat/console.sol#604-606) is never used and should be removed
console.log(uint256,string,string) (hardhat/console.sol#272-274) is never used and should be removed
console.log(uint256,string,string,address) (hardhat/console.sol#600-602) is never used and should be removed
console.log(uint256,string,string,bool) (hardhat/console.sol#596-598) is never used and should be removed
console.log(uint256,string,string,string) (hardhat/console.sol#592-594) is never used and should be removed
console.log(uint256,string,string,uint256) (hardhat/console.sol#588-590) is never used and should be removed
console.log(uint256,string,uint256) (hardhat/console.sol#268-270) is never used and should be removed
console.log(uint256,string,uint256,address) (hardhat/console.sol#584-586) is never used and should be removed
console.log(uint256,string,uint256,bool) (hardhat/console.sol#580-582) is never used and should be removed
console.log(uint256,string,uint256,string) (hardhat/console.sol#576-578) is never used and should be removed
console.log(uint256,string,uint256,uint256) (hardhat/console.sol#572-574) is never used and should be removed
console.log(uint256,uint256) (hardhat/console.sol#188-190) is never used and should be removed
console.log(uint256,uint256,address) (hardhat/console.sol#264-266) is never used and should be removed
console.log(uint256,uint256,address,address) (hardhat/console.sol#568-570) is never used and should be removed
console.log(uint256,uint256,address,bool) (hardhat/console.sol#564-566) is never used and should be removed
console.log(uint256,uint256,address,string) (hardhat/console.sol#560-562) is never used and should be removed
console.log(uint256,uint256,address,uint256) (hardhat/console.sol#556-558) is never used and should be removed
console.log(uint256,uint256,bool) (hardhat/console.sol#260-262) is never used and should be removed
console.log(uint256,uint256,bool,address) (hardhat/console.sol#552-554) is never used and should be removed
console.log(uint256,uint256,bool,bool) (hardhat/console.sol#548-550) is never used and should be removed
console.log(uint256,uint256,bool,string) (hardhat/console.sol#544-546) is never used and should be removed
console.log(uint256,uint256,bool,uint256) (hardhat/console.sol#540-542) is never used and should be removed
console.log(uint256,uint256,string) (hardhat/console.sol#256-258) is never used and should be removed
console.log(uint256,uint256,string,address) (hardhat/console.sol#536-538) is never used and should be removed
console.log(uint256,uint256,string,bool) (hardhat/console.sol#532-534) is never used and should be removed
console.log(uint256,uint256,string,string) (hardhat/console.sol#528-530) is never used and should be removed
console.log(uint256,uint256,string,uint256) (hardhat/console.sol#524-526) is never used and should be removed
console.log(uint256,uint256,uint256) (hardhat/console.sol#252-254) is never used and should be removed
console.log(uint256,uint256,uint256,address) (hardhat/console.sol#520-522) is never used and should be removed
console.log(uint256,uint256,uint256,bool) (hardhat/console.sol#516-518) is never used and should be removed
console.log(uint256,uint256,uint256,string) (hardhat/console.sol#512-514) is never used and should be removed
console.log(uint256,uint256,uint256,uint256) (hardhat/console.sol#508-510) is never used and should be removed
console.logAddress(address) (hardhat/console.sol#36-38) is never used and should be removed
console.logBool(bool) (hardhat/console.sol#32-34) is never used and should be removed
console.logBytes(bytes) (hardhat/console.sol#40-42) is never used and should be removed
console.logBytes1(bytes1) (hardhat/console.sol#44-46) is never used and should be removed
console.logBytes10(bytes10) (hardhat/console.sol#80-82) is never used and should be removed
console.logBytes11(bytes11) (hardhat/console.sol#84-86) is never used and should be removed
console.logBytes12(bytes12) (hardhat/console.sol#88-90) is never used and should be removed
console.logBytes13(bytes13) (hardhat/console.sol#92-94) is never used and should be removed
console.logBytes14(bytes14) (hardhat/console.sol#96-98) is never used and should be removed
console.logBytes15(bytes15) (hardhat/console.sol#100-102) is never used and should be removed
console.logBytes16(bytes16) (hardhat/console.sol#104-106) is never used and should be removed
console.logBytes17(bytes17) (hardhat/console.sol#108-110) is never used and should be removed
console.logBytes18(bytes18) (hardhat/console.sol#112-114) is never used and should be removed
console.logBytes19(bytes19) (hardhat/console.sol#116-118) is never used and should be removed
console.logBytes2(bytes2) (hardhat/console.sol#48-50) is never used and should be removed
console.logBytes20(bytes20) (hardhat/console.sol#120-122) is never used and should be removed
console.logBytes21(bytes21) (hardhat/console.sol#124-126) is never used and should be removed
console.logBytes22(bytes22) (hardhat/console.sol#128-130) is never used and should be removed
console.logBytes23(bytes23) (hardhat/console.sol#132-134) is never used and should be removed
console.logBytes24(bytes24) (hardhat/console.sol#136-138) is never used and should be removed
console.logBytes25(bytes25) (hardhat/console.sol#140-142) is never used and should be removed
console.logBytes26(bytes26) (hardhat/console.sol#144-146) is never used and should be removed
console.logBytes27(bytes27) (hardhat/console.sol#148-150) is never used and should be removed
console.logBytes28(bytes28) (hardhat/console.sol#152-154) is never used and should be removed
console.logBytes29(bytes29) (hardhat/console.sol#156-158) is never used and should be removed
console.logBytes3(bytes3) (hardhat/console.sol#52-54) is never used and should be removed
console.logBytes30(bytes30) (hardhat/console.sol#160-162) is never used and should be removed
console.logBytes31(bytes31) (hardhat/console.sol#164-166) is never used and should be removed
console.logBytes32(bytes32) (hardhat/console.sol#168-170) is never used and should be removed
console.logBytes4(bytes4) (hardhat/console.sol#56-58) is never used and should be removed
console.logBytes5(bytes5) (hardhat/console.sol#60-62) is never used and should be removed
console.logBytes6(bytes6) (hardhat/console.sol#64-66) is never used and should be removed
console.logBytes7(bytes7) (hardhat/console.sol#68-70) is never used and should be removed
console.logBytes8(bytes8) (hardhat/console.sol#72-74) is never used and should be removed
console.logBytes9(bytes9) (hardhat/console.sol#76-78) is never used and should be removed
console.logInt(int256) (hardhat/console.sol#20-22) is never used and should be removed
console.logString(string) (hardhat/console.sol#28-30) is never used and should be removed
console.logUint(uint256) (hardhat/console.sol#24-26) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/access/AccessControl.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/math/Math.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/math/SafeMath.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/token/ERC20/SafeERC20.sol#3) is too complex
Pragma version>=0.6.2<0.8.0 (@openzeppelin/contracts/utils/Address.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/utils/Context.sol#3) is too complex
Pragma version>=0.6.0<0.8.0 (@openzeppelin/contracts/utils/EnumerableSet.sol#3) is too complex
Pragma version>=0.4.22<0.9.0 (hardhat/console.sol#2) is too complex
Deploy with any of the following Solidity versions: 0.5.16 - 0.5.17, 0.6.11 - 0.6.12, 0.7.5 - 0.7.6 Use a simple pragma version that allows any of these versions. Consider using the latest version of Solidity for testing.
Additional information: link
Low level call in Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#53-59):
- (success) = recipient.call{value: amount}() (@openzeppelin/contracts/utils/Address.sol#57)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#114-121):
- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts/utils/Address.sol#119)
Low level call in Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#139-145):
- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts/utils/Address.sol#143)
Low level call in Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#163-169):
- (success,returndata) = target.delegatecall(data) (@openzeppelin/contracts/utils/Address.sol#167)
Low level call in DsysAMOMinter.execute(address,uint256,bytes) (contracts/amo/DsysAMOMinter.sol#352-359):
- (success,result) = _to.call{value: _value}(_data) (contracts/amo/DsysAMOMinter.sol#357)
Low level call in MockPair._safeTransfer(address,address,uint256) (contracts/mock/swap/MockPair.sol#49-52):
- (success,data) = token.call(abi.encodeWithSelector(SELECTOR,to,value)) (contracts/mock/swap/MockPair.sol#50)
Low level call in TransferHelper.safeTransferETH(address,uint256) (contracts/mock/swap/TransferHelper.sol#22-25):
- (success) = to.call{value: value}(new bytes(0)) (contracts/mock/swap/TransferHelper.sol#23)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
DsysAMOMinter (contracts/amo/DsysAMOMinter.sol#14-364) should inherit from IAMO (contracts/interfaces/IAMO.sol#5-7)
MockUniswapPairOracle (contracts/mock/MockUniswapPairOracle.sol#13-50) should inherit from IUniswapPairOracle (contracts/interfaces/IUniswapPairOracle.sol#5-8)
UniswapPairOracle (contracts/oracle/UniswapPairOracle.sol#13-115) should inherit from IUniswapPairOracle (contracts/interfaces/IUniswapPairOracle.sol#5-8)
Inherit from the missing interface or contract.
Additional information: link
Parameter DsysAMOMinter.dsysTrackedAMO(address).amo_address (contracts/amo/DsysAMOMinter.sol#120) is not in mixedCase
Parameter DsysAMOMinter.mintDsysForAMO(address,uint256).destination_amo (contracts/amo/DsysAMOMinter.sol#151) is not in mixedCase
Parameter DsysAMOMinter.mintDsysForAMO(address,uint256).frax_amount (contracts/amo/DsysAMOMinter.sol#151) is not in mixedCase
Parameter DsysAMOMinter.burnDsysFromAMO(uint256).dsys_amount (contracts/amo/DsysAMOMinter.sol#174) is not in mixedCase
Parameter DsysAMOMinter.mintDsysSharesForAMO(address,uint256).destination_amo (contracts/amo/DsysAMOMinter.sol#191) is not in mixedCase
Parameter DsysAMOMinter.mintDsysSharesForAMO(address,uint256).dsys_shares_amount (contracts/amo/DsysAMOMinter.sol#191) is not in mixedCase
Parameter DsysAMOMinter.burnDsysSharesFromAMO(uint256).dsys_shares_amount (contracts/amo/DsysAMOMinter.sol#206) is not in mixedCase
Parameter DsysAMOMinter.giveCollatToAMO(address,uint256).destination_amo (contracts/amo/DsysAMOMinter.sol#225) is not in mixedCase
Parameter DsysAMOMinter.giveCollatToAMO(address,uint256).collat_amount (contracts/amo/DsysAMOMinter.sol#226) is not in mixedCase
Parameter DsysAMOMinter.receiveCollatFromAMO(uint256).usdc_amount (contracts/amo/DsysAMOMinter.sol#244) is not in mixedCase
Parameter DsysAMOMinter.addAMO(address,bool).amo_address (contracts/amo/DsysAMOMinter.sol#259) is not in mixedCase
Parameter DsysAMOMinter.addAMO(address,bool).sync_too (contracts/amo/DsysAMOMinter.sol#259) is not in mixedCase
Parameter DsysAMOMinter.removeAMO(address,bool).amo_address (contracts/amo/DsysAMOMinter.sol#284) is not in mixedCase
Parameter DsysAMOMinter.removeAMO(address,bool).sync_too (contracts/amo/DsysAMOMinter.sol#284) is not in mixedCase
Parameter DsysAMOMinter.setTimelock(address).new_timelock (contracts/amo/DsysAMOMinter.sol#304) is not in mixedCase
Parameter DsysAMOMinter.setCustodian(address)._custodian_address (contracts/amo/DsysAMOMinter.sol#309) is not in mixedCase
Parameter DsysAMOMinter.setFraxMintCap(uint256)._dsys_mint_cap (contracts/amo/DsysAMOMinter.sol#314) is not in mixedCase
Parameter DsysAMOMinter.setDsysSharesMintCap(uint256)._dsys_shares_mint_cap (contracts/amo/DsysAMOMinter.sol#318) is not in mixedCase
Parameter DsysAMOMinter.setCollatBorrowCap(uint256)._collat_borrow_cap (contracts/amo/DsysAMOMinter.sol#322) is not in mixedCase
Parameter DsysAMOMinter.setMinimumCollateralRatio(uint256)._min_cr (contracts/amo/DsysAMOMinter.sol#326) is not in mixedCase
Parameter DsysAMOMinter.setAMOCorrectionOffsets(address,int256,int256).amo_address (contracts/amo/DsysAMOMinter.sol#330) is not in mixedCase
Parameter DsysAMOMinter.setAMOCorrectionOffsets(address,int256,int256).dsys_e18_correction (contracts/amo/DsysAMOMinter.sol#330) is not in mixedCase
Parameter DsysAMOMinter.setAMOCorrectionOffsets(address,int256,int256).collat_e18_correction (contracts/amo/DsysAMOMinter.sol#330) is not in mixedCase
Parameter DsysAMOMinter.setFraxPool(address)._pool_address (contracts/amo/DsysAMOMinter.sol#337) is not in mixedCase
Parameter DsysAMOMinter.execute(address,uint256,bytes)._to (contracts/amo/DsysAMOMinter.sol#353) is not in mixedCase
Parameter DsysAMOMinter.execute(address,uint256,bytes)._value (contracts/amo/DsysAMOMinter.sol#354) is not in mixedCase
Parameter DsysAMOMinter.execute(address,uint256,bytes)._data (contracts/amo/DsysAMOMinter.sol#355) is not in mixedCase
Variable DsysAMOMinter.DSYS (contracts/amo/DsysAMOMinter.sol#16) is not in mixedCase
Variable DsysAMOMinter.DSYSShares (contracts/amo/DsysAMOMinter.sol#17) is not in mixedCase
Variable DsysAMOMinter.collateral_token (contracts/amo/DsysAMOMinter.sol#18) is not in mixedCase
Variable DsysAMOMinter.timelock_address (contracts/amo/DsysAMOMinter.sol#20) is not in mixedCase
Variable DsysAMOMinter.custodian_address (contracts/amo/DsysAMOMinter.sol#21) is not in mixedCase
Variable DsysAMOMinter.collateral_address (contracts/amo/DsysAMOMinter.sol#24) is not in mixedCase
Variable DsysAMOMinter.col_idx (contracts/amo/DsysAMOMinter.sol#25) is not in mixedCase
Variable DsysAMOMinter.amos_array (contracts/amo/DsysAMOMinter.sol#28) is not in mixedCase
Variable DsysAMOMinter.collat_borrow_cap (contracts/amo/DsysAMOMinter.sol#35) is not in mixedCase
Variable DsysAMOMinter.dsys_mint_cap (contracts/amo/DsysAMOMinter.sol#38) is not in mixedCase
Variable DsysAMOMinter.dsys_shares_mint_cap (contracts/amo/DsysAMOMinter.sol#39) is not in mixedCase
Variable DsysAMOMinter.min_cr (contracts/amo/DsysAMOMinter.sol#42) is not in mixedCase
Variable DsysAMOMinter.dsys_mint_balances (contracts/amo/DsysAMOMinter.sol#45) is not in mixedCase
Variable DsysAMOMinter.dsys_mint_sum (contracts/amo/DsysAMOMinter.sol#46) is not in mixedCase
Variable DsysAMOMinter.dsys_shares_mint_balances (contracts/amo/DsysAMOMinter.sol#49) is not in mixedCase
Variable DsysAMOMinter.dsys_shares_mint_sum (contracts/amo/DsysAMOMinter.sol#50) is not in mixedCase
Variable DsysAMOMinter.collat_borrowed_balances (contracts/amo/DsysAMOMinter.sol#53) is not in mixedCase
Variable DsysAMOMinter.collat_borrowed_sum (contracts/amo/DsysAMOMinter.sol#54) is not in mixedCase
Variable DsysAMOMinter.missing_decimals (contracts/amo/DsysAMOMinter.sol#60) is not in mixedCase
Variable DsysAMOMinter.correction_offsets_amos (contracts/amo/DsysAMOMinter.sol#64) is not in mixedCase
Function IDsysAMOMinter.FRAX() (contracts/interfaces/IDsysAMOMinter.sol#7) is not in mixedCase
Function IDsysAMOMinter.FXS() (contracts/interfaces/IDsysAMOMinter.sol#8) is not in mixedCase
Parameter IDsysAMOMinter.addAMO(address,bool).amo_address (contracts/interfaces/IDsysAMOMinter.sol#10) is not in mixedCase
Parameter IDsysAMOMinter.addAMO(address,bool).sync_too (contracts/interfaces/IDsysAMOMinter.sol#10) is not in mixedCase
Function IDsysAMOMinter.amos_array(uint256) (contracts/interfaces/IDsysAMOMinter.sol#14) is not in mixedCase
Parameter IDsysAMOMinter.burnFraxFromAMO(uint256).frax_amount (contracts/interfaces/IDsysAMOMinter.sol#15) is not in mixedCase
Parameter IDsysAMOMinter.burnFxsFromAMO(uint256).fxs_amount (contracts/interfaces/IDsysAMOMinter.sol#16) is not in mixedCase
Function IDsysAMOMinter.col_idx() (contracts/interfaces/IDsysAMOMinter.sol#17) is not in mixedCase
Function IDsysAMOMinter.collat_borrow_cap() (contracts/interfaces/IDsysAMOMinter.sol#20) is not in mixedCase
Function IDsysAMOMinter.collat_borrowed_balances(address) (contracts/interfaces/IDsysAMOMinter.sol#21) is not in mixedCase
Function IDsysAMOMinter.collat_borrowed_sum() (contracts/interfaces/IDsysAMOMinter.sol#22) is not in mixedCase
Function IDsysAMOMinter.collateral_address() (contracts/interfaces/IDsysAMOMinter.sol#23) is not in mixedCase
Function IDsysAMOMinter.collateral_token() (contracts/interfaces/IDsysAMOMinter.sol#24) is not in mixedCase
Function IDsysAMOMinter.correction_offsets_amos(address,uint256) (contracts/interfaces/IDsysAMOMinter.sol#25) is not in mixedCase
Function IDsysAMOMinter.custodian_address() (contracts/interfaces/IDsysAMOMinter.sol#26) is not in mixedCase
Parameter IDsysAMOMinter.fraxTrackedAMO(address).amo_address (contracts/interfaces/IDsysAMOMinter.sol#30) is not in mixedCase
Function IDsysAMOMinter.frax_mint_balances(address) (contracts/interfaces/IDsysAMOMinter.sol#32) is not in mixedCase
Function IDsysAMOMinter.frax_mint_cap() (contracts/interfaces/IDsysAMOMinter.sol#33) is not in mixedCase
Function IDsysAMOMinter.frax_mint_sum() (contracts/interfaces/IDsysAMOMinter.sol#34) is not in mixedCase
Function IDsysAMOMinter.fxs_mint_balances(address) (contracts/interfaces/IDsysAMOMinter.sol#35) is not in mixedCase
Function IDsysAMOMinter.fxs_mint_cap() (contracts/interfaces/IDsysAMOMinter.sol#36) is not in mixedCase
Function IDsysAMOMinter.fxs_mint_sum() (contracts/interfaces/IDsysAMOMinter.sol#37) is not in mixedCase
Parameter IDsysAMOMinter.giveCollatToAMO(address,uint256).destination_amo (contracts/interfaces/IDsysAMOMinter.sol#38) is not in mixedCase
Parameter IDsysAMOMinter.giveCollatToAMO(address,uint256).collat_amount (contracts/interfaces/IDsysAMOMinter.sol#38) is not in mixedCase
Function IDsysAMOMinter.min_cr() (contracts/interfaces/IDsysAMOMinter.sol#39) is not in mixedCase
Parameter IDsysAMOMinter.mintFraxForAMO(address,uint256).destination_amo (contracts/interfaces/IDsysAMOMinter.sol#40) is not in mixedCase
Parameter IDsysAMOMinter.mintFraxForAMO(address,uint256).frax_amount (contracts/interfaces/IDsysAMOMinter.sol#40) is not in mixedCase
Parameter IDsysAMOMinter.mintFxsForAMO(address,uint256).destination_amo (contracts/interfaces/IDsysAMOMinter.sol#41) is not in mixedCase
Parameter IDsysAMOMinter.mintFxsForAMO(address,uint256).fxs_amount (contracts/interfaces/IDsysAMOMinter.sol#41) is not in mixedCase
Function IDsysAMOMinter.missing_decimals() (contracts/interfaces/IDsysAMOMinter.sol#42) is not in mixedCase
Parameter IDsysAMOMinter.oldPoolCollectAndGive(address).destination_amo (contracts/interfaces/IDsysAMOMinter.sol#45) is not in mixedCase
Parameter IDsysAMOMinter.oldPoolRedeem(uint256).frax_amount (contracts/interfaces/IDsysAMOMinter.sol#46) is not in mixedCase
Function IDsysAMOMinter.old_pool() (contracts/interfaces/IDsysAMOMinter.sol#47) is not in mixedCase
Parameter IDsysAMOMinter.receiveCollatFromAMO(uint256).usdc_amount (contracts/interfaces/IDsysAMOMinter.sol#50) is not in mixedCase
Parameter IDsysAMOMinter.removeAMO(address,bool).amo_address (contracts/interfaces/IDsysAMOMinter.sol#52) is not in mixedCase
Parameter IDsysAMOMinter.removeAMO(address,bool).sync_too (contracts/interfaces/IDsysAMOMinter.sol#52) is not in mixedCase
Parameter IDsysAMOMinter.setAMOCorrectionOffsets(address,int256,int256).amo_address (contracts/interfaces/IDsysAMOMinter.sol#53) is not in mixedCase
Parameter IDsysAMOMinter.setAMOCorrectionOffsets(address,int256,int256).frax_e18_correction (contracts/interfaces/IDsysAMOMinter.sol#53) is not in mixedCase
Parameter IDsysAMOMinter.setAMOCorrectionOffsets(address,int256,int256).collat_e18_correction (contracts/interfaces/IDsysAMOMinter.sol#53) is not in mixedCase
Parameter IDsysAMOMinter.setCollatBorrowCap(uint256)._collat_borrow_cap (contracts/interfaces/IDsysAMOMinter.sol#54) is not in mixedCase
Parameter IDsysAMOMinter.setCustodian(address)._custodian_address (contracts/interfaces/IDsysAMOMinter.sol#55) is not in mixedCase
Parameter IDsysAMOMinter.setFraxMintCap(uint256)._frax_mint_cap (contracts/interfaces/IDsysAMOMinter.sol#56) is not in mixedCase
Parameter IDsysAMOMinter.setFraxPool(address)._pool_address (contracts/interfaces/IDsysAMOMinter.sol#57) is not in mixedCase
Parameter IDsysAMOMinter.setFxsMintCap(uint256)._fxs_mint_cap (contracts/interfaces/IDsysAMOMinter.sol#58) is not in mixedCase
Parameter IDsysAMOMinter.setMinimumCollateralRatio(uint256)._min_cr (contracts/interfaces/IDsysAMOMinter.sol#59) is not in mixedCase
Parameter IDsysAMOMinter.setTimelock(address).new_timelock (contracts/interfaces/IDsysAMOMinter.sol#60) is not in mixedCase
Function IDsysAMOMinter.timelock_address() (contracts/interfaces/IDsysAMOMinter.sol#62) is not in mixedCase
Parameter IDsysPool.amoMinterBorrow(uint256).collateral_amount (contracts/interfaces/IDsysPool.sol#6) is not in mixedCase
Function IDsysPool.minting_fee() (contracts/interfaces/IDsysPool.sol#8) is not in mixedCase
Function IDsysPool.redemption_fee() (contracts/interfaces/IDsysPool.sol#10) is not in mixedCase
Function IDsysPool.buyback_fee() (contracts/interfaces/IDsysPool.sol#11) is not in mixedCase
Function IDsysPool.recollat_fee() (contracts/interfaces/IDsysPool.sol#12) is not in mixedCase
Parameter IDsysPool.setCollatETHOracle(address,address)._collateral_weth_oracle_address (contracts/interfaces/IDsysPool.sol#16) is not in mixedCase
Parameter IDsysPool.setCollatETHOracle(address,address)._weth_address (contracts/interfaces/IDsysPool.sol#16) is not in mixedCase
Parameter IDsysPool.mint1t1FRAX(uint256,uint256).collateral_amount (contracts/interfaces/IDsysPool.sol#17) is not in mixedCase
Parameter IDsysPool.mint1t1FRAX(uint256,uint256).FRAX_out_min (contracts/interfaces/IDsysPool.sol#17) is not in mixedCase
Parameter IDsysPool.mintAlgorithmicFRAX(uint256,uint256).fxs_amount_d18 (contracts/interfaces/IDsysPool.sol#18) is not in mixedCase
Parameter IDsysPool.mintAlgorithmicFRAX(uint256,uint256).FRAX_out_min (contracts/interfaces/IDsysPool.sol#18) is not in mixedCase
Parameter IDsysPool.mintFractionalFRAX(uint256,uint256,uint256).collateral_amount (contracts/interfaces/IDsysPool.sol#19) is not in mixedCase
Parameter IDsysPool.mintFractionalFRAX(uint256,uint256,uint256).fxs_amount (contracts/interfaces/IDsysPool.sol#19) is not in mixedCase
Parameter IDsysPool.mintFractionalFRAX(uint256,uint256,uint256).FRAX_out_min (contracts/interfaces/IDsysPool.sol#19) is not in mixedCase
Parameter IDsysPool.redeem1t1FRAX(uint256,uint256).FRAX_amount (contracts/interfaces/IDsysPool.sol#20) is not in mixedCase
Parameter IDsysPool.redeem1t1FRAX(uint256,uint256).COLLATERAL_out_min (contracts/interfaces/IDsysPool.sol#20) is not in mixedCase
Parameter IDsysPool.redeemFractionalFRAX(uint256,uint256,uint256).FRAX_amount (contracts/interfaces/IDsysPool.sol#21) is not in mixedCase
Parameter IDsysPool.redeemFractionalFRAX(uint256,uint256,uint256).FXS_out_min (contracts/interfaces/IDsysPool.sol#21) is not in mixedCase
Parameter IDsysPool.redeemFractionalFRAX(uint256,uint256,uint256).COLLATERAL_out_min (contracts/interfaces/IDsysPool.sol#21) is not in mixedCase
Parameter IDsysPool.redeemAlgorithmicFRAX(uint256,uint256).FRAX_amount (contracts/interfaces/IDsysPool.sol#22) is not in mixedCase
Parameter IDsysPool.redeemAlgorithmicFRAX(uint256,uint256).FXS_out_min (contracts/interfaces/IDsysPool.sol#22) is not in mixedCase
Parameter IDsysPool.recollateralizeFRAX(uint256,uint256).collateral_amount (contracts/interfaces/IDsysPool.sol#24) is not in mixedCase
Parameter IDsysPool.recollateralizeFRAX(uint256,uint256).FXS_out_min (contracts/interfaces/IDsysPool.sol#24) is not in mixedCase
Parameter IDsysPool.buyBackFXS(uint256,uint256).FXS_amount (contracts/interfaces/IDsysPool.sol#25) is not in mixedCase
Parameter IDsysPool.buyBackFXS(uint256,uint256).COLLATERAL_out_min (contracts/interfaces/IDsysPool.sol#25) is not in mixedCase
Parameter IDsysPool.toggleCollateralPrice(uint256)._new_price (contracts/interfaces/IDsysPool.sol#30) is not in mixedCase
Parameter IDsysPool.setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256).new_ceiling (contracts/interfaces/IDsysPool.sol#31) is not in mixedCase
Parameter IDsysPool.setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256).new_bonus_rate (contracts/interfaces/IDsysPool.sol#31) is not in mixedCase
Parameter IDsysPool.setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256).new_redemption_delay (contracts/interfaces/IDsysPool.sol#31) is not in mixedCase
Parameter IDsysPool.setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256).new_mint_fee (contracts/interfaces/IDsysPool.sol#31) is not in mixedCase
Parameter IDsysPool.setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256).new_redeem_fee (contracts/interfaces/IDsysPool.sol#31) is not in mixedCase
Parameter IDsysPool.setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256).new_buyback_fee (contracts/interfaces/IDsysPool.sol#31) is not in mixedCase
Parameter IDsysPool.setPoolParameters(uint256,uint256,uint256,uint256,uint256,uint256,uint256).new_recollat_fee (contracts/interfaces/IDsysPool.sol#31) is not in mixedCase
Parameter IDsysPool.setTimelock(address).new_timelock (contracts/interfaces/IDsysPool.sol#32) is not in mixedCase
Parameter IDsysPool.setOwner(address)._owner_address (contracts/interfaces/IDsysPool.sol#33) is not in mixedCase
Function IDsysShares.DEFAULT_ADMIN_ROLE() (contracts/interfaces/IDsysShares.sol#6) is not in mixedCase
Function IDsysShares.FRAXStablecoinAdd() (contracts/interfaces/IDsysShares.sol#7) is not in mixedCase
Function IDsysShares.FXS_DAO_min() (contracts/interfaces/IDsysShares.sol#8) is not in mixedCase
Function IDsysShares.genesis_supply() (contracts/interfaces/IDsysShares.sol#17) is not in mixedCase
Function IDsysShares.oracle_address() (contracts/interfaces/IDsysShares.sol#29) is not in mixedCase
Function IDsysShares.owner_address() (contracts/interfaces/IDsysShares.sol#30) is not in mixedCase
Function IDsysShares.pool_burn_from(address,uint256) (contracts/interfaces/IDsysShares.sol#31) is not in mixedCase
Parameter IDsysShares.pool_burn_from(address,uint256).b_address (contracts/interfaces/IDsysShares.sol#31) is not in mixedCase
Parameter IDsysShares.pool_burn_from(address,uint256).b_amount (contracts/interfaces/IDsysShares.sol#31) is not in mixedCase
Function IDsysShares.pool_mint(address,uint256) (contracts/interfaces/IDsysShares.sol#32) is not in mixedCase
Parameter IDsysShares.pool_mint(address,uint256).m_address (contracts/interfaces/IDsysShares.sol#32) is not in mixedCase
Parameter IDsysShares.pool_mint(address,uint256).m_amount (contracts/interfaces/IDsysShares.sol#32) is not in mixedCase
Parameter IDsysShares.setFRAXAddress(address).frax_contract_address (contracts/interfaces/IDsysShares.sol#35) is not in mixedCase
Parameter IDsysShares.setFXSMinDAO(uint256).min_FXS (contracts/interfaces/IDsysShares.sol#36) is not in mixedCase
Parameter IDsysShares.setOracle(address).new_oracle (contracts/interfaces/IDsysShares.sol#37) is not in mixedCase
Parameter IDsysShares.setOwner(address)._owner_address (contracts/interfaces/IDsysShares.sol#38) is not in mixedCase
Parameter IDsysShares.setTimelock(address).new_timelock (contracts/interfaces/IDsysShares.sol#39) is not in mixedCase
Function IDsysShares.timelock_address() (contracts/interfaces/IDsysShares.sol#41) is not in mixedCase
Function IDsysStablecoin.COLLATERAL_RATIO_PAUSER() (contracts/interfaces/IDsysStablecoin.sol#6) is not in mixedCase
Function IDsysStablecoin.DEFAULT_ADMIN_ADDRESS() (contracts/interfaces/IDsysStablecoin.sol#7) is not in mixedCase
Function IDsysStablecoin.DEFAULT_ADMIN_ROLE() (contracts/interfaces/IDsysStablecoin.sol#8) is not in mixedCase
Parameter IDsysStablecoin.addPool(address).pool_address (contracts/interfaces/IDsysStablecoin.sol#9) is not in mixedCase
Function IDsysStablecoin.collateral_ratio_paused() (contracts/interfaces/IDsysStablecoin.sol#15) is not in mixedCase
Function IDsysStablecoin.controller_address() (contracts/interfaces/IDsysStablecoin.sol#16) is not in mixedCase
Function IDsysStablecoin.creator_address() (contracts/interfaces/IDsysStablecoin.sol#17) is not in mixedCase
Function IDsysStablecoin.eth_usd_consumer_address() (contracts/interfaces/IDsysStablecoin.sol#20) is not in mixedCase
Function IDsysStablecoin.eth_usd_price() (contracts/interfaces/IDsysStablecoin.sol#21) is not in mixedCase
Function IDsysStablecoin.dsys_eth_oracle_address() (contracts/interfaces/IDsysStablecoin.sol#22) is not in mixedCase
Function IDsysStablecoin.dsys_info() (contracts/interfaces/IDsysStablecoin.sol#23) is not in mixedCase
Function IDsysStablecoin.pools_array(uint256) (contracts/interfaces/IDsysStablecoin.sol#25) is not in mixedCase
Function IDsysStablecoin.dsys_price() (contracts/interfaces/IDsysStablecoin.sol#26) is not in mixedCase
Function IDsysStablecoin.fxs_address() (contracts/interfaces/IDsysStablecoin.sol#28) is not in mixedCase
Function IDsysStablecoin.fxs_eth_oracle_address() (contracts/interfaces/IDsysStablecoin.sol#29) is not in mixedCase
Function IDsysStablecoin.dsys_shares_price() (contracts/interfaces/IDsysStablecoin.sol#30) is not in mixedCase
Function IDsysStablecoin.genesis_supply() (contracts/interfaces/IDsysStablecoin.sol#31) is not in mixedCase
Function IDsysStablecoin.global_collateral_ratio() (contracts/interfaces/IDsysStablecoin.sol#36) is not in mixedCase
Function IDsysStablecoin.last_call_time() (contracts/interfaces/IDsysStablecoin.sol#40) is not in mixedCase
Function IDsysStablecoin.minting_fee() (contracts/interfaces/IDsysStablecoin.sol#41) is not in mixedCase
Function IDsysStablecoin.owner_address() (contracts/interfaces/IDsysStablecoin.sol#43) is not in mixedCase
Function IDsysStablecoin.pool_burn_from(address,uint256) (contracts/interfaces/IDsysStablecoin.sol#44) is not in mixedCase
Parameter IDsysStablecoin.pool_burn_from(address,uint256).b_address (contracts/interfaces/IDsysStablecoin.sol#44) is not in mixedCase
Parameter IDsysStablecoin.pool_burn_from(address,uint256).b_amount (contracts/interfaces/IDsysStablecoin.sol#44) is not in mixedCase
Function IDsysStablecoin.pool_mint(address,uint256) (contracts/interfaces/IDsysStablecoin.sol#45) is not in mixedCase
Parameter IDsysStablecoin.pool_mint(address,uint256).m_address (contracts/interfaces/IDsysStablecoin.sol#45) is not in mixedCase
Parameter IDsysStablecoin.pool_mint(address,uint256).m_amount (contracts/interfaces/IDsysStablecoin.sol#45) is not in mixedCase
Function IDsysStablecoin.price_band() (contracts/interfaces/IDsysStablecoin.sol#46) is not in mixedCase
Function IDsysStablecoin.price_target() (contracts/interfaces/IDsysStablecoin.sol#47) is not in mixedCase
Function IDsysStablecoin.redemption_fee() (contracts/interfaces/IDsysStablecoin.sol#48) is not in mixedCase
Function IDsysStablecoin.refresh_cooldown() (contracts/interfaces/IDsysStablecoin.sol#50) is not in mixedCase
Parameter IDsysStablecoin.removePool(address).pool_address (contracts/interfaces/IDsysStablecoin.sol#51) is not in mixedCase
Parameter IDsysStablecoin.setController(address)._controller_address (contracts/interfaces/IDsysStablecoin.sol#54) is not in mixedCase
Parameter IDsysStablecoin.setETHUSDOracle(address)._eth_usd_consumer_address (contracts/interfaces/IDsysStablecoin.sol#55) is not in mixedCase
Parameter IDsysStablecoin.setFRAXEthOracle(address,address)._frax_oracle_addr (contracts/interfaces/IDsysStablecoin.sol#56) is not in mixedCase
Parameter IDsysStablecoin.setFRAXEthOracle(address,address)._weth_address (contracts/interfaces/IDsysStablecoin.sol#56) is not in mixedCase
Parameter IDsysStablecoin.setFXSAddress(address)._fxs_address (contracts/interfaces/IDsysStablecoin.sol#57) is not in mixedCase
Parameter IDsysStablecoin.setFXSEthOracle(address,address)._fxs_oracle_addr (contracts/interfaces/IDsysStablecoin.sol#58) is not in mixedCase
Parameter IDsysStablecoin.setFXSEthOracle(address,address)._weth_address (contracts/interfaces/IDsysStablecoin.sol#58) is not in mixedCase
Parameter IDsysStablecoin.setFraxStep(uint256)._new_step (contracts/interfaces/IDsysStablecoin.sol#59) is not in mixedCase
Parameter IDsysStablecoin.setMintingFee(uint256).min_fee (contracts/interfaces/IDsysStablecoin.sol#60) is not in mixedCase
Parameter IDsysStablecoin.setOwner(address)._owner_address (contracts/interfaces/IDsysStablecoin.sol#61) is not in mixedCase
Parameter IDsysStablecoin.setPriceBand(uint256)._price_band (contracts/interfaces/IDsysStablecoin.sol#62) is not in mixedCase
Parameter IDsysStablecoin.setPriceTarget(uint256)._new_price_target (contracts/interfaces/IDsysStablecoin.sol#63) is not in mixedCase
Parameter IDsysStablecoin.setRedemptionFee(uint256).red_fee (contracts/interfaces/IDsysStablecoin.sol#64) is not in mixedCase
Parameter IDsysStablecoin.setRefreshCooldown(uint256)._new_cooldown (contracts/interfaces/IDsysStablecoin.sol#65) is not in mixedCase
Parameter IDsysStablecoin.setTimelock(address).new_timelock (contracts/interfaces/IDsysStablecoin.sol#66) is not in mixedCase
Function IDsysStablecoin.timelock_address() (contracts/interfaces/IDsysStablecoin.sol#68) is not in mixedCase
Function IDsysStablecoin.weth_address() (contracts/interfaces/IDsysStablecoin.sol#73) is not in mixedCase
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (contracts/interfaces/IUniswapV2Pair.sol#20) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (contracts/interfaces/IUniswapV2Pair.sol#21) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (contracts/interfaces/IUniswapV2Pair.sol#38) is not in mixedCase
Struct FixedPoint.uq112x112 (contracts/libraries/FixedPoint.sol#11-13) is not in CapWords
Struct FixedPoint.uq144x112 (contracts/libraries/FixedPoint.sol#17-19) is not in CapWords
Function IMockERC20.DOMAIN_SEPARATOR() (contracts/mock/swap/IMockERC20.sol#20) is not in mixedCase
Function IMockERC20.PERMIT_TYPEHASH() (contracts/mock/swap/IMockERC20.sol#21) is not in mixedCase
Function IMockFactory.INIT_CODE_PAIR_HASH() (contracts/mock/swap/IMockFactory.sol#21) is not in mixedCase
Function IMockPair.DOMAIN_SEPARATOR() (contracts/mock/swap/IMockPair.sol#20) is not in mixedCase
Function IMockPair.PERMIT_TYPEHASH() (contracts/mock/swap/IMockPair.sol#21) is not in mixedCase
Function IMockPair.MINIMUM_LIQUIDITY() (contracts/mock/swap/IMockPair.sol#38) is not in mixedCase
Function IMockRouter.WETH() (contracts/mock/swap/IMockRouter.sol#7) is not in mixedCase
Variable MockERC20.DOMAIN_SEPARATOR (contracts/mock/swap/MockERC20.sol#18) is not in mixedCase
Parameter MockFactory.setFeeTo(address)._feeTo (contracts/mock/swap/MockFactory.sol#48) is not in mixedCase
Parameter MockFactory.setFeeToSetter(address)._feeToSetter (contracts/mock/swap/MockFactory.sol#53) is not in mixedCase
Parameter MockPair.initialize(address,address)._token0 (contracts/mock/swap/MockPair.sol#71) is not in mixedCase
Parameter MockPair.initialize(address,address)._token1 (contracts/mock/swap/MockPair.sol#71) is not in mixedCase
Parameter MockRouter.setSwapMining(address)._swapMining (contracts/mock/swap/MockRouter.sol#30) is not in mixedCase
Variable MockRouter.WETH (contracts/mock/swap/MockRouter.sol#18) is not in mixedCase
Parameter UniswapPairOracle.setTimelock(address)._timelock_address (contracts/oracle/UniswapPairOracle.sol#59) is not in mixedCase
Parameter UniswapPairOracle.setPeriod(uint256)._period (contracts/oracle/UniswapPairOracle.sol#63) is not in mixedCase
Parameter UniswapPairOracle.setConsultLeniency(uint256)._consult_leniency (contracts/oracle/UniswapPairOracle.sol#67) is not in mixedCase
Parameter UniswapPairOracle.setAllowStaleConsults(bool)._allow_stale_consults (contracts/oracle/UniswapPairOracle.sol#71) is not in mixedCase
Variable UniswapPairOracle.timelock_address (contracts/oracle/UniswapPairOracle.sol#16) is not in mixedCase
Variable UniswapPairOracle.PERIOD (contracts/oracle/UniswapPairOracle.sol#18) is not in mixedCase
Variable UniswapPairOracle.CONSULT_LENIENCY (contracts/oracle/UniswapPairOracle.sol#19) is not in mixedCase
Variable UniswapPairOracle.ALLOW_STALE_CONSULTS (contracts/oracle/UniswapPairOracle.sol#20) is not in mixedCase
Function DsysPool.collateral_information(address) (contracts/pool/DsysPool.sol#172-195) is not in mixedCase
Parameter DsysPool.collateral_information(address).collat_address (contracts/pool/DsysPool.sol#172) is not in mixedCase
Parameter DsysPool.getDSYSInCollateral(uint256,uint256).col_idx (contracts/pool/DsysPool.sol#210) is not in mixedCase
Parameter DsysPool.getDSYSInCollateral(uint256,uint256).dusd_amount (contracts/pool/DsysPool.sol#210) is not in mixedCase
Parameter DsysPool.freeCollatBalance(uint256).col_idx (contracts/pool/DsysPool.sol#215) is not in mixedCase
Parameter DsysPool.mintDUSD(uint256,uint256,uint256,bool).col_idx (contracts/pool/DsysPool.sol#313) is not in mixedCase
Parameter DsysPool.mintDUSD(uint256,uint256,uint256,bool).dusd_amt (contracts/pool/DsysPool.sol#314) is not in mixedCase
Parameter DsysPool.mintDUSD(uint256,uint256,uint256,bool).dusd_out_min (contracts/pool/DsysPool.sol#315) is not in mixedCase
Parameter DsysPool.mintDUSD(uint256,uint256,uint256,bool).one_to_one_override (contracts/pool/DsysPool.sol#316) is not in mixedCase
Parameter DsysPool.redeemDUSD(uint256,uint256,uint256,uint256).col_idx (contracts/pool/DsysPool.sol#361) is not in mixedCase
Parameter DsysPool.redeemDUSD(uint256,uint256,uint256,uint256).frax_amount (contracts/pool/DsysPool.sol#362) is not in mixedCase
Parameter DsysPool.redeemDUSD(uint256,uint256,uint256,uint256).fxs_out_min (contracts/pool/DsysPool.sol#363) is not in mixedCase
Parameter DsysPool.redeemDUSD(uint256,uint256,uint256,uint256).col_out_min (contracts/pool/DsysPool.sol#364) is not in mixedCase
Parameter DsysPool.collectRedemption(uint256).col_idx (contracts/pool/DsysPool.sol#422) is not in mixedCase
Parameter DsysPool.buyBackFxs(uint256,uint256,uint256).col_idx (contracts/pool/DsysPool.sol#454) is not in mixedCase
Parameter DsysPool.buyBackFxs(uint256,uint256,uint256).fxs_amount (contracts/pool/DsysPool.sol#454) is not in mixedCase
Parameter DsysPool.buyBackFxs(uint256,uint256,uint256).col_out_min (contracts/pool/DsysPool.sol#454) is not in mixedCase
Parameter DsysPool.recollateralize(uint256,uint256,uint256).col_idx (contracts/pool/DsysPool.sol#489) is not in mixedCase
Parameter DsysPool.recollateralize(uint256,uint256,uint256).collateral_amount (contracts/pool/DsysPool.sol#489) is not in mixedCase
Parameter DsysPool.recollateralize(uint256,uint256,uint256).fxs_out_min (contracts/pool/DsysPool.sol#489) is not in mixedCase
Parameter DsysPool.amoMinterBorrow(uint256).collateral_amount (contracts/pool/DsysPool.sol#519) is not in mixedCase
Parameter DsysPool.toggleMRBR(uint256,uint8).col_idx (contracts/pool/DsysPool.sol#527) is not in mixedCase
Parameter DsysPool.toggleMRBR(uint256,uint8).tog_idx (contracts/pool/DsysPool.sol#527) is not in mixedCase
Parameter DsysPool.addAMOMinter(address).amo_minter_addr (contracts/pool/DsysPool.sol#537) is not in mixedCase
Parameter DsysPool.removeAMOMinter(address).amo_minter_addr (contracts/pool/DsysPool.sol#550) is not in mixedCase
Parameter DsysPool.setCollateralPrice(uint256,uint256).col_idx (contracts/pool/DsysPool.sol#556) is not in mixedCase
Parameter DsysPool.setCollateralPrice(uint256,uint256)._new_price (contracts/pool/DsysPool.sol#556) is not in mixedCase
Parameter DsysPool.toggleCollateral(uint256).col_idx (contracts/pool/DsysPool.sol#563) is not in mixedCase
Parameter DsysPool.setPoolCeiling(uint256,uint256).col_idx (contracts/pool/DsysPool.sol#570) is not in mixedCase
Parameter DsysPool.setPoolCeiling(uint256,uint256).new_ceiling (contracts/pool/DsysPool.sol#570) is not in mixedCase
Parameter DsysPool.setFees(uint256,uint256,uint256,uint256,uint256).col_idx (contracts/pool/DsysPool.sol#576) is not in mixedCase
Parameter DsysPool.setFees(uint256,uint256,uint256,uint256,uint256).new_mint_fee (contracts/pool/DsysPool.sol#576) is not in mixedCase
Parameter DsysPool.setFees(uint256,uint256,uint256,uint256,uint256).new_redeem_fee (contracts/pool/DsysPool.sol#576) is not in mixedCase
Parameter DsysPool.setFees(uint256,uint256,uint256,uint256,uint256).new_buyback_fee (contracts/pool/DsysPool.sol#576) is not in mixedCase
Parameter DsysPool.setFees(uint256,uint256,uint256,uint256,uint256).new_recollat_fee (contracts/pool/DsysPool.sol#576) is not in mixedCase
Parameter DsysPool.setPoolParameters(uint256,uint256).new_bonus_rate (contracts/pool/DsysPool.sol#585) is not in mixedCase
Parameter DsysPool.setPoolParameters(uint256,uint256).new_redemption_delay (contracts/pool/DsysPool.sol#585) is not in mixedCase
Parameter DsysPool.setPriceThresholds(uint256,uint256).new_mint_price_threshold (contracts/pool/DsysPool.sol#591) is not in mixedCase
Parameter DsysPool.setPriceThresholds(uint256,uint256).new_redeem_price_threshold (contracts/pool/DsysPool.sol#591) is not in mixedCase
Parameter DsysPool.setBbkRctPerHour(uint256,uint256)._bbkMaxColE18OutPerHour (contracts/pool/DsysPool.sol#597) is not in mixedCase
Parameter DsysPool.setBbkRctPerHour(uint256,uint256)._rctMaxFxsOutPerHour (contracts/pool/DsysPool.sol#597) is not in mixedCase
Parameter DsysPool.setCustodian(address).new_custodian (contracts/pool/DsysPool.sol#603) is not in mixedCase
Parameter DsysPool.setTimelock(address).new_timelock (contracts/pool/DsysPool.sol#609) is not in mixedCase
Variable DsysPool.timelock_address (contracts/pool/DsysPool.sol#32) is not in mixedCase
Variable DsysPool.custodian_address (contracts/pool/DsysPool.sol#33) is not in mixedCase
Variable DsysPool.DSYS (contracts/pool/DsysPool.sol#34) is not in mixedCase
Variable DsysPool.DSYSShares (contracts/pool/DsysPool.sol#35) is not in mixedCase
Variable DsysPool.amo_minter_addresses (contracts/pool/DsysPool.sol#36) is not in mixedCase
Variable DsysPool.collateral_addresses (contracts/pool/DsysPool.sol#39) is not in mixedCase
Variable DsysPool.collateral_symbols (contracts/pool/DsysPool.sol#40) is not in mixedCase
Variable DsysPool.missing_decimals (contracts/pool/DsysPool.sol#41) is not in mixedCase
Variable DsysPool.pool_ceilings (contracts/pool/DsysPool.sol#42) is not in mixedCase
Variable DsysPool.collateral_prices (contracts/pool/DsysPool.sol#43) is not in mixedCase
Variable DsysPool.enabled_collaterals (contracts/pool/DsysPool.sol#45) is not in mixedCase
Variable DsysPool.redeem_dsys_shares_balances (contracts/pool/DsysPool.sol#48) is not in mixedCase
Variable DsysPool.redeem_collateral_balances (contracts/pool/DsysPool.sol#49) is not in mixedCase
Variable DsysPool.unclaimed_pool_collateral (contracts/pool/DsysPool.sol#50) is not in mixedCase
Variable DsysPool.unclaimed_pool_dsys_shares (contracts/pool/DsysPool.sol#51) is not in mixedCase
Variable DsysPool.last_redeemed (contracts/pool/DsysPool.sol#52) is not in mixedCase
Variable DsysPool.redemption_delay (contracts/pool/DsysPool.sol#53) is not in mixedCase
Variable DsysPool.redeem_price_threshold (contracts/pool/DsysPool.sol#54) is not in mixedCase
Variable DsysPool.mint_price_threshold (contracts/pool/DsysPool.sol#55) is not in mixedCase
Variable DsysPool.minting_fee (contracts/pool/DsysPool.sol#67) is not in mixedCase
Variable DsysPool.redemption_fee (contracts/pool/DsysPool.sol#68) is not in mixedCase
Variable DsysPool.buyback_fee (contracts/pool/DsysPool.sol#69) is not in mixedCase
Variable DsysPool.recollat_fee (contracts/pool/DsysPool.sol#70) is not in mixedCase
Variable DsysPool.bonus_rate (contracts/pool/DsysPool.sol#71) is not in mixedCase
Parameter DsysShares.setOracle(address).new_oracle (contracts/token/DsysShares.sol#64) is not in mixedCase
Parameter DsysShares.setTimelock(address).new_timelock (contracts/token/DsysShares.sol#68) is not in mixedCase
Parameter DsysShares.setDSYSAddress(address).dsys_contract_address (contracts/token/DsysShares.sol#72) is not in mixedCase
Parameter DsysShares.setDsysMinDAO(uint256).min_dsys (contracts/token/DsysShares.sol#76) is not in mixedCase
Parameter DsysShares.setOwner(address)._owner_address (contracts/token/DsysShares.sol#80) is not in mixedCase
Function DsysShares.pool_mint(address,uint256) (contracts/token/DsysShares.sol#89-100) is not in mixedCase
Parameter DsysShares.pool_mint(address,uint256).m_address (contracts/token/DsysShares.sol#89) is not in mixedCase
Parameter DsysShares.pool_mint(address,uint256).m_amount (contracts/token/DsysShares.sol#89) is not in mixedCase
Function DsysShares.pool_burn_from(address,uint256) (contracts/token/DsysShares.sol#103-114) is not in mixedCase
Parameter DsysShares.pool_burn_from(address,uint256).b_address (contracts/token/DsysShares.sol#103) is not in mixedCase
Parameter DsysShares.pool_burn_from(address,uint256).b_amount (contracts/token/DsysShares.sol#103) is not in mixedCase
Constant DsysShares.genesis_supply (contracts/token/DsysShares.sol#16) is not in UPPER_CASE_WITH_UNDERSCORES
Variable DsysShares.dsys_share_dao_min (contracts/token/DsysShares.sol#17) is not in mixedCase
Variable DsysShares.owner_address (contracts/token/DsysShares.sol#19) is not in mixedCase
Variable DsysShares.oracle_address (contracts/token/DsysShares.sol#20) is not in mixedCase
Variable DsysShares.timelock_address (contracts/token/DsysShares.sol#21) is not in mixedCase
Variable DsysShares.DSYS (contracts/token/DsysShares.sol#22) is not in mixedCase
Variable DsysShares.tracking_votes (contracts/token/DsysShares.sol#24) is not in mixedCase
Function DsysStablecoin.oracle_price(DsysStablecoin.PriceChoice) (contracts/token/DsysStablecoin.sol#99-113) is not in mixedCase
Function DsysStablecoin.dsys_price() (contracts/token/DsysStablecoin.sol#116-118) is not in mixedCase
Function DsysStablecoin.dsys_shares_price() (contracts/token/DsysStablecoin.sol#121-123) is not in mixedCase
Function DsysStablecoin.eth_usd_price() (contracts/token/DsysStablecoin.sol#125-127) is not in mixedCase
Function DsysStablecoin.dsys_info() (contracts/token/DsysStablecoin.sol#145-156) is not in mixedCase
Function DsysStablecoin.pool_burn_from(address,uint256) (contracts/token/DsysStablecoin.sol#185-188) is not in mixedCase
Parameter DsysStablecoin.pool_burn_from(address,uint256).b_address (contracts/token/DsysStablecoin.sol#185) is not in mixedCase
Parameter DsysStablecoin.pool_burn_from(address,uint256).b_amount (contracts/token/DsysStablecoin.sol#185) is not in mixedCase
Function DsysStablecoin.pool_mint(address,uint256) (contracts/token/DsysStablecoin.sol#191-194) is not in mixedCase
Parameter DsysStablecoin.pool_mint(address,uint256).m_address (contracts/token/DsysStablecoin.sol#191) is not in mixedCase
Parameter DsysStablecoin.pool_mint(address,uint256).m_amount (contracts/token/DsysStablecoin.sol#191) is not in mixedCase
Parameter DsysStablecoin.addPool(address).pool_address (contracts/token/DsysStablecoin.sol#197) is not in mixedCase
Parameter DsysStablecoin.removePool(address).pool_address (contracts/token/DsysStablecoin.sol#204) is not in mixedCase
Parameter DsysStablecoin.setOwner(address)._owner_address (contracts/token/DsysStablecoin.sol#219) is not in mixedCase
Parameter DsysStablecoin.setRedemptionFee(uint256).red_fee (contracts/token/DsysStablecoin.sol#223) is not in mixedCase
Parameter DsysStablecoin.setMintingFee(uint256).min_fee (contracts/token/DsysStablecoin.sol#227) is not in mixedCase
Parameter DsysStablecoin.setStep(uint256)._new_step (contracts/token/DsysStablecoin.sol#231) is not in mixedCase
Parameter DsysStablecoin.setPriceTarget(uint256)._new_price_target (contracts/token/DsysStablecoin.sol#235) is not in mixedCase
Parameter DsysStablecoin.setRefreshCooldown(uint256)._new_cooldown (contracts/token/DsysStablecoin.sol#239) is not in mixedCase
Parameter DsysStablecoin.setDsysShareAddress(address)._dsys_share_address (contracts/token/DsysStablecoin.sol#243) is not in mixedCase
Parameter DsysStablecoin.setETHUSDOracle(address)._eth_usd_consumer_address (contracts/token/DsysStablecoin.sol#247) is not in mixedCase
Parameter DsysStablecoin.setTimelock(address).new_timelock (contracts/token/DsysStablecoin.sol#252) is not in mixedCase
Parameter DsysStablecoin.setController(address)._controller_address (contracts/token/DsysStablecoin.sol#256) is not in mixedCase
Parameter DsysStablecoin.setPriceBand(uint256)._price_band (contracts/token/DsysStablecoin.sol#260) is not in mixedCase
Parameter DsysStablecoin.setDsysEthOracle(address,address)._dsys_oracle_addr (contracts/token/DsysStablecoin.sol#265) is not in mixedCase
Parameter DsysStablecoin.setDsysEthOracle(address,address)._weth_address (contracts/token/DsysStablecoin.sol#265) is not in mixedCase
Parameter DsysStablecoin.setDsysShareEthOracle(address,address)._dsys_share_oracle_addr (contracts/token/DsysStablecoin.sol#272) is not in mixedCase
Parameter DsysStablecoin.setDsysShareEthOracle(address,address)._weth_address (contracts/token/DsysStablecoin.sol#272) is not in mixedCase
Variable DsysStablecoin.eth_usd_pricer (contracts/token/DsysStablecoin.sol#25) is not in mixedCase
Variable DsysStablecoin.eth_usd_pricer_decimals (contracts/token/DsysStablecoin.sol#26) is not in mixedCase
Variable DsysStablecoin.dsys_eth_oracle (contracts/token/DsysStablecoin.sol#27) is not in mixedCase
Variable DsysStablecoin.dsys_share_eth_oracle (contracts/token/DsysStablecoin.sol#28) is not in mixedCase
Variable DsysStablecoin.owner_address (contracts/token/DsysStablecoin.sol#29) is not in mixedCase
Variable DsysStablecoin.creator_address (contracts/token/DsysStablecoin.sol#30) is not in mixedCase
Variable DsysStablecoin.timelock_address (contracts/token/DsysStablecoin.sol#31) is not in mixedCase
Variable DsysStablecoin.controller_address (contracts/token/DsysStablecoin.sol#32) is not in mixedCase
Variable DsysStablecoin.dsys_share_address (contracts/token/DsysStablecoin.sol#33) is not in mixedCase
Variable DsysStablecoin.dsys_eth_oracle_address (contracts/token/DsysStablecoin.sol#34) is not in mixedCase
Variable DsysStablecoin.dsys_share_eth_oracle_address (contracts/token/DsysStablecoin.sol#35) is not in mixedCase
Variable DsysStablecoin.weth_address (contracts/token/DsysStablecoin.sol#36) is not in mixedCase
Constant DsysStablecoin.genesis_supply (contracts/token/DsysStablecoin.sol#37) is not in UPPER_CASE_WITH_UNDERSCORES
Variable DsysStablecoin.pools_array (contracts/token/DsysStablecoin.sol#39) is not in mixedCase
Variable DsysStablecoin.global_collateral_ratio (contracts/token/DsysStablecoin.sol#44) is not in mixedCase
Variable DsysStablecoin.redemption_fee (contracts/token/DsysStablecoin.sol#45) is not in mixedCase
Variable DsysStablecoin.minting_fee (contracts/token/DsysStablecoin.sol#46) is not in mixedCase
Variable DsysStablecoin.refresh_cooldown (contracts/token/DsysStablecoin.sol#48) is not in mixedCase
Variable DsysStablecoin.price_target (contracts/token/DsysStablecoin.sol#49) is not in mixedCase
Variable DsysStablecoin.price_band (contracts/token/DsysStablecoin.sol#50) is not in mixedCase
Variable DsysStablecoin.collateral_ratio_paused (contracts/token/DsysStablecoin.sol#53) is not in mixedCase
Variable DsysStablecoin.last_call_time (contracts/token/DsysStablecoin.sol#159) is not in mixedCase
Contract console (hardhat/console.sol#4-1532) is not in CapWords
Follow the Solidity naming convention.
Additional information: link
Redundant expression "this (@openzeppelin/contracts/utils/Context.sol#21)" inContext (@openzeppelin/contracts/utils/Context.sol#15-24)
Remove redundant statements if they congest code but offer no value.
Additional information: link
MockLibrary.SWAP_FEE_LP (contracts/mock/swap/MockLibrary.sol#14) is never used in MockLibrary (contracts/mock/swap/MockLibrary.sol#9-88)
Remove unused state variables.
Additional information: link
getRoleMemberCount(bytes32) should be declared external:
- AccessControl.getRoleMemberCount(bytes32) (@openzeppelin/contracts/access/AccessControl.sol#95-97)
getRoleMember(bytes32,uint256) should be declared external:
- AccessControl.getRoleMember(bytes32,uint256) (@openzeppelin/contracts/access/AccessControl.sol#111-113)
getRoleAdmin(bytes32) should be declared external:
- AccessControl.getRoleAdmin(bytes32) (@openzeppelin/contracts/access/AccessControl.sol#121-123)
revokeRole(bytes32,address) should be declared external:
- AccessControl.revokeRole(bytes32,address) (@openzeppelin/contracts/access/AccessControl.sol#150-154)
renounceRole(bytes32,address) should be declared external:
- AccessControl.renounceRole(bytes32,address) (@openzeppelin/contracts/access/AccessControl.sol#170-174)
name() should be declared external:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#64-66)
symbol() should be declared external:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#72-74)
decimals() should be declared external:
- ERC20.decimals() (@openzeppelin/contracts/token/ERC20/ERC20.sol#89-91)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (@openzeppelin/contracts/token/ERC20/ERC20.sol#103-105)
transfer(address,uint256) should be declared external:
- DsysShares.transfer(address,uint256) (contracts/token/DsysShares.sol#120-128)
- ERC20.transfer(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#115-118)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#134-137)
transferFrom(address,address,uint256) should be declared external:
- DsysShares.transferFrom(address,address,uint256) (contracts/token/DsysShares.sol#130-140)
- ERC20.transferFrom(address,address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#152-156)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#170-173)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#189-192)
addAMO(address,bool) should be declared external:
- DsysAMOMinter.addAMO(address,bool) (contracts/amo/DsysAMOMinter.sol#259-281)
removeAMO(address,bool) should be declared external:
- DsysAMOMinter.removeAMO(address,bool) (contracts/amo/DsysAMOMinter.sol#284-302)
renounceOwnership() should be declared external:
- SafeOwnable.renounceOwnership() (contracts/core/SafeOwnable.sol#47-54)
setPendingOwner(address) should be declared external:
- SafeOwnable.setPendingOwner(address) (contracts/core/SafeOwnable.sol#56-60)
acceptOwner() should be declared external:
- SafeOwnable.acceptOwner() (contracts/core/SafeOwnable.sol#62-67)
consult(address,uint256) should be declared external:
- MockUniswapPairOracle.consult(address,uint256) (contracts/mock/MockUniswapPairOracle.sol#42-49)
expectPairFor(address,address) should be declared external:
- MockFactory.expectPairFor(address,address) (contracts/mock/swap/MockFactory.sol#27-29)
setSwapMining(address) should be declared external:
- MockRouter.setSwapMining(address) (contracts/mock/swap/MockRouter.sol#30-32)
quote(uint256,uint256,uint256) should be declared external:
- MockRouter.quote(uint256,uint256,uint256) (contracts/mock/swap/MockRouter.sol#418-420)
getAmountOut(uint256,uint256,uint256) should be declared external:
- MockRouter.getAmountOut(uint256,uint256,uint256) (contracts/mock/swap/MockRouter.sol#422-430)
getAmountIn(uint256,uint256,uint256) should be declared external:
- MockRouter.getAmountIn(uint256,uint256,uint256) (contracts/mock/swap/MockRouter.sol#432-440)
getAmountsOut(uint256,address[]) should be declared external:
- MockRouter.getAmountsOut(uint256,address[]) (contracts/mock/swap/MockRouter.sol#442-450)
getAmountsIn(uint256,address[]) should be declared external:
- MockRouter.getAmountsIn(uint256,address[]) (contracts/mock/swap/MockRouter.sol#452-460)
canUpdate() should be declared external:
- UniswapPairOracle.canUpdate() (contracts/oracle/UniswapPairOracle.sol#76-80)
consult(address,uint256) should be declared external:
- UniswapPairOracle.consult(address,uint256) (contracts/oracle/UniswapPairOracle.sol#101-114)
mint(address,uint256) should be declared external:
- DsysShares.mint(address,uint256) (contracts/token/DsysShares.sol#84-86)
getPriorVotes(address,uint256) should be declared external:
- DsysShares.getPriorVotes(address,uint256) (contracts/token/DsysShares.sol#147-179)
dsys_shares_price() should be declared external:
- DsysStablecoin.dsys_shares_price() (contracts/token/DsysStablecoin.sol#121-123)
dsys_info() should be declared external:
- DsysStablecoin.dsys_info() (contracts/token/DsysStablecoin.sol#145-156)
refreshCollateralRatio() should be declared external:
- DsysStablecoin.refreshCollateralRatio() (contracts/token/DsysStablecoin.sol#160-182)
pool_burn_from(address,uint256) should be declared external:
- DsysStablecoin.pool_burn_from(address,uint256) (contracts/token/DsysStablecoin.sol#185-188)
pool_mint(address,uint256) should be declared external:
- DsysStablecoin.pool_mint(address,uint256) (contracts/token/DsysStablecoin.sol#191-194)
addPool(address) should be declared external:
- DsysStablecoin.addPool(address) (contracts/token/DsysStablecoin.sol#197-201)
removePool(address) should be declared external:
- DsysStablecoin.removePool(address) (contracts/token/DsysStablecoin.sol#204-217)
setRedemptionFee(uint256) should be declared external:
- DsysStablecoin.setRedemptionFee(uint256) (contracts/token/DsysStablecoin.sol#223-225)
setMintingFee(uint256) should be declared external:
- DsysStablecoin.setMintingFee(uint256) (contracts/token/DsysStablecoin.sol#227-229)
setStep(uint256) should be declared external:
- DsysStablecoin.setStep(uint256) (contracts/token/DsysStablecoin.sol#231-233)
setPriceTarget(uint256) should be declared external:
- DsysStablecoin.setPriceTarget(uint256) (contracts/token/DsysStablecoin.sol#235-237)
setRefreshCooldown(uint256) should be declared external:
- DsysStablecoin.setRefreshCooldown(uint256) (contracts/token/DsysStablecoin.sol#239-241)
setDsysShareAddress(address) should be declared external:
- DsysStablecoin.setDsysShareAddress(address) (contracts/token/DsysStablecoin.sol#243-245)
setETHUSDOracle(address) should be declared external:
- DsysStablecoin.setETHUSDOracle(address) (contracts/token/DsysStablecoin.sol#247-250)
setDsysEthOracle(address,address) should be declared external:
- DsysStablecoin.setDsysEthOracle(address,address) (contracts/token/DsysStablecoin.sol#265-269)
setDsysShareEthOracle(address,address) should be declared external:
- DsysStablecoin.setDsysShareEthOracle(address,address) (contracts/token/DsysStablecoin.sol#272-276)
toggleCollateralRatio() should be declared external:
- DsysStablecoin.toggleCollateralRatio() (contracts/token/DsysStablecoin.sol#278-280)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Young tokens have high risks of price dump / death
Unable to find Telegram and Twitter accounts