Platform: Code4rena
Start Date: 18/10/2022
Pot Size: $50,000 USDC
Total HM: 13
Participants: 67
Period: 5 days
Judge: Picodes
Total Solo HM: 7
Id: 172
League: ETH
Rank: 43/67
Findings: 1
Award: $37.88
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: berndartmueller
Also found by: 0x1f8b, 0x4non, 0xNazgul, 0xSmartContract, Aymen0909, BClabs, Diana, Jeiwan, Lambda, LeoS, RaoulSchaffranek, RaymondFam, RedOneN, ReyAdmirado, Rolezn, SaharAP, Trust, V_B, __141345__, a12jmx, bharg4v, brgltd, carlitox477, ch0bu, chaduke, cloudjunky, cryptostellar5, cryptphi, csanuragjain, d3e4, delfin454000, erictee, fatherOfBlocks, hansfriese, ignacio, joestakey, karanctf, ladboy233, lukris02, mcwildy, minhtrng, peanuts, ret2basic, seyni, slowmoses, svskaushik, tnevler, yixxas
37.8829 USDC - $37.88
While floating pragmas make sense for libraries to allow them to be included with multiple different versions of applications, it may be a security risk for application implementations.
A known vulnerable compiler version may accidentally be selected or security tools might fall-back to an older compiler version ending up checking a different EVM compilation that is ultimately deployed on the blockchain.
It is recommended to pin to a concrete compiler version.
contracts/JB721GlobalGovernance.sol:L2 pragma solidity ^0.8.16; contracts/JBTiered721DelegateProjectDeployer.sol:L2 pragma solidity ^0.8.16; contracts/JB721TieredGovernance.sol:L2 pragma solidity ^0.8.16; contracts/JBTiered721DelegateStore.sol:L2 pragma solidity ^0.8.16; contracts/JBTiered721DelegateDeployer.sol:L2 pragma solidity ^0.8.16; contracts/JBTiered721Delegate.sol:L2 pragma solidity ^0.8.16; contracts/abstract/JB721Delegate.sol:L2 pragma solidity ^0.8.16;
require()
/revert()
statements should have descriptive strings.Consider adding descriptive strings in require()
/revert()
.
contracts/JBTiered721Delegate.sol:L216 require(address(this) != codeOrigin); contracts/JBTiered721Delegate.sol:L218 require(address(store) == address(0));
_safemint()
should be used rather than _mint()
wherever possible_mint()
is discouraged in favor of _safeMint()
which ensures that the recipient is either an EOA or implements IERC721Receiver
. Both OpenZeppelin and solmate have versions of this function
contracts/JBTiered721Delegate.sol:L461 _mint(_reservedTokenBeneficiary, _tokenId); contracts/JBTiered721Delegate.sol:L504 _mint(_beneficiary, _tokenId); contracts/JBTiered721Delegate.sol:L635 _mint(_beneficiary, _tokenId); contracts/JBTiered721Delegate.sol:L677 _mint(_beneficiary, _tokenId);
#0 - c4-judge
2022-11-04T14:50:18Z
Picodes marked the issue as grade-c
#1 - c4-judge
2022-11-04T21:12:42Z
Picodes marked the issue as grade-b