我正试图了解在这个示例中,EVM中的计算是如何工作的。
PC: 3 STACK: [54] MEM: [], STORAGE: {}SLOAD从堆栈中弹出一个,并将该索引处的契约存储中的值推入堆栈中。由于合同是第一次使用的,所以这里没有任何东西,所以零。
PC: 4 STACK: [0] MEM: [], STORAGE: {}有人能解释一下SLOAD做了什么吗?上面写着“从堆栈里弹出一个”,好的,是54。“并在合同储存中推展价值”是什么价值?弹出的那个(即钥匙?)还是消息值?然后任何东西都不会添加到存储中。不知道发生了什么:S
发布于 2017-12-07 18:10:00
这是SLOAD之前的状态:
PC: 3 STACK: [54] MEM: [], STORAGE: {}短语"SLOAD从堆栈中弹出一个“意味着它从堆栈中获取顶部的项,在本例中是54。这是SLOAD的操作数。
因此,SLOAD然后在契约存储中查找键54的值,并将在那里找到的值推送到堆栈中。在这种情况下,键54处的存储值为零(因为契约是第一次运行的),所以推送到堆栈的值是0。
因此,最终状态(堆栈上为零)。
PC: 4 STACK: [0] MEM: [], STORAGE: {}我认为你被“推动合同储存中的价值”这句话误导了--这是非常懒惰的措辞。更清楚的是,“从契约存储中获取值并将其推送到堆栈中”。
https://ethereum.stackexchange.com/questions/32750
复制相似问题