{ 跳至内容 }

{Solidity:​log}

全部发布帖子

Solidity 0.8.27 发布公告

发布者:Solidity 团队 于 2024年9月4日

发布

我们很高兴地宣布 Solidity 编译器 v0.8.27 发布。这个最新版本的编译器为 legacy pipeline 中的 require 带来了自定义错误的支持,优化器改进,例如优化后的 IR 缓存,这将通过 IR 加速编译,以及一些错误修复等等!主要功能 legacy pipeline 中 require 带自定义错误的支持 Solidity 中的自定义错误提供了一种方便且节省 gas 的方法来向用户解释操作失败的原因。支持在 require 函数中使用错误……

阅读更多

Solidity 0.8.26 发布公告

发布者:Solidity 团队 于 2024年5月21日

发布

我们很高兴地宣布 Solidity 编译器 v0.8.26 发布。这个最新版本的编译器为 require 带来了自定义错误的支持,改进了默认的 Yul 优化器序列,这将通过 IR 加速编译,以及一些错误修复等等!主要功能 require 中的自定义错误支持 Solidity 中的自定义错误提供了一种方便且节省 gas 的方法来向用户解释操作失败的原因。Solidity 0.8.26 引入了一项备受期待的功能,该功能允许在 require 函数中使用错误。require 函数……

阅读更多

Solidity 0.8.25 发布公告

发布者:Solidity 团队 于 2024年3月14日

发布

推出最新版本的 Solidity 编译器:v0.8.25。这是继 2024 年 3 月 13 日协调世界时 13:55 在以太坊主网上进行的 Dencun 硬分叉之后的次要版本发布。Dencun 升级 Dencun 升级结合了对以太坊共识层和执行层的更改。完整的协议更改列表可以在 EIP-7569 中找到。随着 Dencun 现在在主网上上线,我们相应地将 cancun 设为编译器将为其发出代码的默认 EVM 版本。代码生成器中的 MCOPY 上一个版本使 mcopy() 内置……

阅读更多

Solidity 0.8.24 发布公告

发布者:Solidity 团队 于 2024年1月26日

发布

我们很高兴地宣布 Solidity 编译器 v0.8.24 发布。这个最新版本的编译器带来了对“Cancun”网络升级的准备,包括对瞬态存储(EIP-1153)、分片 Blob 事务(EIP-4844)等的支持。macOS 的发布二进制文件现在也与 Apple 硅芯片兼容。Cancun 网络升级 “Cancun”网络升级以操作码和预编译的形式提供新功能,需要显式使用这些功能才能获得任何好处,但也引入了对现有……

阅读更多

Solidity 0.8.23 发布公告

发布者:Solidity 团队 于 2023年11月8日

发布

今天,我们宣布 Solidity 编译器 v0.8.23 发布。这个最新版本的编译器旨在成为一个纯粹的错误修复版本,其中包含对一个重要低严重性错误的修复。根据我们的调查,我们预计不会出现将该错误用作漏洞或攻击载体的现实案例,因此,我们将其整体严重性评估为低。此版本还对优化器设置进行了小的更改,使其更直观。从 v0.8.21 开始,……

阅读更多

Solidity 0.8.22 发布公告

发布者:Solidity 团队 于 2023年10月25日

发布

我们很高兴地宣布 Solidity 编译器 v0.8.22 发布。这个最新版本的编译器包含一系列语言和编译器改进,例如文件级事件定义、未经检查的循环增量的优化、支持导入 EVM 汇编 JSON 等。重要说明 此版本弃用了对 Constantinople 之前版本的 EVM 的支持,这些版本越来越难以维护。这些旧版本在以太坊主网和测试网上早已过时,我们怀疑它们不再……

阅读更多

Solidity 0.8.21 发布公告

发布者:Solidity 团队 于 2023年7月19日

发布

我们很高兴地宣布 Solidity 编译器的最新版本 Solidity v0.8.21 发布。值得注意的新功能 通过 IR 始终启用堆栈到内存移动器 此版本解决了基于 IR 的代码生成管道产生的未优化代码过度容易出现“堆栈过深”错误的问题。这旨在帮助调试器等工具,这些工具在处理优化代码时会失去很大一部分有效性。遗留管道通常可以避免在非优化模式下耗尽可达堆栈槽,但这需要……

阅读更多

Solidity 0.8.20 发布公告

发布者:Solidity 团队 于 2023年5月10日

发布

我们很高兴地宣布 Solidity 编译器的最新版本 Solidity v0.8.20 发布。此最新版本包括通过 IR 管道的一系列改进,改进了合同 ABI 中公开的事件列表,最重要的是,支持上海硬分叉!重要说明 此编译器将默认目标 EVM 版本切换到上海,这意味着生成的字节码将包含 PUSH0 操作码。如果您打算部署到……

阅读更多

Solidity 0.8.19 发布公告

发布者:Solidity 团队 于 2023年2月22日

发布

我们很高兴地宣布 Solidity 编译器的最新版本 Solidity v0.8.19 发布。此最新版本包含一系列改进,并且还引入了对在用户定义的值类型 (UDVT) 上定义运算符的支持!您可以在我们的功能深度解读博文中详细了解它。值得注意的新功能 这些是我们希望在此版本中重点介绍的功能。用户定义的值类型的运算符 使用运算符的能力旨在使 UDVT 更加自然地使用,就像……

阅读更多

Solidity 0.8.18 发布公告

发布者:Solidity 团队 于 2023年2月1日

发布

推出最新版本的 Solidity 编译器!我们很高兴地宣布 Solidity 编译器的最新版本 Solidity v0.8.18 发布。此最新版本包含一系列改进,并且还引入了对巴黎升级的支持!值得注意的新功能 这些是我们希望在此版本中重点介绍的功能。禁用 CBOR 元数据 一个新的命令行标志(--no-cbor-metadata)和标准 JSON 选项(settings.metadata.appendCBOR: false)以防止编译器在字节码末尾追加 CBOR 元数据部分。到目前为止,它只是……

阅读更多

Solidity 0.8.17 发布公告

发布者:Solidity 团队 于 2022年9月8日

发布

Solidity v0.8.17 修复了一个重要错误,使乘法的溢出检查更高效,并添加了一个 LSP 功能以始终分析项目中的所有文件。重要错误 在条件提前终止时删除存储写入错误 该错误可能导致存储写入被错误地视为冗余并被优化器删除。当存在可能使用 return() 或 stop() 操作码有条件地终止外部 EVM 调用的汇编函数时,会出现此问题。请参阅关于在条件提前终止时删除存储写入错误的安全警报帖子,了解……

阅读更多

Solidity 0.8.16 发布公告

发布者:Solidity 团队 于 2022年8月8日

发布

Solidity v0.8.16 修复了一个重要错误。当最后一个组件是静态大小的 uint 或 bytes32 calldata 数组时,该错误可能导致动态元组组件的小部分在 ABI 重新编码期间意外清零。有关更多信息,请参阅 Calldata 元组 ABI 重新编码中的头部溢出错误。除此之外,还有一些小的错误修复和改进,例如对加法和减法的溢出检查效率更高。完整变更日志 重要错误修复:代码生成:修复影响由元组表示的 calldata 值的 ABI 编码的数据损坏:任何嵌套级别的结构;参数……

阅读更多

Solidity 0.8.15 发布公告

发布者:Solidity 团队 于 2022年6月15日

发布

Solidity v0.8.15 修复了两个重要错误,改进了内联启发式算法,并为错误和事件添加了 .selector 成员。重要错误 第一个是优化器错误,如果此类操作的结果未从同一汇编块中读回,则可能导致内联汇编中的内存写入操作被删除。仅当使用默认的遗留编译器管道(通过 IR 的新编译管道不受影响)时才会触发此错误,并且仅在从不……

阅读更多

Solidity 0.8.14 发布公告

发布者:Solidity 团队 于 2022年5月18日

发布

