警告:实验性功能已打开。不要在实时部署中使用实验性功能

WARNING: Experimental features are turned on. Do not use experimental features on live deployments

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;
pragma experimental ABIEncoderV2;

我的 .sol 文件中有一个警告。我不知道这个警告是什么意思。你能帮我吗?

这一行中的警告 --> pragma experimental ABIEncoderV2;

一般来说,实验性功能可能不稳定并会产生意外和未记录的错误 - 您可能不希望在生产环境中出现这些错误。因此警告。


这个特定的 ABIEncoderV2 是在 Solidity 版本 0.5 中引入的,支持使用嵌套数组和映射。在这个 Solidity 版本中,编码器的稳定性被标记为 experimental(即可能不稳定)。

文档:https://docs.soliditylang.org/en/v0.5.17/layout-of-source-files.html#abiencoderv2

请注意,这些文档适用于已弃用的 Solidity 版本 0.5。

在当前的 Solidity 0.8 版本中,ABIEncoderV2 编码器是稳定的,不再是实验性的。因此,如果您使用最新的编译器版本编译项目,您可以随意删除 pragma experimental 语句,这也会删除警告。