Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
UkraineDao.addLiquidity(uint256,uint256) (#1452-1462) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in UkraineDao._transfer(address,address,uint256) (#1333-1385):
External calls:
- swapAndSendToFee(marketingTokens) (#1349)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1392)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
- swapAndSendDividends(sellTokens) (#1355)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1467)
- dividendTracker.distributeDividend(dividends) (#1470)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
State variables written after the call(s):
- super._transfer(from,address(this),fees) (#1370)
- _balances[from] = fromBalance - amount (#933)
- _balances[to] += amount (#935)
- super._transfer(from,to,amount) (#1373)
- _balances[from] = fromBalance - amount (#933)
- _balances[to] += amount (#935)
- swapping = false (#1356)
Apply the check-effects-interactions pattern.
Additional information: link
UkraineDao.swapAndSendToFee(uint256) (#1387-1393) ignores return value by IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1392)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Combination 1: Reentrancy vulnerabilities + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 2: Unchecked transfer + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Combination 3: Reentrancy vulnerabilities + Unchecked transfer vulnerability. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
UkraineDao._transfer(address,address,uint256).iterations (#1380) is a local variable never initialized
UkraineDao._transfer(address,address,uint256).claims (#1380) is a local variable never initialized
UkraineDao._transfer(address,address,uint256).lastProcessedIndex (#1380) 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
UkraineDao.claim() (#1324-1326) ignores return value by dividendTracker.processAccount(address(msg.sender),false) (#1325)
UkraineDao._transfer(address,address,uint256) (#1333-1385) ignores return value by dividendTracker.process(gas) (#1380-1382)
UkraineDao.addLiquidity(uint256,uint256) (#1452-1462) ignores return value by uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
Ensure that all the return values of the function calls are used.
Additional information: link
UkraineDao.setSwapTokensAtAmount(uint256) (#1185-1187) should emit an event for:
- swapTokensAtAmount = amount (#1186)
UkraineDao.setTokenRewardsFee(uint256) (#1221-1225) should emit an event for:
- totalFees = tokenRewardsFee.add(liquidityFee).add(marketingFee) (#1223)
UkraineDao.setLiquiditFee(uint256) (#1227-1231) should emit an event for:
- liquidityFee = value (#1228)
- totalFees = tokenRewardsFee.add(liquidityFee).add(marketingFee) (#1229)
UkraineDao.setMarketingFee(uint256) (#1233-1237) should emit an event for:
- marketingFee = value (#1234)
- totalFees = tokenRewardsFee.add(liquidityFee).add(marketingFee) (#1235)
Emit an event for critical parameter changes.
Additional information: link
UkraineDao.updateUniswapV2Router(address)._uniswapV2Pair (#1196) lacks a zero-check on :
- uniswapV2Pair = _uniswapV2Pair (#1197)
UkraineDao.setMarketingWallet(address).wallet (#1217) lacks a zero-check on :
- _marketingWalletAddress = wallet (#1218)
Check that the address is not zero.
Additional information: link
Variable 'UkraineDao._transfer(address,address,uint256).claims (#1380)' in UkraineDao._transfer(address,address,uint256) (#1333-1385) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1381)
Variable 'UkraineDao._transfer(address,address,uint256).iterations (#1380)' in UkraineDao._transfer(address,address,uint256) (#1333-1385) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1381)
Variable 'UkraineDao._transfer(address,address,uint256).lastProcessedIndex (#1380)' in UkraineDao._transfer(address,address,uint256) (#1333-1385) potentially used before declaration: ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1381)
Move all variable declarations prior to any usage of the variable, and ensure that reaching a variable declaration does not depend on some conditional if it is used unconditionally.
Additional information: link
Reentrancy in UkraineDao._transfer(address,address,uint256) (#1333-1385):
External calls:
- swapAndSendToFee(marketingTokens) (#1349)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1392)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
State variables written after the call(s):
- swapAndLiquify(swapTokens) (#1352)
- _allowances[owner][spender] = amount (#1012)
Reentrancy in UkraineDao._transfer(address,address,uint256) (#1333-1385):
External calls:
- swapAndSendToFee(marketingTokens) (#1349)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1392)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
- swapAndSendDividends(sellTokens) (#1355)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1467)
- dividendTracker.distributeDividend(dividends) (#1470)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
State variables written after the call(s):
- swapAndSendDividends(sellTokens) (#1355)
- _allowances[owner][spender] = amount (#1012)
Reentrancy in UkraineDao.constructor(string,string,uint256,address[3],uint256[3],uint256) (#1140-1181):
External calls:
- dividendTracker.initialize(rewardToken,minimumTokenBalanceForDividends_) (#1159)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1163)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (#1165)
- uniswapV2Router = _uniswapV2Router (#1164)
Reentrancy in UkraineDao.constructor(string,string,uint256,address[3],uint256[3],uint256) (#1140-1181):
External calls:
- dividendTracker.initialize(rewardToken,minimumTokenBalanceForDividends_) (#1159)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1163)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1166)
- dividendTracker.excludeFromDividends(pair) (#1243)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (#1169)
- dividendTracker.excludeFromDividends(address(this)) (#1170)
- dividendTracker.excludeFromDividends(owner()) (#1171)
- dividendTracker.excludeFromDividends(address(0xdead)) (#1172)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (#1173)
State variables written after the call(s):
- _mint(owner(),totalSupply_) (#1180)
- _balances[account] += amount (#957)
- excludeFromFees(owner(),true) (#1176)
- _isExcludedFromFees[account] = excluded (#1205)
- excludeFromFees(_marketingWalletAddress,true) (#1177)
- _isExcludedFromFees[account] = excluded (#1205)
- excludeFromFees(address(this),true) (#1178)
- _isExcludedFromFees[account] = excluded (#1205)
- _mint(owner(),totalSupply_) (#1180)
- _totalSupply += amount (#956)
Reentrancy in UkraineDao.swapAndLiquify(uint256) (#1395-1416):
External calls:
- swapTokensForEth(half) (#1407)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
- addLiquidity(otherHalf,newBalance) (#1413)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1413)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
State variables written after the call(s):
- addLiquidity(otherHalf,newBalance) (#1413)
- _allowances[owner][spender] = amount (#1012)
Reentrancy in UkraineDao.updateUniswapV2Router(address) (#1189-1198):
External calls:
- _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this),uniswapV2Router.WETH()) (#1196)
State variables written after the call(s):
- uniswapV2Pair = _uniswapV2Pair (#1197)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in UkraineDao._setAutomatedMarketMakerPair(address,bool) (#1239-1246):
External calls:
- dividendTracker.excludeFromDividends(pair) (#1243)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#1245)
Reentrancy in UkraineDao._transfer(address,address,uint256) (#1333-1385):
External calls:
- swapAndSendToFee(marketingTokens) (#1349)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1392)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1013)
- swapAndLiquify(swapTokens) (#1352)
- SwapAndLiquify(half,newBalance,otherHalf) (#1415)
- swapAndLiquify(swapTokens) (#1352)
Reentrancy in UkraineDao._transfer(address,address,uint256) (#1333-1385):
External calls:
- swapAndSendToFee(marketingTokens) (#1349)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1392)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
- swapAndSendDividends(sellTokens) (#1355)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1467)
- dividendTracker.distributeDividend(dividends) (#1470)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1013)
- swapAndSendDividends(sellTokens) (#1355)
- SendDividends(tokens,dividends) (#1471)
- swapAndSendDividends(sellTokens) (#1355)
- Transfer(from,to,amount) (#937)
- super._transfer(from,address(this),fees) (#1370)
- Transfer(from,to,amount) (#937)
- super._transfer(from,to,amount) (#1373)
Reentrancy in UkraineDao._transfer(address,address,uint256) (#1333-1385):
External calls:
- swapAndSendToFee(marketingTokens) (#1349)
- IERC20(rewardToken).transfer(_marketingWalletAddress,newBalance) (#1392)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
- swapAndSendDividends(sellTokens) (#1355)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1467)
- dividendTracker.distributeDividend(dividends) (#1470)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- dividendTracker.setBalance(address(from),balanceOf(from)) (#1375)
- dividendTracker.setBalance(address(to),balanceOf(to)) (#1376)
- dividendTracker.process(gas) (#1380-1382)
External calls sending eth:
- swapAndLiquify(swapTokens) (#1352)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,true,gas,tx.origin) (#1381)
Reentrancy in UkraineDao.constructor(string,string,uint256,address[3],uint256[3],uint256) (#1140-1181):
External calls:
- dividendTracker.initialize(rewardToken,minimumTokenBalanceForDividends_) (#1159)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1163)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1166)
- dividendTracker.excludeFromDividends(pair) (#1243)
Event emitted after the call(s):
- SetAutomatedMarketMakerPair(pair,value) (#1245)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1166)
Reentrancy in UkraineDao.constructor(string,string,uint256,address[3],uint256[3],uint256) (#1140-1181):
External calls:
- dividendTracker.initialize(rewardToken,minimumTokenBalanceForDividends_) (#1159)
- _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#1163)
- _setAutomatedMarketMakerPair(_uniswapV2Pair,true) (#1166)
- dividendTracker.excludeFromDividends(pair) (#1243)
- dividendTracker.excludeFromDividends(address(dividendTracker)) (#1169)
- dividendTracker.excludeFromDividends(address(this)) (#1170)
- dividendTracker.excludeFromDividends(owner()) (#1171)
- dividendTracker.excludeFromDividends(address(0xdead)) (#1172)
- dividendTracker.excludeFromDividends(address(_uniswapV2Router)) (#1173)
Event emitted after the call(s):
- ExcludeFromFees(account,excluded) (#1207)
- excludeFromFees(_marketingWalletAddress,true) (#1177)
- ExcludeFromFees(account,excluded) (#1207)
- excludeFromFees(address(this),true) (#1178)
- ExcludeFromFees(account,excluded) (#1207)
- excludeFromFees(owner(),true) (#1176)
- Transfer(address(0),account,amount) (#958)
- _mint(owner(),totalSupply_) (#1180)
Reentrancy in UkraineDao.processDividendTracker(uint256) (#1305-1320):
External calls:
- (iterations,claims,lastProcessedIndex) = dividendTracker.process(gas) (#1307-1311)
Event emitted after the call(s):
- ProcessedDividendTracker(iterations,claims,lastProcessedIndex,false,gas,tx.origin) (#1312-1319)
Reentrancy in UkraineDao.swapAndLiquify(uint256) (#1395-1416):
External calls:
- swapTokensForEth(half) (#1407)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1427-1433)
- addLiquidity(otherHalf,newBalance) (#1413)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
External calls sending eth:
- addLiquidity(otherHalf,newBalance) (#1413)
- uniswapV2Router.addLiquidityETH{value: ethAmount}(address(this),tokenAmount,0,0,address(0),block.timestamp) (#1454-1461)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#1013)
- addLiquidity(otherHalf,newBalance) (#1413)
- SwapAndLiquify(half,newBalance,otherHalf) (#1415)
Reentrancy in UkraineDao.swapAndSendDividends(uint256) (#1464-1473):
External calls:
- swapTokensForCake(tokens) (#1465)
- uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp) (#1443-1449)
- success = IERC20(rewardToken).transfer(address(dividendTracker),dividends) (#1467)
- dividendTracker.distributeDividend(dividends) (#1470)
Event emitted after the call(s):
- SendDividends(tokens,dividends) (#1471)
Apply the check-effects-interactions pattern.
Additional information: link
Clones.clone(address) (#267-276) uses assembly
- INLINE ASM (#268-274)
Clones.cloneDeterministic(address,bytes32) (#285-294) uses assembly
- INLINE ASM (#286-292)
Clones.predictDeterministicAddress(address,bytes32,address) (#299-314) uses assembly
- INLINE ASM (#304-313)
Do not use evm assembly.
Additional information: link
Clones.clone(address) (#267-276) is never used and should be removed
Clones.cloneDeterministic(address,bytes32) (#285-294) is never used and should be removed
Clones.predictDeterministicAddress(address,bytes32) (#319-325) is never used and should be removed
Clones.predictDeterministicAddress(address,bytes32,address) (#299-314) is never used and should be removed
Context._msgData() (#667-669) is never used and should be removed
ERC20._burn(address,uint256) (#974-989) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#502-511) is never used and should be removed
SafeMath.mod(uint256,uint256) (#462-464) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#528-537) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (#479-488) is never used and should be removed
SafeMath.tryAdd(uint256,uint256) (#333-339) is never used and should be removed
SafeMath.tryDiv(uint256,uint256) (#375-380) is never used and should be removed
SafeMath.tryMod(uint256,uint256) (#387-392) is never used and should be removed
SafeMath.tryMul(uint256,uint256) (#358-368) is never used and should be removed
SafeMath.trySub(uint256,uint256) (#346-351) is never used and should be removed
SafeMathInt.abs(int256) (#587-590) is never used and should be removed
SafeMathInt.add(int256,int256) (#578-582) is never used and should be removed
SafeMathInt.div(int256,int256) (#558-564) is never used and should be removed
SafeMathInt.mul(int256,int256) (#546-553) is never used and should be removed
SafeMathInt.sub(int256,int256) (#569-573) is never used and should be removed
SafeMathInt.toUint256Safe(int256) (#592-595) is never used and should be removed
SafeMathUint.toInt256Safe(uint256) (#598-602) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (#2) allows old versions
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
Function IUniswapV2Router01.WETH() (#96) is not in mixedCase
Variable UkraineDao._marketingWalletAddress (#1086) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#101) is too similar to IUniswapV2Router01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#102)
Variable ERC20._totalSupply (#734) is too similar to UkraineDao.constructor(string,string,uint256,address[3],uint256[3],uint256).totalSupply_ (#1143)
Prevent variables from having similar names.
Additional information: link
Clones.clone(address) (#267-276) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_clone_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (#270)
Clones.clone(address) (#267-276) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_clone_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) (#272)
Clones.cloneDeterministic(address,bytes32) (#285-294) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_cloneDeterministic_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (#288)
Clones.cloneDeterministic(address,bytes32) (#285-294) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_cloneDeterministic_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000) (#290)
Clones.predictDeterministicAddress(address,bytes32,address) (#299-314) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_predictDeterministicAddress_asm_0,0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000) (#306)
Clones.predictDeterministicAddress(address,bytes32,address) (#299-314) uses literals with too many digits:
- mstore(uint256,uint256)(ptr_predictDeterministicAddress_asm_0 + 0x28,0x5af43d82803e903d91602b57fd5bf3ff00000000000000000000000000000000) (#308)
UkraineDao.constructor(string,string,uint256,address[3],uint256[3],uint256) (#1140-1181) uses literals with too many digits:
- gasForProcessing = 300000 (#1156)
UkraineDao.updateGasForProcessing(uint256) (#1248-1255) uses literals with too many digits:
- require(bool,string)(newValue >= 200000 && newValue <= 600000,UkraineDao: gasForProcessing must be between 200,000 and 500,000) (#1249-1252)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#541) is never used in SafeMathInt (#539-596)
Remove unused state variables.
Additional information: link
get(IterableMapping.Map,address) should be declared external:
- IterableMapping.get(IterableMapping.Map,address) (#613-615)
getIndexOfKey(IterableMapping.Map,address) should be declared external:
- IterableMapping.getIndexOfKey(IterableMapping.Map,address) (#617-622)
getKeyAtIndex(IterableMapping.Map,uint256) should be declared external:
- IterableMapping.getKeyAtIndex(IterableMapping.Map,uint256) (#624-626)
size(IterableMapping.Map) should be declared external:
- IterableMapping.size(IterableMapping.Map) (#628-630)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#705-707)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#713-716)
name() should be declared external:
- ERC20.name() (#756-758)
symbol() should be declared external:
- ERC20.symbol() (#764-766)
decimals() should be declared external:
- ERC20.decimals() (#781-783)
totalSupply() should be declared external:
- ERC20.totalSupply() (#788-790)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#807-811)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#830-834)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#852-861)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#875-879)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#895-904)
updateUniswapV2Router(address) should be declared external:
- UkraineDao.updateUniswapV2Router(address) (#1189-1198)
excludeMultipleAccountsFromFees(address[],bool) should be declared external:
- UkraineDao.excludeMultipleAccountsFromFees(address[],bool) (#1210-1215)
updateGasForProcessing(uint256) should be declared external:
- UkraineDao.updateGasForProcessing(uint256) (#1248-1255)
isExcludedFromFees(address) should be declared external:
- UkraineDao.isExcludedFromFees(address) (#1277-1279)
withdrawableDividendOf(address) should be declared external:
- UkraineDao.withdrawableDividendOf(address) (#1281-1283)
dividendTokenBalanceOf(address) should be declared external:
- UkraineDao.dividendTokenBalanceOf(address) (#1285-1287)
isExcludedFromDividends(address) should be declared external:
- UkraineDao.isExcludedFromDividends(address) (#1293-1295)
processDividendTracker(uint256) should be declared external:
- UkraineDao.processDividendTracker(uint256) (#1305-1320)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find website, listings and other project-related information
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Unable to find Telegram and Twitter accounts