Tokocrypto will be undergoing IEO via Binance Launchpad: more info at https://www.binance.com/en/support/announcement/4620c8a2a87c42978519750964af7aa4
TKOToken._writeCheckpoint(address,uint32,uint256,uint256) (#1094-1112) uses a dangerous strict equality:
- nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber (#1104)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Redundant expression "this (#21)" inContext (#11-24)
Remove redundant statements if they congest code but offer no value.
Additional information: link
BEP20.constructor(string,string,uint256).name (#605) shadows:
- BEP20.name() (#625-627) (function)
- IBEP20.name() (#129) (function)
BEP20.constructor(string,string,uint256).symbol (#605) shadows:
- BEP20.symbol() (#639-641) (function)
- IBEP20.symbol() (#124) (function)
BEP20.allowance(address,address).owner (#673) shadows:
- Ownable.owner() (#58-60) (function)
BEP20._approve(address,address,uint256).owner (#849) shadows:
- Ownable.owner() (#58-60) (function)
Rename the local variables that shadow another component.
Additional information: link
TKOToken.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (#960-1001) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now <= expiry,TKO::delegateBySig: signature expired) (#999)
Avoid relying on block.timestamp.
Additional information: link
Address.isContract(address) (#420-431) uses assembly
- INLINE ASM (#427-429)
Address._functionCallWithValue(address,bytes,uint256,string) (#528-554) uses assembly
- INLINE ASM (#546-549)
TKOToken.getChainId() (#1119-1123) uses assembly
- INLINE ASM (#1121)
Do not use evm assembly.
Additional information: link
Address._functionCallWithValue(address,bytes,uint256,string) (#528-554) is never used and should be removed
Address.functionCall(address,bytes) (#475-477) is never used and should be removed
Address.functionCall(address,bytes,string) (#485-491) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (#504-510) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (#518-526) is never used and should be removed
Address.isContract(address) (#420-431) is never used and should be removed
Address.sendValue(address,uint256) (#449-455) is never used and should be removed
Context._msgData() (#20-23) is never used and should be removed
SafeMath.div(uint256,uint256) (#311-313) is never used and should be removed
SafeMath.div(uint256,uint256,string) (#327-337) is never used and should be removed
SafeMath.min(uint256,uint256) (#376-378) is never used and should be removed
SafeMath.mod(uint256,uint256) (#351-353) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#367-374) is never used and should be removed
SafeMath.mul(uint256,uint256) (#285-297) is never used and should be removed
SafeMath.sqrt(uint256) (#381-392) is never used and should be removed
Remove unused functions.
Additional information: link
Low level call in Address.sendValue(address,uint256) (#449-455):
- (success) = recipient.call{value: amount}() (#453)
Low level call in Address._functionCallWithValue(address,bytes,uint256,string) (#528-554):
- (success,returndata) = target.call{value: weiValue}(data) (#537)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Parameter TKOToken.mint(address,uint256)._to (#881) is not in mixedCase
Parameter TKOToken.mint(address,uint256)._amount (#881) is not in mixedCase
Parameter TKOToken.burn(address,uint256)._from (#886) is not in mixedCase
Parameter TKOToken.burn(address,uint256)._amount (#886) is not in mixedCase
Variable TKOToken._delegates (#900) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#77-80)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#86-88)
decimals() should be declared external:
- BEP20.decimals() (#632-634)
symbol() should be declared external:
- BEP20.symbol() (#639-641)
totalSupply() should be declared external:
- BEP20.totalSupply() (#646-648)
transfer(address,uint256) should be declared external:
- BEP20.transfer(address,uint256) (#665-668)
allowance(address,address) should be declared external:
- BEP20.allowance(address,address) (#673-675)
approve(address,uint256) should be declared external:
- BEP20.approve(address,uint256) (#684-687)
transferFrom(address,address,uint256) should be declared external:
- BEP20.transferFrom(address,address,uint256) (#701-713)
increaseAllowance(address,uint256) should be declared external:
- BEP20.increaseAllowance(address,uint256) (#727-730)
decreaseAllowance(address,uint256) should be declared external:
- BEP20.decreaseAllowance(address,uint256) (#746-753)
mint(uint256) should be declared external:
- BEP20.mint(uint256) (#763-766)
mint(address,uint256) should be declared external:
- TKOToken.mint(address,uint256) (#881-884)
burn(address,uint256) should be declared external:
- TKOToken.burn(address,uint256) (#886-889)
Use the external attribute for functions never called from the contract.
Additional information: link
Unable to find audit link on the website
Unable to find whitepaper link on the website
Token is not listed at Mobula.Finance
Additional information: link
Unable to find Discord account