Platform: Code4rena
Start Date: 02/06/2023
Pot Size: $100,000 USDC
Total HM: 15
Participants: 75
Period: 7 days
Judge: Picodes
Total Solo HM: 5
Id: 249
League: ETH
Rank: 61/75
Findings: 1
Award: $21.62
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: JCN
Also found by: 0x70C9, 0xSmartContract, 0xWaitress, 0xhacksmithh, DavidGiladi, K42, LaScaloneta, Rageur, Raihan, SAAJ, SAQ, SM3_SS, Sathish9098, Tomio, bigtone, c3phas, ernestognw, etherhood, koxuan, matrix_0wl, mgf15, naman1778, niser93, petrichor, piyushshukla, sebghatullah, shamsulhaq123
21.6219 USDC - $21.62
Detect optimal variable order in struct definitions to decrease the number of slots used.
Optimization opportunity in struct File: contracts/interfaces/INodeRegistry.sol#6-15
<br> Validator
original variable order (count: 8 slots)
optimized variable order (count: 7 slots)
https://github.com/code-423n4/2023-06-stader/blob/main/contracts/interfaces/INodeRegistry.sol#L6-L15
</details>This detector flags functions that use revert()/require() strings, which are less gas efficient than custom errors. Custom errors, available from Solidity version 0.8.4, save approximately 50 gas each time they're used by avoiding the need to allocate and store the revert string.
<details> <summary> There are 1 instances of this issue: </summary>File: contracts/VaultProxy.sol#47
<br> revert(string(data)) use custom error insteadhttps://github.com/code-423n4/2023-06-stader/blob/main/contracts/VaultProxy.sol#L47
</details>This detector flags contracts that inefficiently use uint
or int
of sizes smaller than 32 bytes. The EVM operates on 32 bytes at a time, thus using elements smaller than this may cause your contract's gas usage to be higher. Refer to the Solidity documentation for more details: https://docs.soliditylang.org/en/v0.8.11/internals/layout_in_storage.html.
File: contracts/PermissionlessNodeRegistry.sol#30
<br> PermissionlessNodeRegistry.POOL_ID POOL_ID
use 256 bites instead of 8https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PermissionlessNodeRegistry.sol#L30
File: contracts/PermissionedNodeRegistry.sol#31
<br> PermissionedNodeRegistry.POOL_ID POOL_ID
use 256 bites instead of 8https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PermissionedNodeRegistry.sol#L31
File: contracts/VaultProxy.sol#12
<br> VaultProxy.poolId poolId
use 256 bites instead of 8https://github.com/code-423n4/2023-06-stader/blob/main/contracts/VaultProxy.sol#L12
File: contracts/PermissionedNodeRegistry.sol#33
<br> PermissionedNodeRegistry.maxNonTerminalKeyPerOperator maxNonTerminalKeyPerOperator
use 256 bites instead of 64https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PermissionedNodeRegistry.sol#L33
File: contracts/PoolUtils.sol#13
<br> PoolUtils.PUBKEY_LENGTH PUBKEY_LENGTH
use 256 bites instead of 64https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PoolUtils.sol#L13
File: contracts/PermissionlessNodeRegistry.sol#32
<br> PermissionlessNodeRegistry.maxNonTerminalKeyPerOperator maxNonTerminalKeyPerOperator
use 256 bites instead of 64https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PermissionlessNodeRegistry.sol#L32
File: contracts/PermissionlessNodeRegistry.sol#31
<br> PermissionlessNodeRegistry.inputKeyCountLimit inputKeyCountLimit
use 256 bites instead of 16https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PermissionlessNodeRegistry.sol#L31
File: contracts/PoolUtils.sol#14
<br> PoolUtils.SIGNATURE_LENGTH SIGNATURE_LENGTH
use 256 bites instead of 64https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PoolUtils.sol#L14
File: contracts/PoolSelector.sol#18
<br> PoolSelector.poolAllocationMaxSize poolAllocationMaxSize
use 256 bites instead of 16https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PoolSelector.sol#L18
File: contracts/PermissionedNodeRegistry.sol#32
<br> PermissionedNodeRegistry.inputKeyCountLimit inputKeyCountLimit
use 256 bites instead of 16https://github.com/code-423n4/2023-06-stader/blob/main/contracts/PermissionedNodeRegistry.sol#L32
</details>#0 - c4-judge
2023-06-14T05:41:40Z
Picodes marked the issue as grade-b