crytic/slither

Improve 1346 to make it more efficient

Open

#1.570 aberto em 9 de jan. de 2023

Ver no GitHub
 (5 comments) (0 reactions) (0 assignees)Python (886 forks)batch import
enhancementhelp wanted

Métricas do repositório

Stars
 (4.769 stars)
Métricas de merge de PR
 (Mesclagem média 54d 9h) (2 fundiu PRs em 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.

Guia do colaborador