-
Notifications
You must be signed in to change notification settings - Fork 1
[NLA-01C] Inefficient mapping Lookups #12
Copy link
Copy link
Open
Description
NLA-01C: Inefficient mapping Lookups
| Type | Severity | Location |
|---|---|---|
| Gas Optimization | ![]() |
NonblockingLzAppUpgradeable.sol:L172, L176 |
Description:
The linked statements perform key-based lookup operations on mapping declarations from storage multiple times for the same key redundantly.
Example:
bytes32 payloadHash = $.failedMessages[srcChainId][srcAddress][nonce];
require(payloadHash != bytes32(0), "NonblockingLzApp: no stored message");
require(keccak256(payload) == payloadHash, "NonblockingLzApp: invalid payload");
// clear the stored message
$.failedMessages[srcChainId][srcAddress][nonce] = bytes32(0);Recommendation:
As the lookups internally perform an expensive keccak256 operation, we advise the lookups to be cached wherever possible to a single local declaration that either holds the value of the mapping in case of primitive types or holds a storage pointer to the struct contained.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
