我正在用 Solidity 编写代理合约。为了在我的后备函数中转发传入呼叫,我使用内联汇编代码。我是一名学生,下面的代码是我的老师在教程中编写的代码。
不过,我的代码收到以下错误:
必须调用内置函数“gas”。
我假设自本教程制作以来 Solidity 已经不断发展,但我在网上找不到任何东西(谷歌或文档)。
这是代码:
assembly {
let result := delegatecall(gas, implementation, add(data, 0x20), mload(data), 0, 0)
let size := returndatasize
let ptr := mload(0x40)
returndatacopy(ptr, 0, size)
switch result
case 0 {revert(ptr, size)}
default{return(ptr, size)}
}
Run Code Online (Sandbox Code Playgroud)
该错误是指第 2 行中带有红色下划线的单词“gas”。
有什么改变吗?
在旧版本的文档(例如v0.4.24)中,它说:
对于不带参数的操作码,可以省略括号。
然而,较新版本的文档链接到中间语言的单独页面,现在称为 Yul。在该页面上,操作码现在也被称为“内置函数”,并且似乎不再允许省略括号。
所以你很可能应该使用gas()而不是gas.
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |