I have created a set of contracts that will shortly be undergoing an audit. It's a DeFi platform that is intended to hold real value.

The project began as a fork of a fairly old project, that uses Solidity version 0.5.13. I am still using this version. I am also using various older OpenZeppelin libraries (ERC721, ownable etc) that are compatible with this version.

Is it advisable to update my contracts, and the libraries, to use a more recent version of Solidity? If so, does it make sense to use the most recent, or perhaps a slightly less recent version- perhaps the late 0.6.x?

Of note: my code requires passing an array of strings as an argument, thus the current version of the contracts has pragma experimental enabled. Do more recent versions of Solidity allow for arrays of strings out of the box without needing to enable pragma experimental?

1 Answer 1


It is not always the case that the latest version is safest. In my opinion, you should not use the latest version as to give it time to be used, tested, and potentially exploited.

It is valuable to read the changelog of each version for any bug fixes. For example:

  • Solidity v0.5.16 fixed a bug that was present in all previous versions. If you are using version 0.5.x, it would be worth updating to 0.5.16.
  • Solidity v0.5.15 was a small upgrade to fix a bug that was introduced in v0.5.14. This is an example of a time where the latest version is not always the safest.

Do more recent versions of solidity allow for arrays of strings out of the box without needing to enable pragma experimental?

Yes. You can see here that ABIEncoderV2 was taken out of beta in version 0.6.0.

  • 1
    This is a great answer, thank you :)
    – mcplums
    Nov 10, 2020 at 17:12

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.