I want to use delegatecall to make my contracts upgradeable.

Is it true that variable layout may break if I change the solc version and therefore I should use the same Solidity version for all future versions of my contract?

1 Answer 1


From Solidity the documentation:

The layout of state variables in storage is considered to be part of the external interface of Solidity due to the fact that storage pointers can be passed to libraries. This means that any change to the rules outlined in this section is considered a breaking change of the language and due to its critical nature should be considered very carefully before being executed.

Since that kind of changes might break a lot of already deployed contracts my guess is that they will not change the layout unless there's a very very good reason to do so.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.