问题:为什么需要比较不同版本的solc编译器
EVM在不断升级中,有些指令是后来加入的,比如revert,还有returndatasize
同样的solidity代码,鹏飞在0.4.22编译出来后,就在未升级过的北京银行项目环境上运行报错,因为没有returndatasize这个指令(推测是同样的函数,后面的编译器版本动作不一样了,比如要先返回到buffer了,间接返回returndatasize;而不是像之前直接返回数据本身)
1.solidity如何反编译查错
我用0.4.22来编译simple合约,发现有如下的fd(revert指令),如果用旧版本(比如0.4.2的呢??)
选择低版本,成功通过
我在家中编译器,选择了0.4.2版本,编译部署出二进制代码,果然没有fd指令了
所用源代码
pragma solidity ^0.4