此版本专注于稳定性,并引入了一些新的智能合约安全特性require、assert 和 transfer。请注意,新的 revert 函数从 homestead 开始才将是节省 gas 的。
特性
- 添加 assert(condition),如果 condition 为假,则抛出异常(用于内部错误)。
- 添加 require(condition),如果 condition 为假,则抛出异常(用于无效输入)。
- 命令行界面:除非强制,否则不覆盖文件。
- 引入 .transfer(value) 用于发送 Ether。
- 代码生成器:支持 revert() 用于回滚中止,但不会消耗所有 gas。
- 内联汇编:支持 revert(EIP140)作为操作码。
- 解析器:支持数字中的科学计数法(例如 2e8 和 200e-2)。
- 类型系统:支持将外部函数显式转换为地址。
- 类型系统:如果指数的底数是字面量(结果类型可能出乎意料),则发出警告。
- 类型系统:如果常量状态变量不是编译时常量,则发出警告。
Bug 修复
- 命令行界面:始终转义文件名(将 /、: 和 . 替换为 _)。
- 命令行界面:不要尝试创建 . 和 .. 路径。
- 命令行界面:允许长库名称。
- 解析器:不允许八进制字面量。
- 类型系统:修复由代码中致命错误的持续存在导致的崩溃。
- 类型系统:不允许元组的复合赋值。
- 类型系统:检测常量之间的循环依赖。
- 类型系统:不允许长度为负的数组。
- 类型系统:修复与无效二元运算符相关的崩溃。
- 类型系统:不允许使用空元组类型声明 var。
- 类型系统:为成员函数正确地将函数参数类型转换为指针。
- 类型系统:将构造函数的私有性移入 AST 本身。
- 内联汇编:在分析期间为非值类型收取一个堆栈槽。
- 汇编输出:在它引用的操作之后打印源位置,而不是之前。
- 优化器:在一段时间后停止尝试优化棘手的常量。
衷心感谢所有为发布此版本做出贡献的贡献者!
下载新版本的 Solidity这里.