Platform: Code4rena
Start Date: 12/07/2022
Pot Size: $75,000 USDC
Total HM: 16
Participants: 100
Period: 7 days
Judge: LSDan
Total Solo HM: 7
Id: 145
League: ETH
Rank: 57/100
Findings: 2
Award: $119.34
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: IllIllI
Also found by: 0x1f8b, 0x29A, 0xDjango, 0xNazgul, 0xNineDec, 0xf15ers, 8olidity, Aussie_Battlers, Bnke0x0, Ch_301, Critical, Deivitto, Dravee, ElKu, Funen, GimelSec, JC, JohnSmith, Lambda, MiloTruck, PwnedNoMore, ReyAdmirado, Rohan16, Rolezn, Ruhum, RustyRabbit, Sm4rty, TomJ, Waze, _Adam, __141345__, alan724, asutorufos, benbaessler, berndartmueller, bin2chen, brgltd, bulej93, c3phas, cRat1st0s, cryptonue, cryptphi, csanuragjain, delfin454000, dxdv, exd0tpy, fatherOfBlocks, gogo, hake, hyh, joestakey, kyteg, lcfr_eth, minhtrng, p_crypt0, pashov, pedr02b2, philogy, rajatbeladiya, rbserver, rishabh, robee, rokinot, sach1r0, sashik_eth, seyni, simon135, svskaushik, zuhaibmohd, zzzitron
78.881 USDC - $78.88
File Name | SHA-1 Hash |
---|---|
2022-07-ens/contracts/dnssec-oracle/BytesUtils.sol | 08b2555ac9985aca02c219f6eda8faf6c9d3e0b2 |
2022-07-ens/contracts/dnssec-oracle/DNSSECImpl.sol | 2d5e0775a0cad79338b40f4217b5568f21578a00 |
2022-07-ens/contracts/dnssec-oracle/RRUtils.sol | 73e566eb8ea0ac6557ba23f566e36ab1fd12b830 |
2022-07-ens/contracts/dnssec-oracle/SHA1.sol | 4449a51d1f1b27374d725749a370dbb2f95608df |
2022-07-ens/contracts/dnssec-oracle/Owned.sol | 9f09ce247e1d8e3f72550c139369cb717127918b |
2022-07-ens/contracts/dnssec-oracle/DNSSEC.sol | fc32b531031113bf965c5170408ab3332d5ec24b |
2022-07-ens/contracts/dnssec-oracle/algorithms/Algorithm.sol | f24be799629d960c085b880c8f9484cfa1a4e4e0 |
2022-07-ens/contracts/dnssec-oracle/digests/Digest.sol | f827dc3a7dafd1ead3b5f2385b7339a38d53e0a1 |
2022-07-ens/contracts/ethregistrar/ETHRegistrarController.sol | 176e5987c06673bee1123b139d11ff73c361f501 |
2022-07-ens/contracts/ethregistrar/IETHRegistrarController.sol | 0429622e73822e12b1d194044647782adf898088 |
2022-07-ens/contracts/ethregistrar/StringUtils.sol | 16a9a0ebaf547a3864fc4e615b3d7f23fa452095 |
2022-07-ens/contracts/registry/ReverseRegistrar.sol | 300665fd1fce3da7b3c96b8d94ccb0cd1e2bcdc8 |
2022-07-ens/contracts/registry/IReverseRegistrar.sol | b1adb404870c9079bc1f35d6c9ce5da855c04558 |
2022-07-ens/contracts/registry/ENS.sol | 1f3088ed0db49bedd380afe75f67f71ed361e82c |
2022-07-ens/contracts/wrappers/BytesUtil.sol | 9f23ca1fba2f946e83f0cf6ac6afcf84ff04baa0 |
2022-07-ens/contracts/wrappers/ERC1155Fuse.sol | 12bba8a1fca817b5c48bb81898692a31f3c35290 |
2022-07-ens/contracts/wrappers/NameWrapper.sol | ca6a2aa4d68aa373f09140b0649806c01800b845 |
2022-07-ens/contracts/wrappers/INameWrapper.sol | 11f9671414d746780888ee0988866be3a000b5ab |
2022-07-ens/contracts/wrappers/Controllable.sol | 82b84e34556e8bad72209e37ef6c658c3a157cad |
2022-07-ens/contracts/wrappers/IMetadataService.sol | 59b5f4d0cd4a2fe4f3af3e00fd571f9686833283 |
2022-07-ens/contracts/resolvers/Resolver.sol | 1e70307ba676992d47d0dae905c52d42d55dd29b |
None.
diff --git a/contracts/wrapper/NameWrapper.sol b/contracts/wrapper/NameWrapper.sol index b652447..60854f0 100644 --- a/contracts/wrapper/NameWrapper.sol +++ b/contracts/wrapper/NameWrapper.sol @@ -367,7 +367,7 @@ contract NameWrapper is /** * @notice Sets fuses of a name * @param node namehash of the name - * @param fuses fuses to burn (cannot burn PARENT_CANOT_CONTROL) + * @param fuses fuses to burn (cannot burn PARENT_CANNOT_CONTROL) */ function setFuses(bytes32 node, uint32 fuses) @@ -531,7 +531,7 @@ contract NameWrapper is * @param label label of the subdomain as a string * @param newOwner newOwner in the registry * @param resolver resolver contract in the registry - * @param ttl ttl in the regsitry + * @param ttl ttl in the registry * @param fuses initial fuses for the wrapped subdomain * @param expiry expiry date for the domain */
VS Code
2022-07-ens/contracts/wrapper/IMetadataService.sol
2022-07-ens/contracts/registry/ReverseRegistrar.sol
2022-07-ens/contracts/registry/IReverseRegistrar.sol
2022-07-ens/contracts/registry/ENS.sol
2022-07-ens/contracts/ethregistrar/StringUtils.sol
2022-07-ens/contracts/ethregistrar/IETHRegistrarController.sol
2022-07-ens/contracts/ethregistrar/ETHRegistrarController.sol
2022-07-ens/contracts/dnssec-oracle/Owned.sol
2022-07-ens/contracts/dnssec-oracle/digests/Digest.sol
2022-07-ens/contracts/dnssec-oracle/BytesUtils.sol
2022-07-ens/contracts/dnssec-oracle/algorithms/Algorithm.sol
Choose the appropriate license from the list.
VS Code
🌟 Selected for report: 0xKitsune
Also found by: 0x040, 0x1f8b, 0x29A, 0xNazgul, 0xNineDec, 0xsam, 8olidity, Aussie_Battlers, Aymen0909, Bnke0x0, CRYP70, Ch_301, Chom, Deivitto, Dravee, ElKu, Fitraldys, Funen, GimelSec, IllIllI, JC, JohnSmith, Lambda, MiloTruck, Noah3o6, RedOneN, ReyAdmirado, Rohan16, Rolezn, Ruhum, Sm4rty, TomJ, Tomio, Waze, _Adam, __141345__, ajtra, ak1, arcoun, asutorufos, benbaessler, brgltd, bulej93, c3phas, cRat1st0s, cryptonue, delfin454000, durianSausage, fatherOfBlocks, gogo, hake, hyh, joestakey, karanctf, kyteg, lcfr_eth, lucacez, m_Rassska, rajatbeladiya, rbserver, robee, rokinot, sach1r0, sahar, samruna, sashik_eth, seyni, simon135, zuhaibmohd
40.4596 USDC - $40.46
File Name | SHA-1 Hash |
---|---|
2022-07-ens/contracts/dnssec-oracle/BytesUtils.sol | 08b2555ac9985aca02c219f6eda8faf6c9d3e0b2 |
2022-07-ens/contracts/dnssec-oracle/DNSSECImpl.sol | 2d5e0775a0cad79338b40f4217b5568f21578a00 |
2022-07-ens/contracts/dnssec-oracle/RRUtils.sol | 73e566eb8ea0ac6557ba23f566e36ab1fd12b830 |
2022-07-ens/contracts/dnssec-oracle/SHA1.sol | 4449a51d1f1b27374d725749a370dbb2f95608df |
2022-07-ens/contracts/dnssec-oracle/Owned.sol | 9f09ce247e1d8e3f72550c139369cb717127918b |
2022-07-ens/contracts/dnssec-oracle/DNSSEC.sol | fc32b531031113bf965c5170408ab3332d5ec24b |
2022-07-ens/contracts/dnssec-oracle/algorithms/Algorithm.sol | f24be799629d960c085b880c8f9484cfa1a4e4e0 |
2022-07-ens/contracts/dnssec-oracle/digests/Digest.sol | f827dc3a7dafd1ead3b5f2385b7339a38d53e0a1 |
2022-07-ens/contracts/ethregistrar/ETHRegistrarController.sol | 176e5987c06673bee1123b139d11ff73c361f501 |
2022-07-ens/contracts/ethregistrar/IETHRegistrarController.sol | 0429622e73822e12b1d194044647782adf898088 |
2022-07-ens/contracts/ethregistrar/StringUtils.sol | 16a9a0ebaf547a3864fc4e615b3d7f23fa452095 |
2022-07-ens/contracts/registry/ReverseRegistrar.sol | 300665fd1fce3da7b3c96b8d94ccb0cd1e2bcdc8 |
2022-07-ens/contracts/registry/IReverseRegistrar.sol | b1adb404870c9079bc1f35d6c9ce5da855c04558 |
2022-07-ens/contracts/registry/ENS.sol | 1f3088ed0db49bedd380afe75f67f71ed361e82c |
2022-07-ens/contracts/wrappers/BytesUtil.sol | 9f23ca1fba2f946e83f0cf6ac6afcf84ff04baa0 |
2022-07-ens/contracts/wrappers/ERC1155Fuse.sol | 12bba8a1fca817b5c48bb81898692a31f3c35290 |
2022-07-ens/contracts/wrappers/NameWrapper.sol | ca6a2aa4d68aa373f09140b0649806c01800b845 |
2022-07-ens/contracts/wrappers/INameWrapper.sol | 11f9671414d746780888ee0988866be3a000b5ab |
2022-07-ens/contracts/wrappers/Controllable.sol | 82b84e34556e8bad72209e37ef6c658c3a157cad |
2022-07-ens/contracts/wrappers/IMetadataService.sol | 59b5f4d0cd4a2fe4f3af3e00fd571f9686833283 |
2022-07-ens/contracts/resolvers/Resolver.sol | 1e70307ba676992d47d0dae905c52d42d55dd29b |
Pre-increments cost less gas compared to post-increments.
for(uint i = 0; i < len; i++) {
for(uint256 idx = off; idx < off + len; idx++) {
for(uint i = 0; i < input.length; i++) {
for (uint256 i = 0; i < data.length; i++) {
for(len = 0; i < bytelength; len++) {
Change i++
to ++i
.
VS Code
In Solidity 0.8+, there’s a default overflow check on unsigned integers.
for(uint i = 0; i < len; i++) {
for(uint256 idx = off; idx < off + len; idx++) {
for(uint i = 0; i < input.length; i++) {
for (uint256 i = 0; i < data.length; i++) {
for(len = 0; i < bytelength; len++) {
for (uint256 i = 0; i < accounts.length; ++i) {
for (uint256 i = 0; i < ids.length; ++i) {
One example is the code would go from:
for (uint i = 0; i < _prices.length; i++) { priceAverageCumulative += _prices[i]; }
to:
for (uint i = 0; i < _prices.length;) { priceAverageCumulative += _prices[i]; unchecked { i++; } }
VS Code
If a variable is not set/initialized, it is assumed to have the default value (0
, false
, 0x0
etc depending on the data type). If you explicitly initialize it with its default value, you are just wasting gas.
for (uint idx = 0; idx < shortest; idx += 32) {
for(uint i = 0; i < len; i++) {
for(uint256 idx = off; idx < off + len; idx++) {
for(uint i = 0; i < input.length; i++) {
for (uint256 i = 0; i < accounts.length; ++i) {
for (uint256 i = 0; i < ids.length; ++i) {
for(uint i = 0; i < data.length + 31; i += 32) {
Do not initialize variables with default values.
VS Code
variable1 += (-=) variable2
costs more gas than variable1 = variable1 +(-) variable2
selfptr += 32;
otherptr += 32;
for (; len >= 32; len -= 32) {
dest += 32;
src += 32;
bitlen -= 2;
bitlen -= 4;
bitlen -= 1;
bitlen -= 3;
idx += labelLen + 1;
offset += labelLen + 1;
count += 1;
off += 2;
off += 2;
off += 4;
off += 2;
counts -= 1;
for(uint i = 0; i < data.length + 31; i += 32) {
ac1 += (word & 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00) >> 8;
ac2 += (word & 0x00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF);
ac1 += (ac1 >> 16) & 0xFFFF;
i += 1;
i += 2;
i += 3;
i += 4;
i += 5;
i += 6;
Use variable1 = variable1 +(-) variable2
instead.
VS Code
If a variable is not set/initialized, it is assumed to have the default value (0
, false
, 0x0
etc depending on the data type). If you explicitly initialize it with its default value, you are just wasting gas.
uint ret = 0;
uint count = 0;
uint constant RRSIG_TYPE = 0;
uint constant DNSKEY_FLAGS = 0;
uint constant DS_KEY_TAG = 0;
uint i = 0;
Do not initialize variables with default values.
VS Code