PROSPER is a short-term non-custodial prediction & hedging platform based on the Binance Smart Chain.
Unable to find manual contract audit (e.g. Certik, PeckShield, Solidity...)
Address.isContract(address) (Address.sol#27-36) uses assembly
- INLINE ASM (Address.sol#34)
Address._verifyCallResult(bool,bytes,string) (Address.sol#172-189) uses assembly
- INLINE ASM (Address.sol#181-184)
Initializable.isConstructor() (Initializable.sol#50-60) uses assembly
- INLINE ASM (Initializable.sol#58)
Do not use evm assembly.
Additional information: link
Redundant expression "this (ContextUpgradeSafe.sol#37)" inContextUpgradeSafe (ContextUpgradeSafe.sol#18-42)
Remove redundant statements if they congest code but offer no value.
Additional information: link
PROS.initialize(string,string) (PROS.sol#12-16) uses literals with too many digits:
- totalSupply = 100000000 * (10 ** 18) (PROS.sol#14)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
ERC20UpgradeSafe.__ERC20_init_unchained(string,string).name (ERC20UpgradeSafe.sol#65) shadows:
- ERC20UpgradeSafe.name() (ERC20UpgradeSafe.sol#78-80) (function)
PROS.initialize(string,string).totalSupply (PROS.sol#14) shadows:
- ERC20UpgradeSafe.totalSupply() (ERC20UpgradeSafe.sol#110-112) (function)
- IERC20.totalSupply() (IERC20.sol#13) (function)
PROS.initialize(string,string).symbol (PROS.sol#12) shadows:
- ERC20UpgradeSafe.symbol() (ERC20UpgradeSafe.sol#86-88) (function)
PROS.initialize(string,string).name (PROS.sol#12) shadows:
- ERC20UpgradeSafe.name() (ERC20UpgradeSafe.sol#78-80) (function)
ERC20UpgradeSafe.__ERC20_init(string,string).name (ERC20UpgradeSafe.sol#60) shadows:
- ERC20UpgradeSafe.name() (ERC20UpgradeSafe.sol#78-80) (function)
ERC20UpgradeSafe.__ERC20_init(string,string).symbol (ERC20UpgradeSafe.sol#60) shadows:
- ERC20UpgradeSafe.symbol() (ERC20UpgradeSafe.sol#86-88) (function)
ERC20UpgradeSafe.__ERC20_init_unchained(string,string).symbol (ERC20UpgradeSafe.sol#65) shadows:
- ERC20UpgradeSafe.symbol() (ERC20UpgradeSafe.sol#86-88) (function)
Rename the local variables that shadow another component.
Additional information: link
Different versions of Solidity are used:
- Version used: ['0.6.5', '^0.6.5']
- ^0.6.5 (Address.sol#4)
- ^0.6.5 (ContextUpgradeSafe.sol#4)
- ^0.6.5 (ERC20UpgradeSafe.sol#4)
- ^0.6.5 (IERC20.sol#4)
- ^0.6.5 (Initializable.sol#4)
- 0.6.5 (PROS.sol#4)
- ^0.6.5 (SafeMath.sol#4)
Use one Solidity version.
Additional information: link
SafeMath.mul(uint256,uint256) (SafeMath.sol#78-90) is never used and should be removed
SafeMath.sub(uint256,uint256) (SafeMath.sol#47-49) is never used and should be removed
Address.sendValue(address,uint256) (Address.sol#54-60) is never used and should be removed
ContextUpgradeSafe.__Context_init() (ContextUpgradeSafe.sol#22-24) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (Address.sol#105-107) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (Address.sol#164-170) is never used and should be removed
Address.functionDelegateCall(address,bytes) (Address.sol#154-156) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (SafeMath.sol#156-159) is never used and should be removed
ContextUpgradeSafe._msgData() (ContextUpgradeSafe.sol#36-39) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (Address.sol#115-122) is never used and should be removed
SafeMath.div(uint256,uint256,string) (SafeMath.sol#120-126) is never used and should be removed
Address.functionStaticCall(address,bytes) (Address.sol#130-132) is never used and should be removed
SafeMath.mod(uint256,uint256) (SafeMath.sol#140-142) is never used and should be removed
ERC20UpgradeSafe._setupDecimals(uint8) (ERC20UpgradeSafe.sol#300-302) is never used and should be removed
ERC20UpgradeSafe._burn(address,uint256) (ERC20UpgradeSafe.sol#262-270) is never used and should be removed
SafeMath.div(uint256,uint256) (SafeMath.sol#104-106) is never used and should be removed
Address._verifyCallResult(bool,bytes,string) (Address.sol#172-189) is never used and should be removed
Address.isContract(address) (Address.sol#27-36) is never used and should be removed
Address.functionCall(address,bytes,string) (Address.sol#90-92) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (Address.sol#140-146) is never used and should be removed
Address.functionCall(address,bytes) (Address.sol#80-82) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.6.5 (IERC20.sol#4) allows old versions
Pragma version^0.6.5 (ERC20UpgradeSafe.sol#4) allows old versions
Pragma version^0.6.5 (SafeMath.sol#4) allows old versions
solc-0.6.5 is not recommended for deployment
Pragma version^0.6.5 (ContextUpgradeSafe.sol#4) allows old versions
Pragma version^0.6.5 (Address.sol#4) allows old versions
Pragma version^0.6.5 (Initializable.sol#4) allows old versions
Pragma version0.6.5 (PROS.sol#4) 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 Address.sendValue(address,uint256) (Address.sol#54-60):
- (success) = recipient.call{value: amount}() (Address.sol#58)
Low level call in Address.functionStaticCall(address,bytes,string) (Address.sol#140-146):
- (success,returndata) = target.staticcall(data) (Address.sol#144)
Low level call in Address.functionDelegateCall(address,bytes,string) (Address.sol#164-170):
- (success,returndata) = target.delegatecall(data) (Address.sol#168)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (Address.sol#115-122):
- (success,returndata) = target.call{value: value}(data) (Address.sol#120)
Avoid low-level calls. Check the call success. If the call is meant for a contract, check for code existence
Additional information: link
Function ContextUpgradeSafe.__Context_init() (ContextUpgradeSafe.sol#22-24) is not in mixedCase
Variable ERC20UpgradeSafe.__gap (ERC20UpgradeSafe.sol#320) is not in mixedCase
Function ERC20UpgradeSafe.__ERC20_init_unchained(string,string) (ERC20UpgradeSafe.sol#65-72) is not in mixedCase
Variable Initializable.______gap (Initializable.sol#63) is not in mixedCase
Function ContextUpgradeSafe.__Context_init_unchained() (ContextUpgradeSafe.sol#26-29) is not in mixedCase
Variable ContextUpgradeSafe.__gap (ContextUpgradeSafe.sol#41) is not in mixedCase
Function ERC20UpgradeSafe.__ERC20_init(string,string) (ERC20UpgradeSafe.sol#60-63) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Initializable.______gap (Initializable.sol#63) is never used in PROS (PROS.sol#10-17)
ERC20UpgradeSafe.__gap (ERC20UpgradeSafe.sol#320) is never used in PROS (PROS.sol#10-17)
Remove unused state variables.
Additional information: link
totalSupply() should be declared external:
- ERC20UpgradeSafe.totalSupply() (ERC20UpgradeSafe.sol#110-112)
balanceOf(address) should be declared external:
- ERC20UpgradeSafe.balanceOf(address) (ERC20UpgradeSafe.sol#117-119)
symbol() should be declared external:
- ERC20UpgradeSafe.symbol() (ERC20UpgradeSafe.sol#86-88)
name() should be declared external:
- ERC20UpgradeSafe.name() (ERC20UpgradeSafe.sol#78-80)
increaseAllowance(address,uint256) should be declared external:
- ERC20UpgradeSafe.increaseAllowance(address,uint256) (ERC20UpgradeSafe.sol#183-186)
allowance(address,address) should be declared external:
- ERC20UpgradeSafe.allowance(address,address) (ERC20UpgradeSafe.sol#137-139)
decimals() should be declared external:
- ERC20UpgradeSafe.decimals() (ERC20UpgradeSafe.sol#103-105)
transferFrom(address,address,uint256) should be declared external:
- ERC20UpgradeSafe.transferFrom(address,address,uint256) (ERC20UpgradeSafe.sol#165-169)
initialize(string,string) should be declared external:
- PROS.initialize(string,string) (PROS.sol#12-16)
approve(address,uint256) should be declared external:
- ERC20UpgradeSafe.approve(address,uint256) (ERC20UpgradeSafe.sol#148-151)
decreaseAllowance(address,uint256) should be declared external:
- ERC20UpgradeSafe.decreaseAllowance(address,uint256) (ERC20UpgradeSafe.sol#202-205)
transfer(address,uint256) should be declared external:
- ERC20UpgradeSafe.transfer(address,uint256) (ERC20UpgradeSafe.sol#129-132)
Use the external attribute for functions never called from the contract.
Additional information: link
Twitter account link seems to be invalid
Unable to find Youtube account
Unable to find Discord account