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.
The current
DistributionManagerhave some low-hanging fruits in terms of clarity and logic optimizations.Storage usage:
AssetDatauses only104bits for theindexwith the word having8bits unused, as we are normally using128bits for these values, I suggest that we use the extra8bits to move closer to the normal index range.Clarity:
usersmapping holds the indexes for each user, and it would be more clear if the naming showed this, suggesting that we rename it touserIndexes.Logic / Gas optimizations:
emissionPerSecondis fetched at every call to_updateAssetStateInternalbut is not used whenblock.timestamp == lastUpdateTimestamp, the fetching could be moved below this point to remove unnecessary reads._updateAssetStateInternalthe valueassetConfig.lastUpdateTimestampis 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.