aave / incentives-controller

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Clarity and logic optimizations in `DistributionManager`

LHerskind opened this issue · comments

The current DistributionManager have some low-hanging fruits in terms of clarity and logic optimizations.

Storage usage:

  • The current AssetData uses only 104 bits for the index with the word having 8 bits unused, as we are normally using 128 bits for these values, I suggest that we use the extra 8 bits to move closer to the normal index range.

Clarity:

  • The users mapping holds the indexes for each user, and it would be more clear if the naming showed this, suggesting that we rename it to userIndexes.

Logic / Gas optimizations:

  • emissionPerSecond is fetched at every call to _updateAssetStateInternal but is not used when block.timestamp == lastUpdateTimestamp, the fetching could be moved below this point to remove unnecessary reads.
  • In _updateAssetStateInternal the value assetConfig.lastUpdateTimestamp is updated in both branches of the if-else, so it may just be moved out in full, this would also allow us to remove the else case entirely.

Some of the suggestions are addressed in the V3 of the incentives.