QA Report #57
Labels
bug
Something isn't working
QA (Quality Assurance)
Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax
Low Risk Issues
Unused
receive()
function will lock Ether in contractIf the intention is for the Ether to be used, the function should
emit
or call another function, otherwise it should revertUsing
payable
with thefallback()
function will lock Ether in the contractThe Ether is never used by any of the proxied contracts - only WETH is
Missing checks for
address(0x0)
when assigning values toaddress
state variables_implement = _imp;
collection = _collection;
splitFactory = _splitFactory;
royaltyVault = _royaltyVault;
splitAsset = _splitAsset;
royaltyAsset = _splitAsset;
splitAsset = _splitAsset;
royaltyAsset = _splitAsset;
splitterProxy = splitProxy;
Misleading
revert()
strings and variable namesThe contract is not specific to either ETH or WETH. This appears to be left over from forking from mirror-xyz/splits
uint256 wethBalance;
No fees may be sent if
payableToken
does not have enough decimals and amounts are smallThere are tokens such as ERC884 tokens, which are ERC20-compatible and are required to have zero decimals. The fix would be to require a minimum number of decimals.
Non-critical Issues
public
functions not called by the contract should be declaredexternal
insteadContracts are allowed to override their parents' functions and change the visibility from
external
topublic
.constant
s should be defined rather than using magic numbersDifferent versions of solidity used
Use a more recent version of solidity
Use a solidity version of at least 0.8.12 to get
string.concat()
to be used instead ofabi.encodePacked(<str>,<str>)
Use a more recent version of solidity
Use a solidity version of at least 0.8.4 to get
bytes.concat()
instead ofabi.encodePacked(<bytes>,<bytes>)
Use a solidity version of at least 0.8.12 to get
string.concat()
instead ofabi.encodePacked(<str>,<str>)
Variable names that consist of all capital letters should be reserved for
const
/immutable
variablesIf the variable needs to be different based on which class it comes from, a
view
/pure
function should be used instead (e.g. like this).Non-library/interface files should use fixed compiler versions, not floating ones
Typos
secondardy
Instanciates
/**** Mmutable storage ****/
Mmutable
Grammar
user want claim
->user wants to claim
NatSpec is incomplete
Missing:
@return
Missing:
@return
Missing:
@return
Missing:
@return
Missing:
@return
Missing:
@return
Missing:
@return
Event is missing
indexed
fieldsEach
event
should use threeindexed
fields if there are three or more fieldsNon-exploitable reentrancies
The text was updated successfully, but these errors were encountered: