The Scrooge Token $SCRG is designed as a fair-launch asset aimed at a broader audience of decentralized industry participants. The total emission of 1,000,000,000 tokens foresees the accrual of a 9% reward from each transaction to be distributed equally among all holders, as per the tokenomic model.
Scrooge.rescueBEP20Tokens(address) (Scrooge.sol#314-316) ignores return value by IERC20(tokenAddress).transfer(msg.sender,IERC20(tokenAddress).balanceOf(address(this))) (Scrooge.sol#315)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Scrooge.allowance(address,address).owner (Scrooge.sol#96) shadows:
- Ownable.owner() (Ownable.sol#35-37) (function)
Scrooge._approve(address,address,uint256).owner (Scrooge.sol#269) shadows:
- Ownable.owner() (Ownable.sol#35-37) (function)
Rename the local variables that shadow another component.
Additional information: link
Address.isContract(address) (Address.sol#27-37) uses assembly
- INLINE ASM (Address.sol#33-35)
Address.verifyCallResult(bool,bytes,string) (Address.sol#196-216) uses assembly
- INLINE ASM (Address.sol#208-211)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['>=0.8.0', '^0.8.0']
- ^0.8.0 (Address.sol#4)
- ^0.8.0 (Context.sol#4)
- ^0.8.0 (IERC20.sol#4)
- ^0.8.0 (Ownable.sol#4)
- >=0.8.0 (Scrooge.sol#2)
Use one Solidity version.
Additional information: link
Scrooge.includeInReward(address) (Scrooge.sol#176-187) has costly operations inside a loop:
- _excluded.pop() (Scrooge.sol#183)
Use a local variable to hold the loop computation result.
Additional information: link
Address.functionCall(address,bytes) (Address.sol#80-82) is never used and should be removed
Address.functionCall(address,bytes,string) (Address.sol#90-96) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (Address.sol#109-115) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (Address.sol#123-134) is never used and should be removed
Address.functionDelegateCall(address,bytes) (Address.sol#169-171) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (Address.sol#179-188) is never used and should be removed
Address.functionStaticCall(address,bytes) (Address.sol#142-144) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (Address.sol#152-161) is never used and should be removed
Address.isContract(address) (Address.sol#27-37) is never used and should be removed
Address.sendValue(address,uint256) (Address.sol#55-60) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (Address.sol#196-216) is never used and should be removed
Context._msgData() (Context.sol#21-23) is never used and should be removed
Remove unused functions.
Additional information: link
Scrooge._rTotal (Scrooge.sol#28) is set pre-construction with a non-constant function or state variable:
- (MAX - (MAX % _tTotal))
Remove any initialization of state variables via non-constant state variables or function calls. If variables must be set upon contract deployment, locate initialization in the constructor instead.
Additional information: link
Pragma version^0.8.0 (Address.sol#4) allows old versions
Pragma version^0.8.0 (Context.sol#4) allows old versions
Pragma version^0.8.0 (IERC20.sol#4) allows old versions
Pragma version^0.8.0 (Ownable.sol#4) allows old versions
Pragma version>=0.8.0 (Scrooge.sol#2) allows old versions
solc-0.8.11 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 Address.sendValue(address,uint256) (Address.sol#55-60):
- (success) = recipient.call{value: amount}() (Address.sol#58)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (Address.sol#123-134):
- (success,returndata) = target.call{value: value}(data) (Address.sol#132)
Low level call in Address.functionStaticCall(address,bytes,string) (Address.sol#152-161):
- (success,returndata) = target.staticcall(data) (Address.sol#159)
Low level call in Address.functionDelegateCall(address,bytes,string) (Address.sol#179-188):
- (success,returndata) = target.delegatecall(data) (Address.sol#186)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Struct Scrooge.valuesFromGetValues (Scrooge.sol#36-42) is not in CapWords
Parameter Scrooge.setFeeRate(uint256)._rfi (Scrooge.sol#205) is not in mixedCase
Constant Scrooge._decimals (Scrooge.sol#24) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Scrooge._name (Scrooge.sol#30) is not in UPPER_CASE_WITH_UNDERSCORES
Constant Scrooge._symbol (Scrooge.sol#31) is not in UPPER_CASE_WITH_UNDERSCORES
Follow the Solidity naming convention.
Additional information: link
Scrooge.slitherConstructorVariables() (Scrooge.sol#10-322) uses literals with too many digits:
- _tTotal = 1000000000 * 10 ** _decimals (Scrooge.sol#27)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
Scrooge._tTotal (Scrooge.sol#27) should be constant
Add the constant attributes to state variables that never change.
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (Ownable.sol#54-56)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (Ownable.sol#62-65)
name() should be declared external:
- Scrooge.name() (Scrooge.sol#64-66)
symbol() should be declared external:
- Scrooge.symbol() (Scrooge.sol#69-71)
decimals() should be declared external:
- Scrooge.decimals() (Scrooge.sol#74-76)
totalSupply() should be declared external:
- Scrooge.totalSupply() (Scrooge.sol#79-81)
transfer(address,uint256) should be declared external:
- Scrooge.transfer(address,uint256) (Scrooge.sol#90-93)
allowance(address,address) should be declared external:
- Scrooge.allowance(address,address) (Scrooge.sol#96-98)
approve(address,uint256) should be declared external:
- Scrooge.approve(address,uint256) (Scrooge.sol#101-104)
transferFrom(address,address,uint256) should be declared external:
- Scrooge.transferFrom(address,address,uint256) (Scrooge.sol#107-111)
increaseAllowance(address,uint256) should be declared external:
- Scrooge.increaseAllowance(address,uint256) (Scrooge.sol#114-117)
decreaseAllowance(address,uint256) should be declared external:
- Scrooge.decreaseAllowance(address,uint256) (Scrooge.sol#120-123)
isExcludedFromReward(address) should be declared external:
- Scrooge.isExcludedFromReward(address) (Scrooge.sol#126-128)
reflect(uint256) should be declared external:
- Scrooge.reflect(uint256) (Scrooge.sol#137-144)
reflectionFromToken(uint256,bool) should be declared external:
- Scrooge.reflectionFromToken(uint256,bool) (Scrooge.sol#154-163)
isExcludedFromFee(address) should be declared external:
- Scrooge.isExcludedFromFee(address) (Scrooge.sol#200-202)
Use the external attribute for functions never called from the contract.
Additional information: link
Young tokens have high risks of scam / price dump / death
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Young tokens have high risks of price dump / death
Young tokens have high risks of price dump / death
Twitter account has relatively few followers
Unable to find Discord account