{ 跳至内容 }

Solidity 0.7.4 版本发布公告

由 Solidity 团队于 2020 年 10 月 19 日发布

版本

Solidity v0.7.4 修复了中度严重性的存储损坏漏洞。要了解更多关于该漏洞的信息,并检查您的合约是否容易受到攻击,请阅读本文档文章,其中包含有关该漏洞的更多详细信息。该漏洞是由 Certora 开发团队的 John Toman 报告的。

此外,v0.7.4 添加了文件级别的常量。

重要错误修复

  • 代码生成器:修复从内存或 calldata 复制空字节数组到存储时的数据损坏漏洞。了解更多信息在此

值得注意的新功能

文件级别的常量

为了使文件级别的函数更有用,Solidity 现在也允许在文件级别定义常量变量

uint constant EXPONENT = 10;
uint constant MULTIPLIER = 2**EXPONENT;

struct Fixed { uint value; }

function toFixed(uint x) pure returns (Fixed memory ret) {
    ret.value = x * MULTIPLIER;
}

此类常量必须遵循与合约级别常量相同的规则。这意味着,例如,该值必须在编译时确定,并且只支持某些类型。

您可以像导入其他标识符一样从其他源文件导入常量

import {MyConstant, MyStruct} from "myHelper.sol";

完整变更日志

语言功能

  • 可以在文件级别定义常量。

编译器功能

  • 命令行界面:新选项 --model-checker-engine 允许选择特定的 SMTChecker 引擎。选项包括 all(默认)、bmcchcnone
  • 控制流图:针对所有代码路径中未为未命名返回值参数赋值的非空函数打印警告。
  • SMTChecker:在 CHC 引擎中支持 keccak256sha256ripemd160ecrecover
  • SMTChecker:支持内联数组。
  • SMTChecker:在 CHC 引擎中支持变量 blockmsgtx
  • 标准 JSON:新选项 modelCheckerSettings.engine 允许选择特定的 SMTChecker 引擎。选项包括 all(默认)、bmcchcnone

错误修复

  • 代码生成器:修复来自当前模块的 ABIEncoderV2 pragma 影响继承函数和应用修饰符的问题。
  • 代码生成器:修复通过模块名称引用成员但未使用引用时发生的内部编译器错误。
  • 代码生成器:修复从库函数返回包含映射的结构体时的内部错误。
  • 代码生成器:在 getter 中使用 revert 而不是无效操作码来处理数组索引越界访问。
  • 合约级别检查器:在 ABIEncoderV1 合约中添加了对继承具有 ABIEncoderV2 返回类型的函数的缺失检查。
  • 名称解析器:修复了对后面的声明的阴影/相同名称的警告。
  • 类型检查器:允许将合约类型的数组用作类型表达式,以及用作 abi.decode 的参数。
  • 类型检查器:禁止将库名称无效地用作类型名称。
  • 类型检查器:修复由库中的嵌套映射的存储参数引起的内部编译器错误。

非常感谢所有帮助实现此版本发布的贡献者!

在此下载 Solidity 的新版本此处

上一篇文章

下一篇文章

参与进来

GitHub

Twitter

Mastodon

Matrix

了解更多

博客文档用例贡献关于论坛

2024Solidity 团队

安全策略

行为准则