Solidity v0.8.14 修复了两个重要错误。第一个与直接从 calldata 编码嵌套数组的 ABI 相关。您可以在博文中找到更多信息。第二个错误在某些继承结构中触发,并可能导致内存指针被解释为 calldata 指针或反之亦然。我们还为此错误专门发布了一篇博文。除此之外,还有一些小的错误修复和改进。请注意:不幸的是,此版本的 npm 包装包已损坏。使用新的 soljson.js……

阅读更多

Solidity 0.8.13 发布公告

发布者:Solidity 团队 于 2022年3月16日

发布

Solidity v0.8.13 修复了与 abi.encodeCall 相关的重要错误,扩展了使用 for 指令,并为语言服务器实现了“转到定义”。此外,通过新的 Yul IR 管道进行编译现在被认为已准备好用于生产环境。重要错误 当 Solidity 0.8.11 中引入 abi.encodeCall 时,十六进制文字(0x1234)和字符串文字(“abcd”)处理不当。请阅读安全警报中的更多信息。值得注意的新功能 Yul IR 管道已准备好用于生产环境 我们多年来一直在开发 Yul 作为 Solidity 的中间语言。Yul 在……

阅读更多

Solidity 0.8.12 发布公告

发布者:Solidity 团队 于 2022年2月16日

发布

Solidity v0.8.12 改进了 JavaScript/Wasm 二进制文件并修复了几个错误。值得注意的新功能 Emscripten 构建/solc-js 我们能够将 JavaScript/WebAssembly 二进制文件的大小从 27 MB 减少到略高于 8 MB。最初二进制文件如此之大的原因是,我们包含了 SMT 求解器 Z3。尺寸减小是通过使用 LZ4 压缩二进制文件并在加载时解压缩它来实现的,这对用户应该是完全透明的。我们最初担心……

阅读更多

Solidity 0.8.11 发布公告

发布者:Solidity 团队 于 2021年12月20日

发布

Solidity v0.8.11 添加了语言服务器的第一个实现,允许更安全地执行 ABI 编码并修复了几个错误。值得注意的新功能 语言服务器预览 语言服务器协议是一项倡议,它允许 IDE 和编译器,或者更一般地说,语言诊断工具之间更好地互操作。其思想是,与其为 IDE 和语言的每种组合编写不同的插件,不如让每个 IDE 实现一个客户端,每个编译器实现一个服务器,并且由于它们都使用相同的协议,因此您可以将所有……

阅读更多

Solidity 0.8.10 发布公告

发布者:Solidity 团队 于 2021年11月9日

发布

Solidity v0.8.10 现在可以通过 SMTChecker 报告合同不变量和重入属性。它还包含一些关于外部函数调用的新优化,并为纯 Yul 模式启用了新的 EVM 代码生成器。值得注意的新功能 通过 Yul IR 进行编译的新 EVM 代码转换 在此版本中,我们引入了一个新的 EVM 代码生成后端,该后端用于通过 Yul(启用优化器)的 Solidity 实验性编译管道,以及用于优化 Yul 输入的编译。虽然……

阅读更多

Solidity 0.8.9 发布公告

发布者:Solidity 团队 于 2021年9月29日

发布

Solidity v0.8.9 是一个纯粹的错误修复版本,修复了两个重要但严重程度较低的错误。第一个错误与小于 256 位的有符号整数类型的不可变变量相关。该错误导致这些值的符号扩展(清理)并不总是正确执行。它是在 Solidity 0.6.5 中引入的。在相应的安全警报中阅读更多信息。第二个错误是在 Solidity v0.8.8(两天前发布)中引入的用户定义值类型。基础类型较短的用户定义类型……

阅读更多

Solidity 0.8.8 发布公告

发布者:Solidity 团队 于 2021年9月27日

发布

Solidity v0.8.8 引入了用户定义的值类型作为一项主要功能。接口函数的 override 关键字现在是可选的,不可变变量可以在构造函数中读取,支持检索枚举的最小值和最大值,可以指定包含目录,并且命令行界面得到了清理。此外,我们修复了一些错误,并且 SMTChecker 提高了语言覆盖率。值得注意的新功能 用户定义的值类型 用户定义的值类型允许在基本值类型上创建零成本抽象,并且还...

阅读更多

Solidity 0.8.7 版本发布公告

Solidity 团队发布于 2021年8月11日

发布

