ANTI.minimalRescue(address,bytes4,bytes,uint256) (contracts/ANTI.sol#259-262) uses delegatecall to a input-controlled function id
- (success,data) = address(addr).delegatecall(abi.encodeWithSelector(mname,pname)) (contracts/ANTI.sol#260)
Avoid using delegatecall. Use only trusted destinations.
Additional information: link
ANTI.receiveUser (contracts/ANTI.sol#162) is never initialized. It is used in:
- ANTI.getIdoData(uint256) (contracts/ANTI.sol#192-195)
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...)
Contract ownership is not renounced (belongs to a wallet)
Reentrancy in ANTI.snaTokenUser() (contracts/ANTI.sol#206-213):
External calls:
- _transfer(address(this),msg.sender,snaNum) (contracts/ANTI.sol#210)
- RP.father(_to) == address(0) (contracts/ANTI.sol#225)
- RP.otherCallSetRelationship(_son,_father,_amount) (contracts/ANTI.sol#235)
State variables written after the call(s):
- sUserNumIndex += 1 (contracts/ANTI.sol#212)
- snaToken[msg.sender] = true (contracts/ANTI.sol#211)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.constructor(address)._addr (contracts/ANTI.sol#21) lacks a zero-check on :
- _owner = _addr (contracts/ANTI.sol#22)
ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._buyToken (contracts/ANTI.sol#178) lacks a zero-check on :
- buyToken = _buyToken (contracts/ANTI.sol#186)
ANTI.withdrawToken(address,address,uint256).to (contracts/ANTI.sol#199) lacks a zero-check on :
- (success,data) = address(token).call(abi.encodeWithSelector(0xa9059cbb,to,value)) (contracts/ANTI.sol#200)
ANTI.withdrawToken(address,address,uint256).token (contracts/ANTI.sol#199) lacks a zero-check on :
- (success,data) = address(token).call(abi.encodeWithSelector(0xa9059cbb,to,value)) (contracts/ANTI.sol#200)
ANTI.setRP(address,address,address,uint256[])._usdt (contracts/ANTI.sol#247) lacks a zero-check on :
- USDT = _usdt (contracts/ANTI.sol#249)
ANTI.setRP(address,address,address,uint256[])._receiveAdd (contracts/ANTI.sol#247) lacks a zero-check on :
- receiveAdd = _receiveAdd (contracts/ANTI.sol#250)
ANTI.minimalRescue(address,bytes4,bytes,uint256).addr (contracts/ANTI.sol#259) lacks a zero-check on :
- (success,data) = address(addr).delegatecall(abi.encodeWithSelector(mname,pname)) (contracts/ANTI.sol#260)
Check that the address is not zero.
Additional information: link
ANTI.snaTokenUser() (contracts/ANTI.sol#206-213) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > snaTokenStartTime,sna time no) (contracts/ANTI.sol#207)
Avoid relying on block.timestamp.
Additional information: link
ANTI.snaTokenUser() (contracts/ANTI.sol#206-213) compares to a boolean constant:
-require(bool,string)(snaToken[msg.sender] == false,sna used) (contracts/ANTI.sol#209)
Remove the equality to the boolean constant.
Additional information: link
ERC20._beforeTokenTransfer(address,address,uint256) (contracts/ANTI.sol#142) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version0.8.0 (contracts/ANTI.sol#1) allows old versions
solc-0.8.0 is not recommended for deployment
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 ANTI.withdrawToken(address,address,uint256) (contracts/ANTI.sol#199-203):
- (success,data) = address(token).call(abi.encodeWithSelector(0xa9059cbb,to,value)) (contracts/ANTI.sol#200)
Low level call in ANTI.minimalRescue(address,bytes4,bytes,uint256) (contracts/ANTI.sol#259-262):
- (success,data) = address(addr).delegatecall(abi.encodeWithSelector(mname,pname)) (contracts/ANTI.sol#260)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Contract relationship (contracts/ANTI.sol#2-9) is not in CapWords
Variable ERC20._balances (contracts/ANTI.sol#53) is not in mixedCase
Variable ERC20._totalSupply (contracts/ANTI.sol#56) is not in mixedCase
Variable ERC20._name (contracts/ANTI.sol#57) is not in mixedCase
Variable ERC20._symbol (contracts/ANTI.sol#58) is not in mixedCase
Variable ERC20._decimals (contracts/ANTI.sol#59) is not in mixedCase
Parameter ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._RP (contracts/ANTI.sol#177) is not in mixedCase
Parameter ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._startTradeTime (contracts/ANTI.sol#177) is not in mixedCase
Parameter ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._sUserNum (contracts/ANTI.sol#177) is not in mixedCase
Parameter ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._snaNum (contracts/ANTI.sol#177) is not in mixedCase
Parameter ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._buyToken (contracts/ANTI.sol#178) is not in mixedCase
Parameter ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._snaTokenStartTime (contracts/ANTI.sol#178) is not in mixedCase
Parameter ANTI.init(address,uint256,uint256,uint256,address,uint256,address)._pair (contracts/ANTI.sol#178) is not in mixedCase
Parameter ANTI.sendReff(address,address,uint256)._son (contracts/ANTI.sol#233) is not in mixedCase
Parameter ANTI.sendReff(address,address,uint256)._father (contracts/ANTI.sol#233) is not in mixedCase
Parameter ANTI.sendReff(address,address,uint256)._amount (contracts/ANTI.sol#233) is not in mixedCase
Parameter ANTI.setPair(address,bool)._addr (contracts/ANTI.sol#243) is not in mixedCase
Parameter ANTI.setRP(address,address,address,uint256[])._addr (contracts/ANTI.sol#247) is not in mixedCase
Parameter ANTI.setRP(address,address,address,uint256[])._usdt (contracts/ANTI.sol#247) is not in mixedCase
Parameter ANTI.setRP(address,address,address,uint256[])._receiveAdd (contracts/ANTI.sol#247) is not in mixedCase
Parameter ANTI.setRP(address,address,address,uint256[])._receiveData (contracts/ANTI.sol#247) is not in mixedCase
Variable ANTI._FIVE_MIN (contracts/ANTI.sol#146) is not in mixedCase
Variable ANTI._FIVE_OTH (contracts/ANTI.sol#147) is not in mixedCase
Variable ANTI.RP (contracts/ANTI.sol#150) is not in mixedCase
Variable ANTI.USDT (contracts/ANTI.sol#163) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
ANTI.constructor() (contracts/ANTI.sol#169-175) uses literals with too many digits:
- _mint(msg.sender,1000000000000 * 1e18) (contracts/ANTI.sol#174)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (contracts/ANTI.sol#38-41)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (contracts/ANTI.sol#44-48)
name() should be declared external:
- ERC20.name() (contracts/ANTI.sol#65-67)
symbol() should be declared external:
- ERC20.symbol() (contracts/ANTI.sol#69-71)
decimals() should be declared external:
- ERC20.decimals() (contracts/ANTI.sol#73-75)
totalSupply() should be declared external:
- ERC20.totalSupply() (contracts/ANTI.sol#77-79)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (contracts/ANTI.sol#81-83)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (contracts/ANTI.sol#85-88)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (contracts/ANTI.sol#90-92)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (contracts/ANTI.sol#94-97)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (contracts/ANTI.sol#99-103)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (contracts/ANTI.sol#105-108)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (contracts/ANTI.sol#110-113)
getIdoData(uint256) should be declared external:
- ANTI.getIdoData(uint256) (contracts/ANTI.sol#192-195)
withdrawToken(address,address,uint256) should be declared external:
- ANTI.withdrawToken(address,address,uint256) (contracts/ANTI.sol#199-203)
batchTransferHod(address[],uint256[]) should be declared external:
- ANTI.batchTransferHod(address[],uint256[]) (contracts/ANTI.sol#216-220)
batchNoCall(address[],bool) should be declared external:
- ANTI.batchNoCall(address[],bool) (contracts/ANTI.sol#239-241)
setRP(address,address,address,uint256[]) should be declared external:
- ANTI.setRP(address,address,address,uint256[]) (contracts/ANTI.sol#247-252)
setTime(uint256,uint256) should be declared external:
- ANTI.setTime(uint256,uint256) (contracts/ANTI.sol#254-257)
minimalRescue(address,bytes4,bytes,uint256) should be declared external:
- ANTI.minimalRescue(address,bytes4,bytes,uint256) (contracts/ANTI.sol#259-262)
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