Curate is a peer to peer discovery marketplace app supporting crypto payments. Its own native token $XCUR provides zero gas fees for payment transactions.
Curate.transfer(address,uint256).owner (contracts/Curate.sol#28) shadows:
- Ownable.owner() (@openzeppelin/contracts/access/Ownable.sol#35-37) (function)
Rename the local variables that shadow another component.
Additional information: link
Curate.setParams(uint256,uint256,address) (contracts/Curate.sol#61-65) should emit an event for:
- basisPointsRate = _newBasisPoints (contracts/Curate.sol#62)
- maximumFee = _newMaxFee * (10 ** decimals()) (contracts/Curate.sol#63)
Emit an event for critical parameter changes.
Additional information: link
Curate.setParams(uint256,uint256,address)._masterAccount (contracts/Curate.sol#61) lacks a zero-check on :
- masterAccount = _masterAccount (contracts/Curate.sol#64)
Check that the address is not zero.
Additional information: link
Different versions of Solidity is used:
- Version used: ['^0.8.0', '^0.8.9']
- ^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#4)
- ^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4)
- ^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4)
- ^0.8.9 (contracts/Curate.sol#2)
Use one Solidity version.
Additional information: link
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
Remove unused functions.
Additional information: link
Pragma version^0.8.0 (@openzeppelin/contracts/access/Ownable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/ERC20.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/IERC20.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol#4) allows old versions
Pragma version^0.8.0 (@openzeppelin/contracts/utils/Context.sol#4) allows old versions
Pragma version^0.8.9 (contracts/Curate.sol#2) necessitates a version too recent to be trusted. Consider deploying with 0.6.12/0.7.6/0.8.7
solc-0.8.9 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
Parameter Curate.computeFee(uint256)._amount (contracts/Curate.sol#47) is not in mixedCase
Parameter Curate.mint(uint256)._amount (contracts/Curate.sol#57) is not in mixedCase
Parameter Curate.setParams(uint256,uint256,address)._newBasisPoints (contracts/Curate.sol#61) is not in mixedCase
Parameter Curate.setParams(uint256,uint256,address)._newMaxFee (contracts/Curate.sol#61) is not in mixedCase
Parameter Curate.setParams(uint256,uint256,address)._masterAccount (contracts/Curate.sol#61) is not in mixedCase
Follow the Solidity naming convention.
Additional information: link
Curate.constructor() (contracts/Curate.sol#14-17) uses literals with too many digits:
- _mint(0x34ac8D10152c6659b8e8102922EFEdD1e305D10A,10000000 * (10 ** decimals())) (contracts/Curate.sol#15)
Use: Ether suffix, Time suffix, or The scientific notation
Additional information: link
renounceOwnership() should be declared external:
- Ownable.renounceOwnership() (@openzeppelin/contracts/access/Ownable.sol#54-56)
transferOwnership(address) should be declared external:
- Ownable.transferOwnership(address) (@openzeppelin/contracts/access/Ownable.sol#62-65)
name() should be declared external:
- ERC20.name() (@openzeppelin/contracts/token/ERC20/ERC20.sol#62-64)
symbol() should be declared external:
- ERC20.symbol() (@openzeppelin/contracts/token/ERC20/ERC20.sol#70-72)
totalSupply() should be declared external:
- ERC20.totalSupply() (@openzeppelin/contracts/token/ERC20/ERC20.sol#94-96)
balanceOf(address) should be declared external:
- ERC20.balanceOf(address) (@openzeppelin/contracts/token/ERC20/ERC20.sol#101-103)
approve(address,uint256) should be declared external:
- ERC20.approve(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#136-140)
increaseAllowance(address,uint256) should be declared external:
- ERC20.increaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#181-185)
decreaseAllowance(address,uint256) should be declared external:
- ERC20.decreaseAllowance(address,uint256) (@openzeppelin/contracts/token/ERC20/ERC20.sol#201-210)
burn(uint256) should be declared external:
- ERC20Burnable.burn(uint256) (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#20-22)
burnFrom(address,uint256) should be declared external:
- ERC20Burnable.burnFrom(address,uint256) (@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol#35-38)
withdraw() should be declared external:
- Curate.withdraw() (contracts/Curate.sol#67-70)
Use the external attribute for functions never called from the contract.
Additional information: link
Token is not listed at Mobula.Finance
Additional information: link
Young tokens have high risks of price dump / death
Unable to find Discord account