Solidity v0.8.7 引入了对伦敦升级的支持,包括对 Yul 到 EVM 代码转换、SMTChecker 和一些错误修复的各种改进。请注意:不幸的是,此版本的 npm 包已损坏。直接拉取 solc-js 存储库将起作用。对伦敦升级的支持 Solidity 添加了对 BASEFEE 操作码(EIP-3198 和 EIP-1559)的支持,该操作码会公开区块的基本费用。可以通过全局 block.basefee 或在内联汇编或 Yul 中使用 basefee() 来访问它。以下合约说明了一个示例:contract Basefee { function...

阅读更多

Solidity 0.8.6 版本发布公告

Solidity 团队发布于 2021年6月22日

发布

Solidity v0.8.6 修复了一些非关键但令人烦恼的错误,特别是关于实际上可到达的不可到达代码的警告。错误修复 不可到达警告 在 Solidity 0.8.5 中,我们发布了一项新功能,用于检测代码是否不可到达,因为调用的函数在代码执行之前总是回滚。此检测在与嵌套调用内部库函数相关的连接中包含一个错误,其中函数的“回滚行为”在确定其调用的函数不总是回滚后没有得到正确更新。由于该错误相当...

阅读更多

Solidity 0.8.5 版本发布公告

Solidity 团队发布于 2021年6月10日

发布

Solidity v0.8.5 允许从 bytes 转换为 bytesNN 值,添加了 verbatim 内置函数以在 Yul 中注入任意字节码,并修复了几个较小的错误。值得注意的新功能 字节转换 在此处找到完整的特性文档。此版本引入了将 bytes 和 bytes 切片转换为固定字节类型 bytes1 / ... / bytes32 的功能。虽然固定长度字节类型之间的转换一直都是可能的,但现在也可以将动态大小的字节类型转换为固定长度的字节类型。如果字节数组更长...

阅读更多

Solidity 0.8.4 版本发布公告

Solidity 团队发布于 2021年4月21日

发布

Solidity v0.8.4 添加了自定义结构化错误、bytes.concat(...),允许更灵活地配置 SMT 检查器,并修复了 Solidity ABI 解码器 v2 中的一个错误。重要错误修复:2021 年 4 月 5 日,Certora 开发团队的 John Toman 报告了 Solidity ABI 解码器 v2 中的一个错误。对于二维数组和内存中特殊构造的数据,abi.decode 的结果可能取决于内存中其他位置的数据。调用数据解码不受影响。该错误存在于所有先前版本的...

阅读更多

Solidity 0.8.3 版本发布公告

Solidity 团队发布于 2021年3月23日

发布

Solidity v0.8.3 修复了存在于所有先前 Solidity 版本中的 Solidity 优化器 Keccak 缓存错误,此外,还包含对优化器的两项改进,这些改进在将覆盖完整存储槽的结构写入存储时可以提供巨大的 gas 优势。重要错误修复 Solidity 优化器 Keccak 缓存错误 2021 年 3 月 20 日,通过差异模糊测试发现了 Solidity 的字节码优化器中的一个错误。此版本修复了该错误。该错误存在于所有先前版本的...

阅读更多

Solidity 0.8.2 版本发布公告

Solidity 团队发布于 2021年3月2日

发布

Solidity v0.8.2 添加了一个优化器阶段,可以内联少量代码以节省 gas,并提供了更多方法来处理代码文档,方法是导出内联注释并允许自定义 natspec 标记。值得注意的新功能 内联器 此版本向 Solidity 的低级优化器添加了一个简单的内联器。它可以内联不包含控制流分支或具有副作用的操作码的短函数。如果您想了解有关内联器的更多信息,请阅读这篇文章。自定义 Natspec 和导出的文档 现在可以使用文档...

阅读更多

Solidity 0.8.1 版本发布公告

Solidity 团队发布于 2021年1月27日

发布

Solidity v0.8.1 为 SMTChecker 引入了许多新功能(见下文),将用于构建 soljson.js 的 emscripten 版本更新到 2.0.12,允许捕获 panic 错误并添加其他小的改进。值得注意的新功能 SMTChecker 反例和外部函数的合成 SMTChecker 已经报告事务跟踪作为失败验证目标的反例,但 0.8.1 添加了内部调用、msg.value 和以重入调用形式外部调用的合成未知代码到反例中。最近的一篇博文更详细地介绍了该主题。如何选择 SMTChecker 目标 在 0.8.1 之前,SMTChecker...

阅读更多

Solidity 0.8.0 版本发布公告

Solidity 团队发布于 2020年12月16日

发布

Solidity 0.8.0 是 Solidity 编译器和语言的一个重大版本。此版本的某些新功能已在 0.8.x 预览版本发布文章中详细阐述。请将预览版本二进制文件视为已取代,请勿再使用它。值得注意的新功能和更改 与往常一样,此重大版本不包含许多功能,而是需要在语法或语义上进行向后不兼容调整的更改。有关详细说明,请参阅文档。将影响大多数用户的更改是...

阅读更多

Solidity 0.7.6 版本发布公告

Solidity 团队发布于 2020年12月16日

发布

Solidity v0.7.6 增加了对 calldata 类型的更好支持。此外,回退函数现在可以具有参数并显式返回数据。值得注意的新功能 检测溢出的 Unicode 方向标记 Solidity Underhanded 竞赛的获奖作品巧妙地结合了 Unicode 方向标记来欺骗读者关于时间锁定升级机制的语义。从 Solidity 0.7.6 开始,解析器将拒绝注释和 Unicode 字符串,其中文本方向在注释或字符串结束之前未正确重置。对...

阅读更多

Solidity 0.7.5 版本发布公告

Solidity 团队发布于 2020年11月18日

发布

Solidity v0.7.5 添加了通过 pragma abicoder v1 和 pragma abicoder v2 选择 ABI 编码器以准备使 ABI 编码器 v2 成为 0.8.0 的默认值的功能,并引入了 --experimental-via-ir,它通过新的实验性基于 Yul 的编译器管道进行编译。完整更改日志 语言功能:能够使用 pragma abicoder v1 和 pragma abicoder v2 选择 abi 编码器。内联汇编:对动态数组类型的 calldata 变量使用 .offset 和 .length 来访问其 calldata 偏移量和长度(元素数)。两者都...

阅读更多

Solidity 0.8.x 预览版本

Solidity 团队发布于 2020年10月28日

发布

随着 Solidity 0.8.x 系列即将到来,我们想深入了解即将推出的重大更改。我们希望为每个人提供一个预览版本二进制文件以供试用,以便您可以提供反馈。0.8.x 的主要更改是默认情况下切换到已检查的算术运算。这意味着 x + y 将在溢出时引发异常。换句话说:您将不再需要 SafeMath!由于范围...

阅读更多

Solidity 0.7.4 版本发布公告

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

发布

Solidity v0.7.4 修复了一个中等严重程度的存储损坏错误。要了解有关该错误的更多信息并检查您的合约是否容易受到攻击,请阅读这篇文章,其中包含有关该错误的更多详细信息。该错误已由 Certora 开发团队的 John Toman 报告。此外,v0.7.4 在文件级别添加了常量。重要错误修复 代码生成器:修复从内存或调用数据复制空字节数组到存储时的数据损坏错误。在此处阅读更多信息。值得注意的新功能 文件级别的常量 为了使函数在...

阅读更多

Solidity 0.7.3 版本发布公告

Solidity 团队发布于 2020年10月7日

发布

Solidity v0.7.3 修复了动态数组清理中的一个错误。要了解有关该错误的更多信息并检查您的合约是否容易受到攻击,请阅读这篇文章,其中包含有关该错误的更多详细信息。此外,v0.7.3 添加了在解析阶段后停止编译的选项,使用 solc --stop-after parsing。重要错误修复 代码生成器:在将动态数组复制到打包类型的存储后正确清理。在此处阅读更多信息。值得注意的新功能 解析后停止编译 solc --stop-after parsing(或标准 json 中的 settings.stopAfter = 'parsing')现在可用于指示...

阅读更多

Solidity 0.7.2 版本发布公告

Solidity 团队发布于 2020年9月28日

发布

Solidity v0.7.2 修复了 v0.7.1 引入的自由函数中的一个错误,并添加了编译器生成的实用程序文件导出。此外,它还大大扩展了 SMTChecker 的语言支持。重要错误修复 自由函数重载检查 自由函数是在先前版本(Solidity v0.7.1)中引入的。事实证明,可以多次定义具有相同名称的函数,甚至包含相同的参数类型。允许两个具有相同名称但参数类型不同的函数称为“重载”,并且...

阅读更多

Solidity 0.7.1 版本发布公告

Solidity 团队发布于 2020年9月2日

发布

Solidity v0.7.1 在文件级别添加了函数,并修复了几个小错误。值得注意的新功能 文件级别的函数 现在可以在文件级别定义函数。此类函数称为“自由函数”(与绑定到特定合约的函数相反)。自由函数始终是内部函数,旨在替换内部库函数及其非常特殊的行为。自由函数的行为类似于调用它的合约的内部函数。主要区别在于自由函数无法直接访问状态变量和内部函数...

阅读更多

Solidity 0.7.0 版本发布公告

Solidity 团队发布于 2020年7月28日

发布

Solidity 0.7.0 是 Solidity 编译器和语言的一个重大版本。此版本不包含许多功能,而是需要在语法或语义上进行向后不兼容调整的更改。有关详细说明,请参阅文档。最值得注意的是,已经执行了对可见性和状态可变性的进一步清理,并且删除了几个不受欢迎的关键字。禁止在内存中使用映射类型的类型,并且移位和幂运算使用更合理的类型。由于我们通常不向后移植错误修复,因此建议升级所有...

阅读更多

Solidity 0.6.12 版本发布公告

Solidity 团队发布于 2020年7月22日

发布

Solidity v0.6.12 在使用继承和 NatSpec 注释时增加了更多灵活性,并对优化器进行了许多小的改进。值得注意的新功能 NatSpec 继承 正如 Solidity 0.6.11 版本发布公告中所解释的那样,如果您没有在派生函数中提供任何 NatSpec,则 NatSpec 注释现在会自动继承。从 Solidity 0.6.12 开始,即使您指定了一些标记,您也可以使用标记 @inheritdoc 显式地从基类继承注释。然后,未提供的标记将从指定的基类的函数中获取。//...

阅读更多

Solidity 0.6.11 版本发布公告

Solidity 团队发布于 2020年7月7日

发布

Solidity v0.6.11 将继承添加到 NatSpec 注释中,改进了调试数据输出,并修复了某些与为非外部函数打开调用数据相关的小问题。值得注意的新功能 NatSpec 继承和事件 NatSpec 注释是一种向最终用户描述函数行为的方法。它还允许向开发人员提供更详细的信息。一个常规用例是您记录接口的行为,然后在派生合约中实现该接口。以前,您必须在派生合约中重复文档。这...

阅读更多

Solidity 0.6.10 版本发布公告

Solidity 团队发布于 2020年6月11日

发布

Solidity v0.6.10 修复了上一个版本引入的一个重要错误,并添加了错误代码。如果您正在使用带有 calldata 参数的内部库函数并结合使用 for 循环,请升级。重要错误修复 内部库函数中 calldata 参数的无效访问 问题:之前的版本 Solidity 0.6.9 引入了在内部使用 calldata 类型(而不是像以前那样只在外部函数中使用)的可能性。这导致了一个与通过 using for 调用带有 calldata 参数的库函数相关的错误。更具体地说,...

阅读更多

Solidity 0.6.9 版本发布公告

发布者:Solidity 团队 2020年6月5日

发布

Solidity v0.6.9 为 solc-js 添加了 SMT 检查功能,允许对所有变量使用 calldata,并提供了一种指定导入目录的机制。请注意,solc-js/soljson 二进制文件包含内置的 Z3 SMT 求解器,这会导致二进制文件大小增加。值得注意的新功能 SMTChecker SMTChecker 是 Solidity 编译器的一个组件,它已经开发了一段时间了。其目标是将形式化验证方法引入 Solidity 编译器。Solidity 实施了一种基于 SMT/Horn 的形式化验证方法...

阅读更多

Solidity 0.6.8 版本发布公告

发布者:Solidity 团队 2020年5月14日

发布

Solidity v0.6.8 修复了代码生成器中的三个重要错误,并建议使用 SPDX 许可证标识符。此外,对 WebAssembly 的支持得到了扩展,现在可以直接访问整数类型的最小值和最大值。如果您正在使用数组切片、字符串字面量中的反斜杠(用于 ABIEncoderV2)或担心非 payable 构造函数,请升级。重要错误修复 请注意,下面列出的三个错误都已评定为“非常...”级别的严重性。

阅读更多

Solidity 0.6.7 版本发布公告

发布者:Solidity 团队 2020年5月4日

发布

Solidity v0.6.7 引入了对 EIP-165 的支持,通过 type(InterfaceName).interfaceId 实现。语言特性:添加对 EIP 165 接口标识符的支持,使用 type(I).interfaceId。允许抽象合约中的虚拟修饰符具有空主体。编译器特性:优化器:简化重复的 AND 和 OR 操作。通过命令行界面中的 yul-optimizations 或 standard-json 中的 optimizer.details.yulDetails.optimizerSteps 选项,指定 Yul 优化器要执行的优化步骤。标准 JSON 输入:支持字段 urls 中的前缀 file://。错误修复:SMTChecker:修复使用定点数时的内部错误。SMTChecker:修复使用数组切片时的内部错误。类型检查器:不允许...

阅读更多

Solidity 0.6.6 版本发布公告

发布者:Solidity 团队 2020年4月9日

发布

这是一个小的错误修复版本,解决了某些元组赋值问题。重要错误修复:修复组件占用多个堆栈槽且左右两侧堆栈大小不同的元组赋值。错误修复:AST 导出:在字段 mutability 中导出 immutable 属性。SMTChecker:修复 CHC 引擎在内部调用继承函数时的内部错误。类型检查器:在尝试编码设置了 call 选项 gas 和 value 的函数时出现错误。非常感谢所有帮助使此版本成为可能的贡献者!下载新版本...

阅读更多

Solidity 0.6.5 版本发布公告

发布者:Solidity 团队 2020年4月6日

发布

Solidity 0.6.5 版本修复了一个重要的错误,并引入了 immutable 作为主要特性。该错误与使用例如 new uint 分配动态内存数组有关。该错误被认为具有“低”级别的严重性,但在 Solidity 的所有先前版本中都存在。因此,请阅读此博文,了解如何检查您的合约是否易受攻击。immutable 特性支持在构造时设置合约级变量,前提是它们以后不会更改。这些...

阅读更多

Solidity 0.5.17 版本发布公告

发布者:Solidity 团队 2020年3月17日

发布

0.5.x 系列的这个维护版本修复了一个始终存在于编译器中的错误。有些人甚至不认为这是一个错误,这可能解释了为什么它在这么长时间内都没有被发现:私有函数可以在派生合约中被相同名称和类型的私有函数覆盖。换句话说,虚拟函数调用机制不尊重可见性。同样适用于相同名称和类型的两个私有函数...

阅读更多

Solidity 0.6.4 版本发布公告

发布者:Solidity 团队 2020年3月10日

发布

Solidity 0.6.4 版本修复了一个不允许直接调用基类合约函数的错误,另一个导致 try/catch 中变量作用域出现问题的错误,并且允许在存储方面具有更大的灵活性:现在可以从内联汇编设置存储引用变量的存储槽。我们预计这将允许与 delegatecall 代理和可升级合约相关的新的模式。使用此功能时请小心!语言特性:常规:弃用 value(...) 和 gas(...),支持使用...

阅读更多

Solidity 0.6.3 版本发布公告

发布者:Solidity 团队 2020年2月18日

发布

此版本添加了编译器生成的 revert 的原因字符串,如果您指定了 revert-strings debug 或使用设置 settings.debug.revertStrings = "debug"。此外,合约类型和枚举现在允许作为映射的键,并且 doxygen 样式的注释得到了 AST 的更好支持。语言特性:允许合约类型和枚举作为映射的键。允许函数选择器用作编译时常量。编译器特性:AST:为 doxygen 样式的结构化文档添加一个新节点,该节点可以由合约、函数、事件和修饰符定义接收。代码生成器:...

阅读更多

Solidity 0.6.2 版本发布公告

发布者:Solidity 团队 2020年1月27日

发布

经过长时间的讨论,我们最终启用了一种使用在君士坦丁堡中引入的 create2 操作码的高级方法:创建合约时,您可以将 salt 指定为“函数调用选项”:new Contract{salt: 0x1234}(arg1, arg2)。我们利用这次机会,还扩展了这些函数调用选项的使用,以指定外部函数调用中的 gas 和 value 选项:c.f{value: 10, gas: 20000}(arg1, arg2)。此外,接口现在可以继承自接口,使其对于规范目的更有用。为了允许...

阅读更多

Solidity 0.6.1 版本发布公告

发布者:Solidity 团队 2020年1月2日

发布

此版本修复了 Yul 优化器中与循环中的 break 和 continue 语句相关的错误。自 0.6.0 版本以来,Yul 优化器是常规优化器的一部分。在 0.5.x 版本中,您必须除了常规优化器之外还显式激活 Yul 优化器。Yul 优化器仅对 ABIEncoderV2 生成的代码或以独立方式使用时操作。ABIEncoderV2 生成的代码不使用 break 和 continue,但是...

阅读更多

Solidity 0.5.16 版本发布公告

发布者:Solidity 团队 2020年1月2日

发布

此版本修复了 Yul 优化器中的一个错误。如果您手动启用了 Yul 优化器(而不是常规优化器),并且使用的是独立的 Yul 或通过 ABIEncoderV2,则会受到影响。有关更多详细信息,请参阅 buglist.json。错误修复:Yul 优化器:修复冗余赋值移除程序与 break 和 continue 语句组合时的错误。非常感谢所有帮助使此版本成为可能的贡献者!在此下载 Solidity 的新版本。

阅读更多

Solidity 0.6.0 版本发布公告

发布者:Solidity 团队 2019年12月17日

发布

这是 Solidity 编译器和语言的一个主要重大版本。更改包括继承中的显式 virtual 和 override 关键字、对 try/catch 的支持、将回退函数拆分为接收 Ether 函数和实际的回退函数,以及更改数组长度的方式的限制等。有关详细说明,请参阅文档或参考下面显示每个更改的列表。从本版本开始,ABIEncoderV2 不再被视为实验性...

阅读更多

Solidity 0.5.15 版本发布公告

发布者:Solidity 团队 2019年12月17日

发布

此版本修复了在 0.5.14(上一个版本)中引入的一个错误。如果您手动启用了 Yul 优化器(而不是常规优化器),并且使用的是独立的 Yul 或通过 ABIEncoderV2,则会受到影响。有关更多详细信息,请参阅 buglist.json。错误修复:Yul 优化器:修复不正确的冗余加载优化跨越包含带有内存/存储写入的 for 循环的用户定义函数。非常感谢所有帮助使此版本成为可能的贡献者!在此下载 Solidity 的新版本。

阅读更多

Solidity 0.5.14 版本发布公告

发布者:Solidity 团队 2019年12月9日

发布

Solidity 0.5.14 将默认 EVM 版本设置为“Istanbul”,并作为 0.5.x 系列的最后一个版本。SMT 检查器现在支持构造函数,并且可以从命令行界面直接将 EVM 风格的 Yul 转换为 Ewasm。语言特性:允许通过成员 .selector 获取公共或外部库函数的选择器。解析器:允许将字符串和十六进制字符串字面量拆分为多个部分。内联汇编:支持引用其他常量的常量。编译器特性:命令行界面:允许从 yul/strict...

阅读更多

Solidity 0.5.13 版本发布公告

发布者:Solidity 团队 2019年11月14日

发布

Solidity 0.5.13 提供了 Istanbul-EVM 兼容性(默认值仍设置为 Petersburg),是第一个生成以太坊 WebAssembly (EWasm) 二进制输出的版本(尽管尚未完全可用),通过在解析失败时列出潜在的重载来改善开发人员体验,并且可以输出合约的存储变量的布局。与所有其他版本一样,SMT 检查器的覆盖范围得到了进一步改进。语言特性:允许使用 address(LibraryName) 获取链接库的地址。编译器特性:代码生成器:对 SELFBALANCE 操作码的使用...

阅读更多

Solidity 0.5.12 版本发布公告

发布者:Solidity 团队 2019年10月1日

发布

这是一个小的错误修复版本,还包括对 SMT 求解器的循环支持以及对 Yul 优化器的一些改进。功能集较小的原因是我们主要致力于即将发布的 0.6.0 版本。语言特性:类型检查器:允许赋值给外部函数参数,除了引用类型。编译器特性:ABI 输出:将函数的排序顺序从选择器更改为类型、名称。优化器:添加规则,如果第一个参数大于...则用 0 替换 BYTE 操作码。

阅读更多

Solidity 0.5.11 版本发布公告

发布者:Solidity 团队 2019年8月12日

发布

此版本修复了 ABIEncoderV2 中与 calldata 结构体相关的错误以及 V1 中的 calldata 解码错误。修复了 SMT 检查器的几个内部错误。此外,内部类型已添加到 ABI 输出中,允许您查看 ABI 元组背后的结构体类型。最后,Yul 和 WebAssembly 支持正在取得进展。我们还改进了我们的测试框架,该框架现在允许语义测试在 4 秒内运行,而不是 1 分钟。语言特性:内联汇编:支持直接常量...

阅读更多

Solidity 0.5.10 版本发布公告

发布者:Solidity 团队 2019年6月25日

发布

除了对 Yul 优化器、Solidity 到 Yul 代码生成、eWasm 后端和 SMT 检查器的进一步隐性工作之外,此版本还包含两个与存储数组相关的重要的错误修复。详情请参阅我们之前的博文。它还包含一个实验模式,允许从解析错误中恢复(由 @rocky 实现,由 ConsenSys 资助),希望这可能对 IDE 开发人员有用。重要错误修复:ABIEncoderV2:修复占用...的数据类型的存储数组的不正确的 abi 编码。

阅读更多

Solidity 0.5.9 版本发布公告

发布者:Solidity 团队 2019年5月28日

发布

与之前的版本一样,我们大部分时间都花在了让Solidity面向未来上,进一步完善了Yul优化器、Solidity到Yul(以及eWasm)的翻译器和SMT检查器。现在,从Solidity生成的代码总是包含CBOR元数据中的版本号,这样就可以快速评估合约是否可能受到编译器错误的影响。语言特性:内联汇编:恢复在0.5.7中引入的更改:callvalue()指令不再需要payable。静态分析器:...

阅读更多

Solidity 0.5.8 版本发布公告

发布者:Solidity团队 发布日期:2019年4月30日

发布

此版本修复了一些重要但不太可能出现的错误,并进一步完善了ABIEncoderV2、SMTChecker和Yul,并改进了优化器。值得注意的是,如果启用了ABIEncoderV2,ABI解码器现在将在输入中出现脏的高阶位时回退,而不是忽略这些位。重要错误修复:代码生成器:修复构造函数上下文中未初始化的内部函数指针的初始化例程。类型系统:在库中使用时,为事件参数中的合约使用正确的类型名称。这影响了代码生成。Yul优化器:修复多重赋值的SSA转换。语言特性:ABIEncoderV2:实现...

阅读更多

Solidity 0.4.26 版本发布公告

发布者:Solidity团队 发布日期:2019年4月29日

发布

这是0.4.x系列的错误修复版本,包含了针对影响代码生成的重要错误的反向移植修复。它还包含一个修复程序,使emscripten目标与更新的浏览器版本兼容。重要错误修复:代码生成器:修复构造函数上下文中未初始化的内部函数指针的初始化例程。类型系统:在库中使用时,为事件参数中的合约使用正确的类型名称。这影响了代码生成。错误修复:ABIEncoderV2:拒绝生成已知可能存在错误的代码。常规:拆分规则列表...

阅读更多

Solidity 0.5.7 版本发布公告

发布者:Solidity团队 发布日期:2019年3月26日

发布

此版本主要修复了优化器和实验性ABI编码器中的错误。有关错误的详细信息,请参阅官方公告。此外,此版本还允许您在标准json接口中使用Yul作为语言选项(而不是“Solidity”)。重要错误修复:ABIEncoderV2:修复在从存储中编码数组或结构时,加载短值类型相关的错误。ABIEncoderV2:修复从存储中编码打包数组时的缓冲区溢出问题。优化器:修复字节优化规则中参数的错误顺序...

阅读更多

Solidity 0.5.6 版本发布公告

发布者:Solidity团队 发布日期:2019年3月13日

发布

此版本主要修复了先前版本中引入的与多个移位操作码相关的优化器错误。任何现有合约不太可能受到影响,但您仍然不应使用Solidity 0.5.5。除此之外,ABIEncoderV2对calldata结构体和数组的支持现已基本完成,我们添加了一些优化器规则,并将枚举和一维数组添加到SMT检查器中。重要错误修复:Yul优化器:修复结构简化器的访问顺序错误。优化器:修复...中的溢出错误。

阅读更多

Solidity 0.5.5 版本发布公告

发布者:Solidity团队 发布日期:2019年3月5日

发布

此版本侧重于ABIEncoderV2和优化器的稳定性。我们还为Petersburg版本做好了准备,该版本现在是默认的EVM,并改进了SMT检查器,使其在使用SafeMath时报告更少的误报。您现在可以使用以下设置激活实验性Yul优化器:{optimizer: {enabled: true, details: {yul: true}}}或通过命令行使用solc optimize-yul。语言特性:添加对具有字符串或字节键类型的映射的getter的支持。元编程:提供对...

阅读更多

Solidity 0.5.4 版本发布公告

发布者:Solidity团队 发布日期:2019年2月12日

发布

此版本添加了对calldata结构体和使用ABIEncoderV2进行打包编码的支持。我们还对C API进行了一些更改,并添加了对通过Google oss-fuzz进行持续模糊测试的支持。此外,我们还添加了一个新的命令行选项,用于改进(彩色)诊断格式。语言特性:允许使用ABIEncoderV2进行没有动态编码成员的calldata结构体。编译器特性:ABIEncoderV2:实现打包编码。C API(libsolc / raw soljson.js):引入solidity_free方法,该方法释放所有内部缓冲区以节省内存。命令行界面:添加了新的选项new-reporter用于...

阅读更多

Solidity 0.5.3 版本发布公告

发布者:Solidity团队 发布日期:2019年1月22日

发布

此版本添加了对访问合约类型的代码的支持,这有望使新的CREATE2操作码更易于使用。我们还为编译器添加了一些静态分析功能,但大多数更改是在“幕后”完成的,为使用新的基于Yul的优化器与ABIEncoderV2铺平道路。语言特性:通过type(C).creationCode / type(C).runtimeCode提供对合约创建和运行时代码的访问。编译器特性:控制流图:警告无法到达的代码。SMTChecker:支持基本的类型转换,不进行截断。SMTChecker:支持外部...

阅读更多

Solidity 0.5.2 版本发布公告

发布者:Solidity团队 发布日期:2018年12月19日

发布

此版本的Solidity编译器包含多个性能优化。这些包括更快的编译时间,但在某些情况下合约成本也更低。此版本还检查所有未初始化存储引用的实例,并提供了一些改进的错误消息和其他检查。您现在可以通过支持Yul对象格式和特殊函数datasize、dataoffset和datacopy在Yul中创建完整的合约。非常感谢所有帮助使此版本成为可能的贡献者!下载Solidity的新版本...

阅读更多

Solidity 0.5.1 版本发布公告

发布者:Solidity团队 发布日期:2018年12月3日

发布

此版本改进了接口的可用性,修复了一些错误,扩展了SMT检查器,并提供了Yul优化器的早期预览。非常感谢所有帮助使此版本成为可能的贡献者!在此下载Solidity的新版本。

阅读更多

Solidity 0.5.0 版本发布公告

发布者:Solidity团队 发布日期:2018年11月13日

发布

这是Solidity语言和编译器的一个重大破坏性版本,其中包含许多新的安全特性。总的来说,程序员必须更加明确,一些奇怪的边缘情况从语言中删除,低级编译器接口也变得简单得多。此版本早就应该发布了,因此积累了非常长的更改列表。请参阅文档中的“Solidity v0.5.0 破坏性更改”部分,了解有关更改内容以及如何...

阅读更多

Solidity 0.4.25 版本发布公告

发布者:Solidity团队 发布日期:2018年9月13日

发布

此版本修复了与幂运算符相关的清理错误。它只是一个错误修复版本,不包含任何功能。可以在以太坊博客上找到有关已修复错误的更详细说明。请注意,Solidity的夜间构建目前包含与此错误修复版本无关的更改。非常感谢所有帮助使此版本成为可能的贡献者!在此下载Solidity的新版本。

阅读更多

Solidity 0.4.24 版本发布公告

发布者:Solidity团队 发布日期:2018年5月16日

发布

所有计划用于0.5.0版本的剩余破坏性更改(可以通过向后兼容的方式实现)都已包含在此版本中。Solidity现在可以使用控制流分析检测未初始化的存储指针。现在可以再次将函数的多个返回值赋值给新声明的变量,并且SMT检查器能够处理简单的存储变量。非常感谢所有帮助使此版本成为可能的贡献者!在此下载Solidity的新版本。

阅读更多

Solidity 0.4.23 版本发布公告

发布者:Solidity团队 发布日期:2018年4月19日

发布

错误修复版本:在之前的版本中,可以为一个合约定义两个构造函数(一个使用新的构造函数关键字语法,另一个使用旧语法),但最终只使用其中一个。我们还包括其他错误修复。非常感谢所有帮助使此版本成为可能的贡献者!在此下载Solidity的新版本。

阅读更多

Solidity 0.4.22 版本发布公告

发布者:Solidity团队 发布日期:2018年4月17日

发布

此版本具有几个重大且期待已久的更改:现在可以访问函数调用返回的动态数据(数组、字符串等)。您可以为revert和require指定错误原因字符串(工具支持仍在等待中)。我们添加了全局函数abi.encode()、abi.encodePacked()、abi.encodeWithSelector()和abi.encodeWithSignature(),它们公开了ABI编码函数,并且每个函数都返回一个bytes值。构造函数现在应该使用constructor(uint arg1, uint arg2) { ... }来定义,以使它们脱颖而出,并避免合约...时的错误。

阅读更多

Solidity 0.4.21 版本发布公告

发布者:Solidity团队 发布日期:2018年3月8日

发布

我们再次引入了一些计划用于0.5.0版本的更改,可以使用pragma experimental "v0.5.0";激活。在此版本中,此pragma不再生成警告,因此您可以在生产代码中使用它(也应该使用它)。此外,您现在可以指定合约应为哪个EVM版本编译。有效值为“homestead”、“tangerineWhistle”、“spuriousDragon”、“byzantium”(默认值)和“constantinople”。根据此设置,在某些情况下将使用不同的操作码。...

阅读更多

Solidity 0.4.20 版本发布公告

发布者:Solidity团队 发布日期:2018年2月14日

发布

此版本包括一些可用性和安全改进,以及SMT组件的进一步发展。出于安全原因,var关键字已弃用。在为中间语言编写优化阶段方面取得了重大进展,新ABI编码器将使用该阶段生成高度优化的输出。主要目标是使结果字节码大小类似于旧的ABI编码器,同时对更严格的解码过程进行更多运行时检查。这还没有...

阅读更多

Solidity 0.4.19 版本发布公告

发布者:Solidity团队 发布日期:2017年11月30日

发布

在过去的几周里,我们主要致力于进行重大的内部更改。其中之一是新的ABI解码器,它仍处于实验阶段,但希望很快就能投入生产。外部贡献,例如允许数组长度使用常量变量和改进的错误消息,应该会让您作为程序员的生活更轻松。最后,标准json io系统现在允许从合约中选择某些工件,这应该会进一步加快您的代码编译测试周期!功能:代码生成器:支持...的新ABI解码器。

阅读更多

Solidity 0.4.18 版本发布公告

发布者:Solidity团队 发布日期:2017年10月18日

发布

此版本添加了通过pragma experimental "v0.5.0";启用的更多向后不兼容的安全措施,并包含了另一个重要功能:您现在可以使用标准json io编译器接口的outputSelection字段选择仅编译某些合约,这应该会极大地加快像truffle这样的工具的速度。还有两个重要的错误修复:一个是字节变量在内存中分配方式的疏忽,可以将内存需求减少32倍。第二个是安全修复:在极少数情况下,它...

阅读更多

Solidity 0.4.17 版本发布公告

发布者:Solidity团队 发布日期:2017年9月21日

发布

随着我们越来越接近下一个破坏性版本,我们希望通过引入pragma experimental "v0.5.0"来提醒大家,该pragma已启用0.5.0版本的某些新安全功能。此外,此版本最终检查了函数上的修饰符view(以前称为constant)和pure。根据经验,如果您的函数不修改存储,则使用view;如果您的函数甚至不读取任何状态信息,则使用pure - 但...

阅读更多

Solidity 0.4.16 版本发布公告

发布者:Solidity团队 发布日期:2017年8月24日

发布

此版本引入了几个新功能,其中一些需要使用pragma experimental;显式激活。我们将函数的constant关键字拆分为pure(既不读取也不写入状态)和view(不修改状态)。它们尚未强制执行,但在Metropolis之后很可能会利用新的STATIC_CALL功能。此外,ABI编码器使用我们新的中间语言以更简洁的方式重新实现。它可以编码任意嵌套的数组,并且将...

阅读更多

Solidity 0.4.15 版本发布公告

Solidity团队发布,2017年8月8日

发布

这主要是一个错误修复版本,它修复了低级delegatecall函数返回值的问题,并删除了一些无效的警告消息。功能:类型检查器:如果尝试实例化抽象类,则显示未实现的函数。错误修复:代码生成器:.delegatecall() 应始终返回执行结果。代码生成器:为低级callcode和delegatecall提供“新账户gas”。类型检查器:如果声明了构造函数,则必须实现构造函数。类型检查器:不允许在ecrecover、sha256和ripemd160上使用.gas()修饰符。类型检查器:不要将重载函数标记为隐藏其他函数。类型...

阅读更多

Solidity 0.4.14 版本发布公告

Solidity团队发布,2017年7月31日

发布

此版本包含几个新功能和错误修复,以及一个重要的安全修复:ecrecover函数可以被强制返回无效数据,这可以在非常特殊的情况下用于绕过身份验证。功能:C API (jsonCompiler):导出许可证方法。代码生成器:通过移除无用的跳转来优化回退函数。内联汇编:如果尝试访问calldata变量,则显示有用的错误消息。内联汇编:支持不带初始值的变量声明(默认为0)。元数据:仅包含用于编译的文件...

阅读更多

Solidity 0.4.13 版本发布公告

Solidity团队发布,2017年7月6日

发布

这是一个小的错误修复版本,修复了0.4.12版本引入的几个微不足道但非常恼人的错误。我们还在为重大版本0.5.0做准备,弃用了一些旧功能。功能:语法检查器:弃用throw,支持require()、assert()和revert()。类型检查器:如果本地存储引用变量没有显式使用关键字storage,则发出警告。错误修复:代码生成器:正确注销修饰符变量。编译器接口:仅在分析成功时输出AST。错误输出:不要省略错误类型。非常感谢...

阅读更多

Solidity 0.4.12 版本发布公告

Solidity团队发布,2017年7月3日

发布

此版本引入了AST导出,巩固了内联汇编,引入了一些额外的警告并修复了几个错误。汇编中的手动跳转已弃用,取而代之的是结构化构造switch、for和函数调用,以便将来提供更好的可移植性。功能:汇编:添加CREATE2 (EIP86)、STATICCALL (EIP214)、RETURNDATASIZE和RETURNDATACOPY (EIP211)指令。汇编:在汇编输出中显示辅助数据。汇编:将SHA3重命名为KECCAK256。AST:将所有属性导出为JSON格式。C API (jsonCompiler):在内部使用标准JSON I/O。代码生成器:添加了Whiskers...

阅读更多

Solidity 0.4.11 版本发布公告

Solidity团队发布,2017年5月3日

发布

此版本修复了优化器中的一个错误(有关更多信息,请参阅博客),引入了标准JSON接口,添加了接口合约并实现了一些额外的安全检查。标准JSON接口提供了一种统一的方式来调用Solidity编译器,以便于跨平台采用和编译验证。功能:实现标准JSON输入/输出API支持接口合约。C API (jsonCompiler):添加compileStandard()方法以处理标准JSON I/O。命令行接口:添加standard-json参数以处理标准JSON...

阅读更多

Solidity 0.4.10 版本发布公告

Solidity团队发布,2017年3月15日

发布

此版本专注于稳定性,还引入了一些新的智能合约安全功能:require、assert和transfer。请注意,新的revert函数只有从homestead开始才会节省gas。功能:添加assert(condition),如果condition为false则抛出异常(用于内部错误)。添加require(condition),如果condition为false则抛出异常(用于无效输入)。命令行接口:除非强制,否则不覆盖文件。引入.transfer(value)用于发送以太币。代码生成器:支持revert()用于中止并回滚,但不消耗所有gas。内联汇编:支持...

阅读更多

Solidity 0.4.9 版本发布公告

Solidity团队发布,2017年1月31日

发布

此版本修复了一些错误,并添加了几个新功能。需要注意的事项:为了区分不同文件中同名的合约和库,现在所有内容都以“文件名:”为前缀。这适用于编译器输出、链接器输入和其他内容。内部异常现在通过使用无效操作码(0xfe)抛出,手动异常仍然使用无效跳转。功能:编译器接口:合约和库可以用文件:前缀来引用,使它们唯一。编译器接口:报告源...

阅读更多

Solidity 0.4.8 版本发布公告

Solidity团队发布,2017年1月13日

发布

功能:优化器:性能改进。输出:以新的标准化Solidity汇编格式打印汇编。错误修复:重映射:优先考虑更长的上下文而不是更长的前缀。类型检查器,代码生成器:启用访问基类合约名称的事件。导入:导入“.dir/a”不是相对路径。相对路径以目录.或…开头。类型检查器:不允许继承不同种类(例如,函数和修饰符)的同名成员非常感谢所有帮助使此版本成为可能的贡献者!从此处下载Solidity的新版本。

阅读更多

Solidity 0.4.7 版本发布公告

Solidity团队发布,2016年12月15日

发布

功能:位移运算符。类型检查器:当在非payable函数中使用msg.value时发出警告。代码生成器:将元数据文件的Swarm哈希注入字节码中。代码生成器:用简单的汇编循环替换昂贵的memcpy预编译。优化器:一些死代码消除。错误修复:代码生成器:如果在内存(数组)复制期间调用身份预编译失败,则抛出异常。类型检查器:不是有效UTF-8的字符串文字不能转换为字符串类型代码生成器:作为布尔参数给出的任何非零值现在转换为1。AST Json转换器:替换VariableDefinitionStatement...

阅读更多

Solidity 0.4.6 版本发布公告

Solidity团队发布,2016年11月22日

发布

错误修复:优化器:关于状态的知识对于JUMPDEST没有正确清除js编译器的Swarm哈希:bzzr:/b873fa122233c91b1531527c390f6ca49df4d2a2c5f75706f4b612a0c813cb6a非常感谢所有帮助使此版本成为可能的贡献者!从此处下载Solidity的新版本。

阅读更多

Solidity 0.4.5 版本发布公告

Solidity团队发布,2016年11月21日

发布

此Solidity版本添加了函数类型。用例包括为异步或链下操作提供回调或通用库功能(例如map-reduce风格的编程)。此版本还提高了枚举和向合约构造函数发送以太币的安全性。功能:函数类型Do-while循环:支持do while ();控制结构内联汇编:支持invalidJumpLabel作为跳转标签。类型检查器:现在更积极地搜索混合类型的内联数组的通用类型代码生成器:当超出范围时生成运行时错误...

阅读更多

Solidity 0.4.4 版本发布公告

Solidity团队发布,2016年11月1日

发布

这是一个错误修复版本,修复了当多个变量存储在同一个槽中时出现的存储损坏(详细信息)。错误修复:类型检查器:禁止导致错误使用EXP操作码的有符号指数。代码生成器:在存储到存储之前正确清理高阶字节。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载Solidity的新版本。

阅读更多

Solidity 0.4.3 版本发布公告

Solidity团队发布,2016年10月25日

发布

这是一个真正的错误修复版本,从下面的更改日志中可以看出。最重要的修复涉及优化器,它在某些情况下生成了与SHA3操作码相关的无效代码。功能:内联汇编:支持suicide和selfdestruct操作码(注意:suicide已弃用)。内联汇编:如果块后堆栈不平衡,则发出警告。包含keccak256()作为sha3()的别名。支持移位常数。错误修复:命令行接口:在solc中不允许未知选项。名称解析器:允许继承枚举定义。类型检查器:正确的类型检查...

阅读更多

Solidity 0.4.2 版本发布公告

Solidity团队发布,2016年9月17日

发布

错误修复:代码生成器:修复从payable函数调用库函数。类型检查器:修复了关于无效数组类型的崩溃。代码生成器:修复了在版本0.4.0之后可见的调用gas错误,该错误适用于输出大于输入的调用。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载Solidity的新版本。

阅读更多

Solidity 0.4.1 版本发布公告

Solidity团队发布,2016年9月9日

发布

这是一个错误修复版本,修复了使用最新版本0.4.0编译库时的错误。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载Solidity的新版本。

阅读更多

Solidity 0.4.0 版本发布公告

Solidity团队发布,2016年9月8日

发布

注意:版本0.4.0无法编译库。请升级到0.4.1。此版本故意破坏了向后兼容性,主要是为了强制执行一些安全功能。最重要的更改是,您必须显式指定函数是否可以通过payable修饰符接收以太币。此外,更多情况会导致抛出异常。升级需要进行的最小更改:将payable添加到所有想要接收以太币的函数(包括构造函数和回退函数)。将`更改为;`在修饰符中。添加版本pragma...

阅读更多

Solidity 0.3.6 版本发布公告

Solidity团队发布,2016年8月10日

发布

这是来自新的“solidity-standalone”存储库的第一个版本。它不再依赖于cpp-ethereum,并且可以仅从solidity github存储库构建。请注意,优化器在某些情况下被禁用,这可能导致更大的(但更正确的)代码。功能:形式化验证:考虑合约上的外部影响。类型检查器:关于低级调用和send的未使用返回值的警告。输出:作为AST输出一部分的源位置和节点ID输出:字节码的源位置映射输出:形式...

阅读更多

Solidity 0.3.5 版本发布公告

Solidity团队发布,2016年6月10日

发布

功能:上下文相关的路径重映射(不同的模块可以使用不同版本的相同库)错误修复:类型检查:在从外部调用获取数据时,动态返回类型被删除,现在它们被“不可用”类型替换。类型检查:构造函数的覆盖被认为使函数非抽象。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载Solidity的新版本。

阅读更多

Solidity 0.3.4 版本发布公告

Solidity团队发布,2016年5月31日

发布

此版本除了文档之外没有其他更改。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载Solidity的新版本。

阅读更多

Solidity 0.3.3 版本发布公告

Solidity团队发布,2016年5月27日

发布

此版本主要使库更加灵活,因为它允许调用内部函数。功能允许调用内部库函数(通过“内联”)分数/有理常数(仅可用于定点类型,定点类型仍在开发中)内联汇编可以访问内部函数(作为跳转标签)在终端上不带参数运行solc将打印帮助。修复代码生成:删除代码生成中的一些不确定性。代码生成:更正了内联汇编中not/bnot/iszero的使用代码生成:在比较之前正确清理bytesNN类型一个...

阅读更多

Solidity 0.3.2 版本发布公告

Solidity团队发布,2016年4月18日

发布

此版本主要修复了一些 bug。在底层,我们正在将 Solidity 源代码与 cpp-ethereum 的其余源代码分离,以便很快能够独立构建(和发布)。修复:代码生成:结构体的动态数组没有正确删除。代码生成:构造函数参数列表中的静态数组没有正确解码。解析器:内联汇编解析器:字节操作码无法使用错误报告:可变大小类型的标记没有正确转换为字符串非常感谢……

阅读更多

Solidity 0.3.1 版本发布公告

Solidity 团队发布于 2016 年 3 月 31 日

发布

此版本主要引入了内联汇编(文档)。内联汇编提供了一种编写低级但仍然易读代码的方式。结合即将推出的内联库函数和模板功能,它允许将许多原本必须在编译器本身中完成的开发工作转移到用 Solidity 编写的库中。将来,可以引入仍然看起来像内置类型的新多功能类型。功能:内联汇编修复:代码生成:使用窄类型访问数组没有清理……

阅读更多

Solidity 0.3.0 版本发布公告

Solidity 团队发布于 2016 年 3 月 11 日

发布

此版本与以太坊主网上的 Homestead 更改同步,并引入了各种重大更改。重大更改:您不应该依赖导致(截断)整数的字面量的除法。这种情况仍然存在,但当我们实现定点类型时将会改变,即将来 1/2 == 0.5 将为真,目前我们有 1/2 == 0。请注意,这仅适用于字面量 ((2 + 7) / 2),而不适用于变量 (x / 2)。库调用……

阅读更多

Solidity 0.2.2 版本发布公告

Solidity 团队发布于 2016 年 2 月 17 日

发布

功能:bytes1、…、bytes32 类型的索引访问(目前仅限读取访问)。错误修复:类型检查器因基本构造函数参数数量错误而崩溃。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载 Solidity 的新版本。

阅读更多

Solidity 0.2.1 版本发布公告

Solidity 团队发布于 2016 年 1 月 30 日

发布

此版本包含三个主要功能和优化器中一个非常重要的错误修复。在某些情况下,优化器生成了错误的代码。请在使用代码之前始终对其进行测试,不幸的是,我们永远无法保证 100% 的正确性。我们对本版本收到的许多志愿者社区贡献特别表示感谢。两位无畏的个人深入研究了 Solidity 代码并提供了两个主要功能:非常感谢 @VoR0220 提供的内联数组和 @guanqun 提供的三元运算符!此外,@bobsummerwill 花费了……

阅读更多

Solidity 0.2.0 版本发布公告

Solidity 团队发布于 2015 年 12 月 1 日

发布

功能:使用 new 分配内存数组。通过使用 x for y 将库函数绑定到类型**重大更改**:new ContractName.value(10)() 必须写成 (new ContractName).value(10)()添加 selfdestruct 作为 suicide 的别名。错误修复:固定数组类型构造函数参数未正确读取。包含数组或字符串的结构体的内存分配。库中显式内存参数的数据位置设置为存储。此版本的两大主要功能是能够创建内存数组(动态长度)并将库函数附加到类型……

阅读更多

Solidity 0.1.7 版本发布公告

Solidity 团队发布于 2015 年 11 月 17 日

发布

功能:改进了意外标记的错误消息。用于合约形式验证的 why3 的概念验证转换编译。错误修复:写入字节或字符串的元素会覆盖其他元素。作为事件索引参数的数组(包括字符串)。Windows 上的“找不到后继块”。在元组中使用字符串字面量。处理库版本中无效的提交哈希。一些 Windows 上的测试框架修复。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载 Solidity 的新版本。

阅读更多

Solidity 0.1.6 版本发布公告

Solidity 团队发布于 2015 年 10 月 16 日

发布

功能:动态存储数组的 .push()。元组表达式((1,2,3) 或 return (1,2,3);)多个变量的声明和赋值(var (x,y,) = (1,2,3,4,5); 或 var (x,y) = f();)解构赋值((x,y,) = (1,2,3))在 json 编译器中处理多个源文件。错误修复:关于使用无效类型的库函数的内部错误。正确解析语句级上的 Library.structType a。正确报告带括号的表达式的源位置(作为“元组”故事的一部分)。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载 Solidity 的新版本。

阅读更多

Solidity 0.1.5 版本发布公告

Solidity 团队发布于 2015 年 10 月 7 日

发布

更改:存储编码中的重大更改:将短字节数组和字符串与其长度一起编码到存储中。报告警告。允许公共库函数使用存储引用类型。通过 .. 访问其他合约和库中声明的类型。库的运行时字节码开头的版本戳。错误修复:初始化的字符串状态变量和构造函数中的动态数据存在问题。错误修复:自动解析依赖项。错误修复:允许匿名事件的四个索引参数。错误修复:检测接受任意参数的函数中过大的整数常量。非常感谢……

阅读更多

Solidity 0.1.4 版本发布公告

Solidity 团队发布于 2015 年 9 月 30 日

发布

更改:错误修复:solc 的 combined-json 输出错误地返回了运行时二进制文件而不是二进制文件。错误修复:访问固定大小数组的返回值。错误修复:不允许从字符串字面量赋值到存储指针。重构:将类型检查移动到其自己的模块中。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载 Solidity 的新版本。

阅读更多

Solidity 0.1.3 版本发布公告

Solidity 团队发布于 2015 年 9 月 22 日

发布

更改:throw 语句。包含通过 CALLCODE 调用的函数的库。编译器的链接器阶段,用于插入其他合约的地址(用于库)。编译器选项以输出合约的运行时部分。对通过整数常量访问固定大小数组的编译时越界检查。版本字符串包含 libevmasm/libethereum 的版本(包含优化器)。错误修复:常量公共状态变量的访问器。错误修复:在克隆合约中传播异常。错误修复:现在正确处理空单行注释。错误修复:正确检查事件的索引参数数量。错误修复:结构体构造函数中的字符串。非常感谢……

阅读更多

Solidity 0.1.2 版本发布公告

Solidity 团队发布于 2015 年 8 月 21 日

发布

更改:改进的命令行界面(重大更改)。字节和字符串之间的显式转换。错误修复:克隆合约中使用的值转移。错误修复:字符串作为映射键存在问题。错误修复:防止使用某些运算符。非常感谢所有帮助使此版本成为可能的贡献者!从此处下载 Solidity 的新版本。

阅读更多

参与进来

GitHub

Twitter

Mastodon

Matrix

了解更多

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

2024Solidity 团队

安全策略

行为准则