morpho-org / morpho-utils

Repository gathering useful libraries and contracts.
GNU Affero General Public License v3.0
64 stars 1 forks source link

Factorize `mul`, `div`, `weightedAvg` to minimize bytecode size #77

Open Rubilmax opened 1 year ago

Rubilmax commented 1 year ago

https://github.com/morpho-dao/morpho-utils/pull/66#discussion_r1054400374

MathisGD commented 1 year ago

In favor of this.

Related to #57

MerlinEgalite commented 1 year ago

As long as it improves readability while preserving gas efficiency I'm ok with that

MathisGD commented 1 year ago

By the way, I don't think that it would change the bytecode size, but only the Solidity code size.

Rubilmax commented 1 year ago

I won't spend much time for now on this, given that I don't believe the compiler will be smart enough to compile to something as gas-efficient as the current implementation (because we need to abstract a scale input to abstract multiplications, divisions, which is currently a library constant and would be input as a function argument on which operations are performed - operations that I don't believe the compiler will recognize as constant operations)

I believe it requires https://github.com/ethereum/solidity/issues/891 to be addressed first

MathisGD commented 1 year ago

I didn't know that it wasn't possible to import a lib in a lib. So we are stuck with this...

MerlinEgalite commented 1 year ago

Should we close @Rubilmax ?

MathisGD commented 1 year ago

I would like to see morpho-utils completely revamped to do general fixed point maths instead of Aave/Compound specific maths. In this case this could be implemented.

Edit: with this naming 👌

Rubilmax commented 1 year ago

This is just a random open-source idea that I think would benefit someone in the universe, but is blocked by a Solidity technical limit Given it's an OS repo, we don't need to have everything sorted out here, we can just let ideas free and see if they are picked up, supported by others