A DeFi Cross Chain Ecosystem.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
DefilyToken._writeCheckpoint(address,uint32,uint256,uint256) (#1059-1077) uses a dangerous strict equality:
- nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber (#1069)
Don't use strict equality to determine if an account has enough Ether or tokens.
Additional information: link
Contract ownership is not renounced (belongs to a wallet)
Redundant expression "this (#31)" inContext (#25-34)
Remove redundant statements if they congest code but offer no value.
Additional information: link
DefilyToken.manualMintLimit (#688) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
DefilyToken.getChainId() (#1084-1088) uses assembly
- INLINE ASM (#1086)
Do not use evm assembly.
Additional information: link
DefilyToken.capUpdate(uint256) (#710-712) should emit an event for:
- _cap = _newCap (#711)
DefilyToken.lockFromUpdate(uint256) (#715-717) should emit an event for:
- lockFromBlock = _newLockFrom (#716)
DefilyToken.lockToUpdate(uint256) (#720-722) should emit an event for:
- lockToBlock = _newLockTo (#721)
Emit an event for critical parameter changes.
Additional information: link
DefilyToken.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (#925-966) uses timestamp for comparisons
Dangerous comparisons:
- require(bool,string)(now <= expiry,DEFILY::delegateBySig: signature expired) (#964)
Avoid relying on block.timestamp.
Additional information: link
Different versions of Solidity is used:
- Version used: ['0.6.12', '>=0.6.0<0.8.0']
- >=0.6.0<0.8.0 (#13)
- >=0.6.0<0.8.0 (#38)
- >=0.6.0<0.8.0 (#116)
- >=0.6.0<0.8.0 (#276)
- >=0.6.0<0.8.0 (#582)
- 0.6.12 (#650)
- 0.6.12 (#676)
Use one Solidity version.
Additional information: link
Context._msgData() (#30-33) is never used and should be removed
ERC20._burn(address,uint256) (#521-529) is never used and should be removed
ERC20._setupDecimals(uint8) (#559-561) is never used and should be removed
SafeMath.mod(uint256,uint256) (#252-254) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#268-271) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version>=0.6.0<0.8.0 (#13) is too complex
Pragma version>=0.6.0<0.8.0 (#38) is too complex
Pragma version>=0.6.0<0.8.0 (#116) is too complex
Pragma version>=0.6.0<0.8.0 (#276) is too complex
Pragma version>=0.6.0<0.8.0 (#582) is too complex
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
Parameter Authorizable.addAuthorized(address)._toAdd (#662) is not in mixedCase
Parameter Authorizable.removeAuthorized(address)._toRemove (#666) is not in mixedCase
Parameter DefilyToken.capUpdate(uint256)._newCap (#710) is not in mixedCase
Parameter DefilyToken.lockFromUpdate(uint256)._newLockFrom (#715) is not in mixedCase
Parameter DefilyToken.lockToUpdate(uint256)._newLockTo (#720) is not in mixedCase
Parameter DefilyToken.mint(address,uint256)._to (#775) is not in mixedCase
Parameter DefilyToken.mint(address,uint256)._amount (#775) is not in mixedCase
Parameter DefilyToken.manualMint(address,uint256)._to (#780) is not in mixedCase
Parameter DefilyToken.manualMint(address,uint256)._amount (#780) is not in mixedCase
Parameter DefilyToken.totalBalanceOf(address)._holder (#788) is not in mixedCase
Parameter DefilyToken.lockOf(address)._holder (#792) is not in mixedCase
Parameter DefilyToken.lastUnlockBlock(address)._holder (#796) is not in mixedCase
Parameter DefilyToken.lock(address,uint256)._holder (#800) is not in mixedCase
Parameter DefilyToken.lock(address,uint256)._amount (#800) is not in mixedCase
Parameter DefilyToken.canUnlockAmount(address)._holder (#814) is not in mixedCase
Parameter DefilyToken.transferAll(address)._to (#843) is not in mixedCase
Variable DefilyToken._delegates (#867) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
DefilyToken.slitherConstructorVariables() (#682-1090) uses literals with too many digits:
- _cap = 1000000000e18 (#683)
DefilyToken.slitherConstructorVariables() (#682-1090) uses literals with too many digits:
- manualMintLimit = 200000000e18 (#688)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
symbol() should be declared external:
- ERC20.symbol() (#344-346)
decimals() should be declared external:
- ERC20.decimals() (#361-363)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (#387-390)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (#395-397)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (#406-409)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (#424-428)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (#442-445)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (#461-464)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (#632-635)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (#641-645)
addAuthorized(address) should be declared external:
- Authorizable.addAuthorized(address) (#662-664)
removeAuthorized(address) should be declared external:
- Authorizable.removeAuthorized(address) (#666-669)
cap() should be declared external:
- DefilyToken.cap() (#705-707)
capUpdate(uint256) should be declared external:
- DefilyToken.capUpdate(uint256) (#710-712)
lockFromUpdate(uint256) should be declared external:
- DefilyToken.lockFromUpdate(uint256) (#715-717)
lockToUpdate(uint256) should be declared external:
- DefilyToken.lockToUpdate(uint256) (#720-722)
unlockedSupply() should be declared external:
- DefilyToken.unlockedSupply() (#724-726)
lockedSupply() should be declared external:
- DefilyToken.lockedSupply() (#728-730)
circulatingSupply() should be declared external:
- DefilyToken.circulatingSupply() (#732-734)
mint(address,uint256) should be declared external:
- DefilyToken.mint(address,uint256) (#775-778)
manualMint(address,uint256) should be declared external:
- DefilyToken.manualMint(address,uint256) (#780-786)
totalBalanceOf(address) should be declared external:
- DefilyToken.totalBalanceOf(address) (#788-790)
lockOf(address) should be declared external:
- DefilyToken.lockOf(address) (#792-794)
lastUnlockBlock(address) should be declared external:
- DefilyToken.lastUnlockBlock(address) (#796-798)
lock(address,uint256) should be declared external:
- DefilyToken.lock(address,uint256) (#800-812)
unlock() should be declared external:
- DefilyToken.unlock() (#828-840)
transferAll(address) should be declared external:
- DefilyToken.transferAll(address) (#843-858)
Use the external attribute for functions never called from the contract.
Additional information: link
Token has relatively low CoinMarketCap rank
Young tokens have high risks of price dump / death
Token has relatively low CoinGecko rank
Young tokens have high risks of price dump / death
Unable to find Youtube account