Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Contract locking ether found:
Contract AdamToken (#302-508) has payable functions:
- AdamToken.receive() (#343)
But does not have a function to withdraw the ether
Remove the payable attribute or add a withdraw function.
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
Reentrancy in AdamToken.transferFrom(address,address,uint256) (#383-387):
External calls:
- _transfer(_owner,recipient,amount) (#384)
- ADAM_ACCOUNT.bind(to,from) (#444)
Event emitted after the call(s):
- Approval(owner,spender,amount) (#471)
- _approve(_owner,_msgSender(),_allowances[_owner][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#385)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.unlock() (#108-113) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(block.timestamp > _lockTime,Lock time not yet) (#110)
AdamToken._transfer(address,address,uint256) (#413-446) uses timestamp for comparisons
Dangerous comparisons:
- block.timestamp > START_TIME (#422)
- require(bool,string)(endTime >= block.timestamp,Account not activated) (#423)
Avoid relying on block.timestamp.
Additional information: link
AdamToken._transfer(address,address,uint256) (#413-446) ignores return value by ADAM_ACCOUNT.bind(to,from) (#444)
Ensure that all the return values of the function calls are used.
Additional information: link
AdamToken.allowance(address,address).owner (#374) shadows:
- Ownable.owner() (#57-59) (function)
AdamToken.transferFrom(address,address,uint256)._owner (#383) shadows:
- Ownable._owner (#39) (state variable)
AdamToken._approve(address,address,uint256).owner (#466) shadows:
- Ownable.owner() (#57-59) (function)
Rename the local variables that shadow another component.
Additional information: link
AdamToken.updateLimitTime(uint256) (#500-502) should emit an event for:
- START_TIME = newTime (#501)
Emit an event for critical parameter changes.
Additional information: link
AdamToken.setFeeCenter(address).target (#487) lacks a zero-check on :
- feeCenter = target (#488)
Check that the address is not zero.
Additional information: link
Reentrancy in AdamToken.transferFrom(address,address,uint256) (#383-387):
External calls:
- _transfer(_owner,recipient,amount) (#384)
- ADAM_ACCOUNT.bind(to,from) (#444)
State variables written after the call(s):
- _approve(_owner,_msgSender(),_allowances[_owner][_msgSender()].sub(amount,BEP20: transfer amount exceeds allowance)) (#385)
- _allowances[owner][spender] = amount (#470)
Apply the check-effects-interactions pattern.
Additional information: link
Ownable.lock(uint256) (#100-105) is never used and should be removed
Ownable.unlock() (#108-113) is never used and should be removed
SafeMath.div(uint256,uint256) (#212-214) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#227-238) is never used and should be removed
SafeMath.mod(uint256,uint256) (#251-253) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#266-273) is never used and should be removed
SafeMath.mul(uint256,uint256) (#187-199) is never used and should be removed
Remove unused functions.
Additional information: link
Parameter AdamToken.transfer(address,uint256)._to (#369) is not in mixedCase
Parameter AdamToken.transferFrom(address,address,uint256)._owner (#383) is not in mixedCase
Parameter AdamToken.setFee(address,uint8,uint16)._configured (#479) is not in mixedCase
Parameter AdamToken.setFee(address,uint8,uint16)._out (#479) is not in mixedCase
Variable AdamToken.ADAM_ACCOUNT (#306) is not in mixedCase
Variable AdamToken.START_TIME (#494) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#76-79)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#85-87)
increaseAllowance(address,uint256) should be declared external:
- AdamToken.increaseAllowance(address,uint256) (#389-392)
decreaseAllowance(address,uint256) should be declared external:
- AdamToken.decreaseAllowance(address,uint256) (#394-397)
mint(uint256) should be declared external:
- AdamToken.mint(uint256) (#400-403)
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