Introducing skilled-based income for anyone, anywhere. A financial tool to stake and collateralize capital in the peer-to-peer minigame. The purpose of RPS Finance is to prove there is financial credibility in taking risk, particularly via casual and competitive games.
Contract locking ether found:
Contract RPS (#1508-1607) has payable functions:
- RPS.receive() (#1605)
But does not have a function to withdraw the ether
Remove the payable attribute or add a withdraw function.
Additional information: link
Unable to verify that contract auditor is trusted: Certik, Quantstamp, Hacken, Solidity, Paladinsec, Openzeppelin, Verichains
Contract ownership is not renounced (belongs to a wallet)
Reentrancy in RPS.initialize(address,address,string,string,uint8) (#1522-1550):
External calls:
- pancakePair = IPancakeFactory(pancakeRouter.factory()).createPair(address(this),pancakeRouter.WETH()) (#1537-1540)
State variables written after the call(s):
- initializeExecuted = true (#1549)
Reentrancy in RPS._transfer(address,address,uint256) (#1567-1588):
External calls:
- swapAndSendMarketingBNB(swapMarketingTokens) (#1584)
- pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1596-1602)
State variables written after the call(s):
- super._transfer(from,to,amount) (#1587)
- _balances[from] = fromBalance - amount (#835)
- _balances[to] += amount (#837)
Apply the check-effects-interactions pattern.
Additional information: link
RPS.initialize(address,address,string,string,uint8)._symbol (#1526) shadows:
- ERC20Upgradeable._symbol (#635) (state variable)
RPS.initialize(address,address,string,string,uint8)._name (#1525) shadows:
- ERC20Upgradeable._name (#634) (state variable)
Rename the local variables that shadow another component.
Additional information: link
RPS.initialize(address,address,string,string,uint8)._marketingWalletAddress (#1524) lacks a zero-check on :
- marketingWallet = _marketingWalletAddress (#1535)
Check that the address is not zero.
Additional information: link
Reentrancy in RPS.initialize(address,address,string,string,uint8) (#1522-1550):
External calls:
- pancakePair = IPancakeFactory(pancakeRouter.factory()).createPair(address(this),pancakeRouter.WETH()) (#1537-1540)
State variables written after the call(s):
- BNBRewardsFee = _BNBRewardsFee (#1544)
- _mint(owner(),10000000000 * (10 ** 18)) (#1548)
- _balances[account] += amount (#859)
- _mint(owner(),10000000000 * (10 ** 18)) (#1548)
- _totalSupply += amount (#858)
- liquidityFee = _liquidityFee (#1545)
- marketingFee = _marketingFee (#1546)
- totalFees = _BNBRewardsFee.add(_liquidityFee).add(_marketingFee) (#1547)
Reentrancy in RPS._transfer(address,address,uint256) (#1567-1588):
External calls:
- swapAndSendMarketingBNB(swapMarketingTokens) (#1584)
- pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1596-1602)
State variables written after the call(s):
- swapping = false (#1585)
Apply the check-effects-interactions pattern.
Additional information: link
Reentrancy in RPS._transfer(address,address,uint256) (#1567-1588):
External calls:
- swapAndSendMarketingBNB(swapMarketingTokens) (#1584)
- pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,marketingWallet,block.timestamp) (#1596-1602)
Event emitted after the call(s):
- Transfer(from,to,amount) (#839)
- super._transfer(from,to,amount) (#1587)
Reentrancy in RPS.initialize(address,address,string,string,uint8) (#1522-1550):
External calls:
- pancakePair = IPancakeFactory(pancakeRouter.factory()).createPair(address(this),pancakeRouter.WETH()) (#1537-1540)
Event emitted after the call(s):
- Transfer(address(0),account,amount) (#860)
- _mint(owner(),10000000000 * (10 ** 18)) (#1548)
Apply the check-effects-interactions pattern.
Additional information: link
AddressUpgradeable.verifyCallResult(bool,bytes,string) (#291-311) uses assembly
- INLINE ASM (#303-306)
Do not use evm assembly.
Additional information: link
Different versions of Solidity are used:
- Version used: ['^0.8.0', '^0.8.1', '^0.8.11', '^0.8.2']
- ^0.8.0 (#6)
- ^0.8.0 (#91)
- ^0.8.1 (#121)
- ^0.8.2 (#319)
- ^0.8.0 (#459)
- ^0.8.0 (#499)
- ^0.8.0 (#596)
- ^0.8.11 (#1011)
Use one Solidity version.
Additional information: link
ContextUpgradeable._msgData() (#482-484) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256) (#231-237) is never used and should be removed
SafeMath.sub(uint256,uint256) (#1047-1049) is never used and should be removed
SafeMath.sub(uint256,uint256,string) (#1061-1066) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes) (#202-204) is never used and should be removed
ContextUpgradeable.__Context_init_unchained() (#476-477) is never used and should be removed
AddressUpgradeable.functionCall(address,bytes,string) (#212-218) is never used and should be removed
AddressUpgradeable.sendValue(address,uint256) (#177-182) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (#1156-1159) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes) (#264-266) is never used and should be removed
SafeMath.mod(uint256,uint256) (#1140-1142) is never used and should be removed
ERC20Upgradeable._burn(address,uint256) (#876-891) is never used and should be removed
AddressUpgradeable.verifyCallResult(bool,bytes,string) (#291-311) is never used and should be removed
AddressUpgradeable.functionStaticCall(address,bytes,string) (#274-283) is never used and should be removed
Initializable._disableInitializers() (#445-451) is never used and should be removed
ContextUpgradeable.__Context_init() (#473-474) is never used and should be removed
AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (#245-256) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.11 (#1011) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
Pragma version^0.8.0 (#596) allows old versions
Pragma version^0.8.0 (#91) allows old versions
Pragma version^0.8.0 (#459) allows old versions
solc-0.8.11 is not recommended for deployment
Pragma version^0.8.1 (#121) allows old versions
Pragma version^0.8.0 (#6) allows old versions
Pragma version^0.8.2 (#319) allows old versions
Pragma version^0.8.0 (#499) 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
Low level call in AddressUpgradeable.functionStaticCall(address,bytes,string) (#274-283):
- (success,returndata) = target.staticcall(data) (#281)
Low level call in AddressUpgradeable.sendValue(address,uint256) (#177-182):
- (success) = recipient.call{value: amount}() (#180)
Low level call in AddressUpgradeable.functionCallWithValue(address,bytes,uint256,string) (#245-256):
- (success,returndata) = target.call{value: value}(data) (#254)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function IPancakeRouter01.WETH() (#1164) is not in mixedCase
Parameter RPS.initialize(address,address,string,string,uint8).__decimals (#1527) is not in mixedCase
Variable ContextUpgradeable.__gap (#491) is not in mixedCase
Parameter RPS.initialize(address,address,string,string,uint8)._marketingWalletAddress (#1524) is not in mixedCase
Parameter RPS.initialize(address,address,string,string,uint8)._name (#1525) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init() (#523-525) is not in mixedCase
Variable OwnableUpgradeable.__gap (#588) is not in mixedCase
Variable RPS.BNBRewardsFee (#1512) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init_unchained(string,string) (#650-653) is not in mixedCase
Function ERC20Upgradeable.__ERC20_init(string,string) (#646-648) is not in mixedCase
Function ContextUpgradeable.__Context_init_unchained() (#476-477) is not in mixedCase
Function IPancakePair.MINIMUM_LIQUIDITY() (#1433) is not in mixedCase
Parameter RPS.initialize(address,address,string,string,uint8)._pancakeV2RouterAddress (#1523) is not in mixedCase
Variable ERC20Upgradeable.__gap (#985) is not in mixedCase
Function IPancakeFactory.INIT_CODE_PAIR_HASH() (#1505) is not in mixedCase
Parameter RPS.initialize(address,address,string,string,uint8)._symbol (#1526) is not in mixedCase
Function IPancakePair.PERMIT_TYPEHASH() (#1402) is not in mixedCase
Function IPancakePair.DOMAIN_SEPARATOR() (#1400) is not in mixedCase
Function OwnableUpgradeable.__Ownable_init_unchained() (#527-529) is not in mixedCase
Function ContextUpgradeable.__Context_init() (#473-474) is not in mixedCase
Variable RPS._decimals (#1515) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Variable IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountADesired (#1169) is too similar to IPancakeRouter01.addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256).amountBDesired (#1170)
Prevent variables from having similar names.
Additional information: link
RPS.initialize(address,address,string,string,uint8) (#1522-1550) uses literals with too many digits:
- _mint(owner(),10000000000 * (10 ** 18)) (#1548)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
OwnableUpgradeable.__gap (#588) is never used in RPS (#1508-1607)
Remove unused state variables.
Additional information: link
transferFrom(address,address,uint256) should be declared external:
- ERC20Upgradeable.transferFrom(address,address,uint256) (#754-763)
transferOwnership(address) should be declared external:
- OwnableUpgradeable.transferOwnership(address) (#568-571)
name() should be declared external:
- ERC20Upgradeable.name() (#658-660)
totalSupply() should be declared external:
- ERC20Upgradeable.totalSupply() (#690-692)
initialize(address,address,string,string,uint8) should be declared external:
- RPS.initialize(address,address,string,string,uint8) (#1522-1550)
symbol() should be declared external:
- ERC20Upgradeable.symbol() (#666-668)
increaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.increaseAllowance(address,uint256) (#777-781)
approve(address,uint256) should be declared external:
- ERC20Upgradeable.approve(address,uint256) (#732-736)
decreaseAllowance(address,uint256) should be declared external:
- ERC20Upgradeable.decreaseAllowance(address,uint256) (#797-806)
decimals() should be declared external:
- ERC20Upgradeable.decimals() (#683-685)
- RPS.decimals() (#1552-1554)
renounceOwnership() should be declared external:
- OwnableUpgradeable.renounceOwnership() (#560-562)
updatemarketingWallet(address) should be declared external:
- RPS.updatemarketingWallet(address) (#1563-1566)
transfer(address,uint256) should be declared external:
- ERC20Upgradeable.transfer(address,uint256) (#709-713)
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 is relatively young, but twitter if very old (probably it's fake).
Token has no active CoinGecko listing / rank
Token has no active CoinMarketCap listing / rank
Young tokens have high risks of price dump / death
Telegram account has relatively few subscribers