破解以太坊 EVM 谜题3
破解以太坊 EVM 谜题3
## EVM 谜题3
```bash
00 36 CALLDATASIZE
01 56 JUMP
02 FD REVERT
03 FD REVERT
04 5B JUMPDEST
05 00 STOP
```
以上是 EVM 谜题 3 的操作码,它和[谜题 1](https://learnblockchain.cn/article/4814)及 [谜题 2](https://learnblockchain.cn/article/4846)类似, 我们要设法直接跳转(JUMP)到JUMPDEST操作码, 如果你完成了前面的 [谜题](https://learnblockchain.cn/article/4814), 你会知道我们需要把栈里值设置为4,这样就可以跳转到有效的JUMPDEST操作码。
在这个谜题里,在`JUMP` 之前只有一个操作码CALLDATASIZE
* [CALLDATASIZE](https://www.evm.codes/#36) 将CALLDATA 的大小推入栈,单位为字节。
要解决这个难题,必须要了解什么是 "calldata":
摘自[第13章-以太坊虚拟机](https://github.com/ethereumbook/ethereumbook/blob/develop/13evm.asciidoc)
>calldata是随交易一起发送的数据区域。在创建合约的情况下,它将是构造器代码。这个区域是不可改变的,可以用指令[CALLDATALOAD](http://localhost:3000/#35)、[CALLDATASIZE](http://localho...
EVM 谜题3
00 36 CALLDATASIZE
01 56 JUMP
02 FD REVERT
03 FD REVERT
04 5B JUMPDEST
05 00 STOP
以上是 EVM 谜题 3 的操作码,它和谜题 1及 谜题 2类似, 我们要设法直接跳转(JUMP)到JUMPDEST操作码, 如果你完成了前面的 谜题, 你会知道我们需要把栈里值设置为4,这样就可以跳转到有效的JUMPDEST操作码。
在这个谜题里,在JUMP
之前只有一个操作码CALLDATASIZE
- CALLDATASIZE 将CALLDATA 的大小推入栈,单位为字节。
要解决这个难题,必须要了解什么是 "calldata":
摘自第13章-以太坊虚拟机
calldata是随交易一起发送的数据区域。在创建合约的情况下,它将是构造器代码。这个区域是不可改变的,可以用指令CALLDATALOAD、[CALLDATASIZE](http://localho...
剩余50%的内容订阅专栏后可查看
- 发表于 2022-10-09 17:33
- 阅读 ( 223 )
- 学分 ( 0 )
- 分类:以太坊
- 专栏:以太坊 EVM 谜题破解
评论