The solidity 0.8.0 patch notes state:

ABI coder v2 is activated by default.

You can choose to use the old behaviour using pragma abicoder v1;. The pragma pragma experimental ABIEncoderV2; is still valid, but it is deprecated and has no effect. If you want to be explicit, please use pragma abicoder v2; instead.

I believe this means newer contracts will use ABI coder v2 by default. Are these new contracts compatible with existing web UI code that uses web3.js, and was only written with ABI coder v1 in mind?

  • 1
    I believe that V1 is a subset of V2, hence the answer to your question is yes. For example, V2 allows you to pass structs as input to external/public functions and receive as structs as output from external/public functions. That obviously shouldn't impact the compatibility of a functional (i.e., working) UI. Commented Dec 22, 2020 at 14:09


Your Answer

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