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 (4,769 stars) (886 forks)batch import
enhancementhelp wanted

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