了解“智能合同装配”命令的简单方法是查看由解决方案编译的“装配”命令。
使用Remix,可以很容易地查看与智能约定相对应的程序集命令。
上图创建了一个名为MyContract的最简单智能约定,其中包括构造函数和test函数。 单击右侧的“详细信息”(Detail )按钮可以查看相应的“组件”(assembly )命令。
1)智能合约整体框架
智能约定汇编代码由初始函数和功能函数两部分组成。
2)初始函数头以及初始函数
初始函数标题功能很简单,跳转到初始函数执行。 初始函数实现了以下两个功能。
a )调用智能约定构造函数
b )复制并返回功能函数部分。
初始函数是智能约定创建执行,执行后,智能约定的调用只是功能函数部分。
具体逻辑可以看到以太网源代码- EVM和智能合约的执行。
复制功能函数的代码如下图所示。
CODECOPY命令执行代码复制,并从偏移0x1e开始复制。 长度为0x86。
3)功能函数头以及功能函数
功能头主要读取输入参数,跳转到具体的功能执行。
如果上图中的“测试”函数的ID为0xF8A8FD6D,则每个函数都会生成函数ID。
计算函数ID :
1 )计算)函数名称(“参数列表名称”)的sha3的混列
2 )函数ID在上述混列的前32位。
总结:智能合约汇编代码由两部分组成:初始函数和功能函数。
仅在创建智能约定时调用初始函数。
功能函数在创建智能约定后调用。
3359 MP.weixin.QQ.com/s/_ mp1r _ bwvvlplgwh5swx jg