crytic/slither

Improve 1346 to make it more efficient

Open

#1,570 opened on Jan 9, 2023

View on GitHub
 (5 comments) (0 reactions) (0 assignees)Python (886 forks)batch import
enhancementhelp wanted

Repository metrics

Stars
 (4,769 stars)
PR merge metrics
 (Avg merge 54d 9h) (2 merged PRs in 30d)

Description

https://github.com/crytic/slither/pull/1346 is a nice addition, which gives us fundamental features to do structure packing optimisations.

However it has a couple of drawback. For example packing storage variables might lead to more costly execution because of the additional opcode cost.

We could improve the detector to add a couple of heuristics. One example that comes to mind is to use https://eips.ethereum.org/EIPS/eip-2929#sstore-changes, and to pack together variables that are read within the same transaction.

We could make it a tool instead of a detector, and propose different scenario as a result, ie:

  • To optimize the run of contract.function1 pack together ..
  • To optimize the run of contract.function2 pack together ..

Having a tool would allow us additional fine tuning and flags.

Contributor guide