Authorized.safeWithdraw() (Authorized.sol#33-36) sends eth to arbitrary user
Dangerous calls:
- address(_msgSender()).transfer(contractBalance) (Authorized.sol#35)
RightContract.safeOtherTokens(address,address,uint256) (RightCoin.sol#373-375) sends eth to arbitrary user
Dangerous calls:
- receiv.transfer(amount) (RightCoin.sol#374)
Ensure that an arbitrary user cannot withdraw unauthorized funds.
Additional information: link
RightContract._name (RightCoin.sol#54) shadows:
- ERC20._name (ERC20.sol#41)
RightContract._symbol (RightCoin.sol#55) shadows:
- ERC20._symbol (ERC20.sol#42)
Remove the state variable shadowing.
Additional information: link
RightContract.safeOtherTokens(address,address,uint256) (RightCoin.sol#373-375) ignores return value by IERC20(token).transfer(receiv,amount) (RightCoin.sol#374)
Use SafeERC20, or ensure that the transfer/transferFrom return value is checked.
Additional information: link
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Combination 2: Unchecked transfer + Functions that send Ether to arbitraty destination. Usual for scams. May be justified by some complex mechanics (e.g. rebase, reflections). DYOR & manual audit are advised.
Contract ownership is not renounced (belongs to a wallet)
Authorized.safeApprove(address,address,uint256) (Authorized.sol#29-31) ignores return value by ERC20(token).approve(spender,amount) (Authorized.sol#30)
SwapHelper.safeApprove(address,address,uint256) (SwapHelper.sol#11) ignores return value by ERC20(token).approve(spender,amount) (SwapHelper.sol#11)
Ensure that all the return values of the function calls are used.
Additional information: link
RightContract.setAdministrationWallet(address).account (RightCoin.sol#97) lacks a zero-check on :
- administrationWallet = account (RightCoin.sol#97)
RightContract.safeOtherTokens(address,address,uint256).receiv (RightCoin.sol#373) lacks a zero-check on :
- receiv.transfer(amount) (RightCoin.sol#374)
RightContract.setRIGHTCOIN_POOL(address).newPair (RightCoin.sol#377) lacks a zero-check on :
- RIGHTCOIN_POOL = newPair (RightCoin.sol#377)
RightContract.setWBNB_BUSD_Pair(address).newPair (RightCoin.sol#378) lacks a zero-check on :
- WBNB_BUSD_PAIR = newPair (RightCoin.sol#378)
Check that the address is not zero.
Additional information: link
Reentrancy in RightContract.constructor() (RightCoin.sol#99-126):
External calls:
- RIGHTCOIN_POOL = address(PancakeFactory(router.factory()).createPair(WBNB,address(this))) (RightCoin.sol#103)
State variables written after the call(s):
- administrationWallet = 0x3C6B38EaF1E135395B86dE368B39aac03Bd47b4C (RightCoin.sol#105)
- exemptFee[address(this)] = true (RightCoin.sol#113)
- exemptFee[DEAD] = true (RightCoin.sol#114)
- exemptFee[ownerWallet] = true (RightCoin.sol#115)
- exemptStaker[RIGHTCOIN_POOL] = true (RightCoin.sol#108)
- exemptStaker[address(this)] = true (RightCoin.sol#109)
- exemptStaker[DEAD] = true (RightCoin.sol#110)
- exemptStaker[ZERO] = true (RightCoin.sol#111)
- exemptStaker[ownerWallet] = true (RightCoin.sol#112)
- exemptTxLimit[RIGHTCOIN_POOL] = true (RightCoin.sol#116)
- exemptTxLimit[address(this)] = true (RightCoin.sol#117)
- exemptTxLimit[DEAD] = true (RightCoin.sol#118)
- exemptTxLimit[ZERO] = true (RightCoin.sol#119)
- exemptTxLimit[ownerWallet] = true (RightCoin.sol#120)
- liquidityPool.push(RIGHTCOIN_POOL) (RightCoin.sol#104)
- swapHelper = new SwapHelper() (RightCoin.sol#122)
Reentrancy in RightContract.constructor() (RightCoin.sol#99-126):
External calls:
- RIGHTCOIN_POOL = address(PancakeFactory(router.factory()).createPair(WBNB,address(this))) (RightCoin.sol#103)
- swapHelper.safeApprove(WBNB,address(this),type()(uint256).max) (RightCoin.sol#123)
State variables written after the call(s):
- _mint(ownerWallet,_maxSupply) (RightCoin.sol#124)
- _balances[account] += amount (ERC20.sol#257)
- _mint(ownerWallet,_maxSupply) (RightCoin.sol#124)
- _totalSupply += amount (ERC20.sol#256)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in RightContract.constructor() (RightCoin.sol#99-126):
External calls:
- RIGHTCOIN_POOL = address(PancakeFactory(router.factory()).createPair(WBNB,address(this))) (RightCoin.sol#103)
- swapHelper.safeApprove(WBNB,address(this),type()(uint256).max) (RightCoin.sol#123)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (ERC20.sol#258)
- _mint(ownerWallet,_maxSupply) (RightCoin.sol#124)
Apply the check-effects-interactions pattern.
Additional information: link
RightContract.isReversed(address,address) (RightCoin.sol#294-305) uses assembly
- INLINE ASM (RightCoin.sol#297-302)
RightContract.tokenTransfer(address,address,uint256) (RightCoin.sol#307-317) uses assembly
- INLINE ASM (RightCoin.sol#309-315)
RightContract.tokenTransferFrom(address,address,address,uint256) (RightCoin.sol#319-330) uses assembly
- INLINE ASM (RightCoin.sol#321-328)
RightContract.swapToken(address,uint256,uint256,address) (RightCoin.sol#332-345) uses assembly
- INLINE ASM (RightCoin.sol#334-343)
RightContract.getTokenBalanceOf(address,address) (RightCoin.sol#347-357) uses assembly
- INLINE ASM (RightCoin.sol#349-355)
RightContract.getTokenReserves(address) (RightCoin.sol#359-369) uses assembly
- INLINE ASM (RightCoin.sol#361-367)
Do not use evm assembly.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.8.0', '^0.8.5']
- ^0.8.5 (Authorized.sol#3)
- ^0.8.0 (Context.sol#3)
- ^0.8.0 (ERC20.sol#3)
- ^0.8.0 (IERC20.sol#3)
- ^0.8.0 (IERC20Metadata.sol#3)
- ^0.8.5 (IPancake.sol#3)
- ^0.8.0 (Ownable.sol#3)
- ^0.8.5 (RightCoin.sol#2)
- ^0.8.0 (Strings.sol#3)
- ^0.8.5 (SwapHelper.sol#3)
Use one Solidity version.
Additional information: link
Context._msgData() (Context.sol#20-22) is never used and should be removed
ERC20._beforeTokenTransfer(address,address,uint256) (ERC20.sol#330-334) is never used and should be removed
ERC20._transfer(address,address,uint256) (ERC20.sol#220-240) is never used and should be removed
RightContract.walletHolder(address) (RightCoin.sol#370-372) is never used and should be removed
Strings.toHexString(uint256) (Strings.sol#39-50) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (Context.sol#3) allows old versions
Pragma version^0.8.0 (ERC20.sol#3) allows old versions
Pragma version^0.8.0 (IERC20.sol#3) allows old versions
Pragma version^0.8.0 (IERC20Metadata.sol#3) allows old versions
Pragma version^0.8.0 (Ownable.sol#3) allows old versions
Pragma version^0.8.0 (Strings.sol#3) allows old versions
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
Variable ERC20._balances (ERC20.sol#35) is not in mixedCase
Function RightContract.setRIGHTCOIN_POOL(address) (RightCoin.sol#377) is not in mixedCase
Function RightContract.setWBNB_BUSD_Pair(address) (RightCoin.sol#378) is not in mixedCase
Function RightContract.getRIGHTCOIN_POOL() (RightCoin.sol#379) is not in mixedCase
Function RightContract.getWBNB_BUSD_Pair() (RightCoin.sol#380) is not in mixedCase
Constant RightContract._name (RightCoin.sol#54) is not in UPPER_CASE_WITH_UNDERSCORES
Constant RightContract._symbol (RightCoin.sol#55) is not in UPPER_CASE_WITH_UNDERSCORES
Constant RightContract.decimal (RightCoin.sol#52) is not in UPPER_CASE_WITH_UNDERSCORES
Constant RightContract.decimalBUSD (RightCoin.sol#53) is not in UPPER_CASE_WITH_UNDERSCORES
Constant RightContract._maxSupply (RightCoin.sol#56) is not in UPPER_CASE_WITH_UNDERSCORES
Variable RightContract._maxTxAmount (RightCoin.sol#57) is not in mixedCase
Variable RightContract.WBNB_BUSD_PAIR (RightCoin.sol#73) is not in mixedCase
Variable RightContract.RIGHTCOIN_POOL (RightCoin.sol#74) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
RightContract.isReversed(address,address) (RightCoin.sol#294-305) uses literals with too many digits:
- mstore(uint256,uint256)(emptyPointer_isReversed_asm_0,0x0dfe168100000000000000000000000000000000000000000000000000000000) (RightCoin.sol#299)
RightContract.tokenTransfer(address,address,uint256) (RightCoin.sol#307-317) uses literals with too many digits:
- mstore(uint256,uint256)(emptyPointer_tokenTransfer_asm_0,0xa9059cbb00000000000000000000000000000000000000000000000000000000) (RightCoin.sol#311)
RightContract.tokenTransferFrom(address,address,address,uint256) (RightCoin.sol#319-330) uses literals with too many digits:
- mstore(uint256,uint256)(emptyPointer_tokenTransferFrom_asm_0,0x23b872dd00000000000000000000000000000000000000000000000000000000) (RightCoin.sol#323)
RightContract.swapToken(address,uint256,uint256,address) (RightCoin.sol#332-345) uses literals with too many digits:
- mstore(uint256,uint256)(emptyPointer_swapToken_asm_0,0x022c0d9f00000000000000000000000000000000000000000000000000000000) (RightCoin.sol#336)
RightContract.getTokenBalanceOf(address,address) (RightCoin.sol#347-357) uses literals with too many digits:
- mstore(uint256,uint256)(emptyPointer_getTokenBalanceOf_asm_0,0x70a0823100000000000000000000000000000000000000000000000000000000) (RightCoin.sol#351)
RightContract.getTokenReserves(address) (RightCoin.sol#359-369) uses literals with too many digits:
- mstore(uint256,uint256)(emptyPointer_getTokenReserves_asm_0,0x0902f1ac00000000000000000000000000000000000000000000000000000000) (RightCoin.sol#363)
RightContract.slitherConstructorConstantVariables() (RightCoin.sol#50-384) uses literals with too many digits:
- DEAD = 0x000000000000000000000000000000000000dEaD (RightCoin.sol#69)
RightContract.slitherConstructorConstantVariables() (RightCoin.sol#50-384) uses literals with too many digits:
- ZERO = 0x0000000000000000000000000000000000000000 (RightCoin.sol#70)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
name() should be declared external:
- ERC20.name() (ERC20.sol#61-63)
symbol() should be declared external:
- ERC20.symbol() (ERC20.sol#69-71)
decimals() should be declared external:
- ERC20.decimals() (ERC20.sol#86-88)
- RightContract.decimals() (RightCoin.sol#138-140)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (ERC20.sol#100-102)
transfer(address,uint256) should be declared external:
- ERC20.transfer(address,uint256) (ERC20.sol#112-115)
allowance(address,address) should be declared external:
- ERC20.allowance(address,address) (ERC20.sol#120-122)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (ERC20.sol#131-134)
transferFrom(address,address,uint256) should be declared external:
- ERC20.transferFrom(address,address,uint256) (ERC20.sol#149-163)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (ERC20.sol#177-180)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (ERC20.sol#196-204)
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (Ownable.sol#53-55)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (Ownable.sol#61-64)
activeTxLimit() should be declared external:
- RightContract.activeTxLimit() (RightCoin.sol#84-86)
desactiveTxLimit() should be declared external:
- RightContract.desactiveTxLimit() (RightCoin.sol#88-90)
setExemptFee(address,bool) should be declared external:
- RightContract.setExemptFee(address,bool) (RightCoin.sol#92)
setExemptFeeReceiver(address,bool) should be declared external:
- RightContract.setExemptFeeReceiver(address,bool) (RightCoin.sol#93)
setExemptTxLimit(address,bool) should be declared external:
- RightContract.setExemptTxLimit(address,bool) (RightCoin.sol#94)
setExemptStaker(address,bool) should be declared external:
- RightContract.setExemptStaker(address,bool) (RightCoin.sol#96)
setAdministrationWallet(address) should be declared external:
- RightContract.setAdministrationWallet(address) (RightCoin.sol#97)
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