舞狮子是我国优秀的民间艺术,每逢元宵佳节或集会庆典,民间都以狮舞前来助兴。这一习俗起源于三国时期,南北朝时开始流行,至今已有一千多年的历史。
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
DanTOKEN.swapAndLiquify(uint256) (#884-913) sends eth to arbitrary user
Dangerous calls:
- marketingAddress.transfer(address(this).balance) (#909)
DanTOKEN.swapETHForTokens(uint256) (#943-956) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens.value(amount)(0,path,deadAddress,block.timestamp.add(300)) (#950-955)
DanTOKEN.addLiquidity(uint256,uint256) (#959-973) sends eth to arbitrary user
Dangerous calls:
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
Reentrancy in DanTOKEN._transfer(address,address,uint256) (#801-833):
External calls:
- swapAndLiquify(numTokensSell) (#826)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#933-939)
External calls sending eth:
- swapAndLiquify(numTokensSell) (#826)
- recipient.transfer(amount) (#919)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- marketingAddress.transfer(address(this).balance) (#909)
State variables written after the call(s):
- _tokenTransfer(from,to,value,saleFlag) (#830)
- _gonBalances[sender] = _gonBalances[sender].sub(gonValue) (#856)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(rFee) (#880)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonValue) (#857)
- _gonBalances[sender] = _gonBalances[sender].sub(gonDeduct) (#848)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonValue) (#849)
Apply the check-effects-interactions pattern.
Additional information: link
DanTOKEN.burnAutoLP() (#1094-1100) ignores return value by uniswapV2Pair.transfer(owner(),balance) (#1099)
DanTOKEN.recoverWrongTokens(address,uint256) (#1131-1135) ignores return value by IERC20(_tokenAddress).transfer(address(msg.sender),_tokenAmount) (#1133)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Ownable._lockTime (#277) is never initialized. It is used in:
- Ownable.getUnlockTime() (#328-330)
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
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.
Contract ticker (Dance Lion) contains non-alphanumeric characters.
Not a direct threat, but may indicate unreliable intentions of developer. Non-alphanumeric chars (,.;!#*&") are extremely rare among low risk tokens.
DanTOKEN.addLiquidity(uint256,uint256) (#959-973) ignores return value by uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
Ensure that all the return values of the function calls are used.
Additional information: link
ERC20Detailed.constructor(string,string,uint8).name (#520) shadows:
- ERC20Detailed.name() (#529-531) (function)
ERC20Detailed.constructor(string,string,uint8).symbol (#520) shadows:
- ERC20Detailed.symbol() (#537-539) (function)
ERC20Detailed.constructor(string,string,uint8).decimals (#520) shadows:
- ERC20Detailed.decimals() (#553-555) (function)
DanTOKEN._approve(address,address,uint256).owner (#994) shadows:
- Ownable.owner() (#298-300) (function)
Rename the local variables that shadow another component.
Additional information: link
DanTOKEN.setMaster(address,address) (#704-711) should emit an event for:
- master = _master (#709)
Emit an event for critical parameter changes.
Additional information: link
DanTOKEN.constructor(address,address)._marketingAddress (#664) lacks a zero-check on :
- marketingAddress = _marketingAddress (#669)
- master = _marketingAddress (#670)
DanTOKEN.setMaster(address,address)._master (#704) lacks a zero-check on :
- master = _master (#709)
DanTOKEN.setMaster(address,address)._marketingAddress (#704) lacks a zero-check on :
- marketingAddress = _marketingAddress (#710)
DanTOKEN.setMaster(address)._marketingAddress (#717) lacks a zero-check on :
- marketingAddress = _marketingAddress (#723)
DanTOKEN.setLP(address)._lp (#729) lacks a zero-check on :
- lp = _lp (#734)
DanTOKEN.burnBNB(address).burnAddress (#1117) lacks a zero-check on :
- burnAddress.transfer(address(this).balance) (#1118)
Check that the address is not zero.
Additional information: link
Reentrancy in DanTOKEN.constructor(address,address) (#664-697):
External calls:
- uniswapV2PairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#673-674)
State variables written after the call(s):
- _gonBalances[msg.sender] = TOTAL_GONS (#687)
- _gonsPerFragment = TOTAL_GONS.div(_totalSupply) (#688)
- _isExcluded[owner()] = true (#693)
- _isExcluded[address(this)] = true (#694)
- _totalSupply = INITIAL_FRAGMENTS_SUPPLY (#686)
- initialDistributionFinished = false (#690)
- setLP(uniswapV2PairAddress) (#678)
- lp = _lp (#734)
- setLP(uniswapV2PairAddress) (#678)
- lpContract = ILP(_lp) (#735)
- uniswapV2Pair = _uniswapV2Pair (#682)
- uniswapV2Router = _uniswapV2Router (#676)
Reentrancy in DanTOKEN.swapAndLiquify(uint256) (#884-913):
External calls:
- swapTokensForEth(threequarters) (#896)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#933-939)
- addLiquidity(onequarter,sharedETH) (#904)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
External calls sending eth:
- addLiquidity(onequarter,sharedETH) (#904)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
State variables written after the call(s):
- addLiquidity(onequarter,sharedETH) (#904)
- _allowedFragments[owner][spender] = value (#998)
Reentrancy in DanTOKEN.transferFrom(address,address,uint256) (#784-792):
External calls:
- _transfer(sender,recipient,amount) (#789)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#933-939)
External calls sending eth:
- _transfer(sender,recipient,amount) (#789)
- recipient.transfer(amount) (#919)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- marketingAddress.transfer(address(this).balance) (#909)
State variables written after the call(s):
- _approve(sender,msg.sender,_allowedFragments[sender][msg.sender].sub(amount)) (#790)
- _allowedFragments[owner][spender] = value (#998)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in DanTOKEN._transfer(address,address,uint256) (#801-833):
External calls:
- swapAndLiquify(numTokensSell) (#826)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#933-939)
External calls sending eth:
- swapAndLiquify(numTokensSell) (#826)
- recipient.transfer(amount) (#919)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- marketingAddress.transfer(address(this).balance) (#909)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#858)
- _tokenTransfer(from,to,value,saleFlag) (#830)
- Transfer(sender,recipient,amount) (#851)
- _tokenTransfer(from,to,value,saleFlag) (#830)
Reentrancy in DanTOKEN.constructor(address,address) (#664-697):
External calls:
- uniswapV2PairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()) (#673-674)
Event emitted after the call(s):
- Transfer(address(0x0),msg.sender,_totalSupply) (#696)
Reentrancy in DanTOKEN.swapAndLiquify(uint256) (#884-913):
External calls:
- swapTokensForEth(threequarters) (#896)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#933-939)
- addLiquidity(onequarter,sharedETH) (#904)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
External calls sending eth:
- addLiquidity(onequarter,sharedETH) (#904)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
Event emitted after the call(s):
- Approval(owner,spender,value) (#999)
- addLiquidity(onequarter,sharedETH) (#904)
Reentrancy in DanTOKEN.swapAndLiquify(uint256) (#884-913):
External calls:
- swapTokensForEth(threequarters) (#896)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#933-939)
- addLiquidity(onequarter,sharedETH) (#904)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
External calls sending eth:
- addLiquidity(onequarter,sharedETH) (#904)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- transferToAddressETH(marketingAddress,sharedETH) (#907)
- recipient.transfer(amount) (#919)
- marketingAddress.transfer(address(this).balance) (#909)
Event emitted after the call(s):
- SwapAndLiquify(threequarters,sharedETH,onequarter) (#911)
Reentrancy in DanTOKEN.transferFrom(address,address,uint256) (#784-792):
External calls:
- _transfer(sender,recipient,amount) (#789)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp.add(300)) (#933-939)
External calls sending eth:
- _transfer(sender,recipient,amount) (#789)
- recipient.transfer(amount) (#919)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- marketingAddress.transfer(address(this).balance) (#909)
Event emitted after the call(s):
- Approval(owner,spender,value) (#999)
- _approve(sender,msg.sender,_allowedFragments[sender][msg.sender].sub(amount)) (#790)
Apply the check-effects-interactions pattern.
Additional information: link
DanTOKEN.swapETHForTokens(uint256) (#943-956) is never used and should be removed
SafeMath.mod(uint256,uint256) (#422-425) is never used and should be removed
SafeMathInt.abs(int256) (#498-505) is never used and should be removed
SafeMathInt.add(int256,int256) (#485-493) is never used and should be removed
SafeMathInt.div(int256,int256) (#457-467) is never used and should be removed
SafeMathInt.mul(int256,int256) (#441-452) is never used and should be removed
SafeMathInt.sub(int256,int256) (#472-480) is never used and should be removed
Remove unused functions.
Additional information: link
Function IUniswapV2Pair.DOMAIN_SEPARATOR() (#95) is not in mixedCase
Function IUniswapV2Pair.PERMIT_TYPEHASH() (#96) is not in mixedCase
Function IUniswapV2Pair.MINIMUM_LIQUIDITY() (#113) is not in mixedCase
Function IUniswapV2Router02.WETH() (#136) is not in mixedCase
Parameter DanTOKEN.setMaster(address,address)._master (#704) is not in mixedCase
Parameter DanTOKEN.setMaster(address,address)._marketingAddress (#704) is not in mixedCase
Parameter DanTOKEN.setMaster(address)._marketingAddress (#717) is not in mixedCase
Parameter DanTOKEN.setLP(address)._lp (#729) is not in mixedCase
Parameter DanTOKEN.setSwapAndLiquifyEnabled(bool)._enabled (#749) is not in mixedCase
Parameter DanTOKEN.calculateFee(uint256,bool)._amount (#869) is not in mixedCase
Parameter DanTOKEN.enableTransfer(address)._addr (#1073) is not in mixedCase
Parameter DanTOKEN.excludeAddress(address)._addr (#1080) is not in mixedCase
Parameter DanTOKEN.excludeAddressRemove(address)._addr (#1087) is not in mixedCase
Parameter DanTOKEN.setBuyBackEnabled(bool)._enabled (#1104) is not in mixedCase
Parameter DanTOKEN.setBuyBackLimit(uint256)._buybackLimit (#1108) is not in mixedCase
Parameter DanTOKEN.setBuyBackDivisor(uint256)._buybackDivisor (#1111) is not in mixedCase
Parameter DanTOKEN.setnumTokensSellDivisor(uint256)._numTokensSellDivisor (#1114) is not in mixedCase
Parameter DanTOKEN.recoverWrongTokens(address,uint256)._tokenAddress (#1131) is not in mixedCase
Parameter DanTOKEN.recoverWrongTokens(address,uint256)._tokenAmount (#1131) is not in mixedCase
Variable DanTOKEN._gonsPerFragment (#657) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Reentrancy in DanTOKEN._transfer(address,address,uint256) (#801-833):
External calls:
- swapAndLiquify(numTokensSell) (#826)
- recipient.transfer(amount) (#919)
- marketingAddress.transfer(address(this).balance) (#909)
External calls sending eth:
- swapAndLiquify(numTokensSell) (#826)
- recipient.transfer(amount) (#919)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- marketingAddress.transfer(address(this).balance) (#909)
State variables written after the call(s):
- _tokenTransfer(from,to,value,saleFlag) (#830)
- _gonBalances[sender] = _gonBalances[sender].sub(gonValue) (#856)
- _gonBalances[address(this)] = _gonBalances[address(this)].add(rFee) (#880)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonValue) (#857)
- _gonBalances[sender] = _gonBalances[sender].sub(gonDeduct) (#848)
- _gonBalances[recipient] = _gonBalances[recipient].add(gonValue) (#849)
Event emitted after the call(s):
- Transfer(sender,recipient,amount) (#858)
- _tokenTransfer(from,to,value,saleFlag) (#830)
- Transfer(sender,recipient,amount) (#851)
- _tokenTransfer(from,to,value,saleFlag) (#830)
Reentrancy in DanTOKEN.swapAndLiquify(uint256) (#884-913):
External calls:
- transferToAddressETH(marketingAddress,sharedETH) (#907)
- recipient.transfer(amount) (#919)
- marketingAddress.transfer(address(this).balance) (#909)
External calls sending eth:
- addLiquidity(onequarter,sharedETH) (#904)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- transferToAddressETH(marketingAddress,sharedETH) (#907)
- recipient.transfer(amount) (#919)
- marketingAddress.transfer(address(this).balance) (#909)
Event emitted after the call(s):
- SwapAndLiquify(threequarters,sharedETH,onequarter) (#911)
Reentrancy in DanTOKEN.transferFrom(address,address,uint256) (#784-792):
External calls:
- _transfer(sender,recipient,amount) (#789)
- recipient.transfer(amount) (#919)
- marketingAddress.transfer(address(this).balance) (#909)
External calls sending eth:
- _transfer(sender,recipient,amount) (#789)
- recipient.transfer(amount) (#919)
- uniswapV2Router.addLiquidityETH.value(ethAmount)(address(this),tokenAmount,0,0,address(this),block.timestamp.add(300)) (#965-972)
- marketingAddress.transfer(address(this).balance) (#909)
State variables written after the call(s):
- _approve(sender,msg.sender,_allowedFragments[sender][msg.sender].sub(amount)) (#790)
- _allowedFragments[owner][spender] = value (#998)
Event emitted after the call(s):
- Approval(owner,spender,value) (#999)
- _approve(sender,msg.sender,_allowedFragments[sender][msg.sender].sub(amount)) (#790)
Apply the check-effects-interactions pattern.
Additional information: link
Variable IUniswapV2Router02.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#141) is too similar to IUniswapV2Router02.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#142)
Prevent variables from having similar names.
Additional information: link
DanTOKEN.slitherConstructorVariables() (#565-1141) uses literals with too many digits:
- deadAddress = 0x000000000000000000000000000000000000dEaD (#626)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
SafeMathInt.MAX_INT256 (#436) is never used in SafeMathInt (#434-506)
Ownable._previousOwner (#276) is never used in DanTOKEN (#565-1141)
DanTOKEN.privateSaleDropCompleted (#635) is never used in DanTOKEN (#565-1141)
DanTOKEN.MAX_SUPPLY (#649) is never used in DanTOKEN (#565-1141)
Remove unused state variables.
Additional information: link
DanTOKEN.deadAddress (#626) should be constant
DanTOKEN.privateSaleDropCompleted (#635) should be constant
DanTOKEN.transactionTax (#615) should be constant
DanTOKEN.transactionTaxBuy (#616) should be constant
Ownable._lockTime (#277) should be constant
Ownable._previousOwner (#276) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#323-326)
getUnlockTime() should be declared external:
- Ownable.getUnlockTime() (#328-330)
lock() should be declared external:
- Ownable.lock() (#334-339)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#347-349)
name() should be declared external:
- ERC20Detailed.name() (#529-531)
symbol() should be declared external:
- ERC20Detailed.symbol() (#537-539)
decimals() should be declared external:
- ERC20Detailed.decimals() (#553-555)
setSwapAndLiquifyEnabled(bool) should be declared external:
- DanTOKEN.setSwapAndLiquifyEnabled(bool) (#749-752)
increaseAllowance(address,uint256) should be declared external:
- DanTOKEN.increaseAllowance(address,uint256) (#984-991)
approve(address,uint256) should be declared external:
- DanTOKEN.approve(address,uint256) (#1014-1021)
allowance(address,address) should be declared external:
- DanTOKEN.allowance(address,address) (#1030-1036)
setBuyBackEnabled(bool) should be declared external:
- DanTOKEN.setBuyBackEnabled(bool) (#1104-1106)
setBuyBackLimit(uint256) should be declared external:
- DanTOKEN.setBuyBackLimit(uint256) (#1108-1109)
setBuyBackDivisor(uint256) should be declared external:
- DanTOKEN.setBuyBackDivisor(uint256) (#1111-1112)
setnumTokensSellDivisor(uint256) should be declared external:
- DanTOKEN.setnumTokensSellDivisor(uint256) (#1114-1115)
batchTransferTokenB(address[],uint256) should be declared external:
- DanTOKEN.batchTransferTokenB(address[],uint256) (#1122-1126)
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 Twitter account
Telegram account has relatively few subscribers
Unable to find Blog account (Reddit or Medium)
Unable to find Youtube account
Unable to find Discord account