首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >evm卸荷问题

evm卸荷问题
EN

Ethereum用户
提问于 2017-12-07 15:06:40
回答 1查看 876关注 0票数 2

我正试图了解在这个示例中,EVM中的计算是如何工作的。

代码语言:javascript
复制
PC: 3 STACK: [54] MEM: [], STORAGE: {}

SLOAD从堆栈中弹出一个,并将该索引处的契约存储中的值推入堆栈中。由于合同是第一次使用的,所以这里没有任何东西,所以零。

代码语言:javascript
复制
PC: 4 STACK: [0] MEM: [], STORAGE: {}

有人能解释一下SLOAD做了什么吗?上面写着“从堆栈里弹出一个”,好的,是54。“并在合同储存中推展价值”是什么价值?弹出的那个(即钥匙?)还是消息值?然后任何东西都不会添加到存储中。不知道发生了什么:S

EN

回答 1

Ethereum用户

回答已采纳

发布于 2017-12-07 18:10:00

这是SLOAD之前的状态:

代码语言:javascript
复制
PC: 3 STACK: [54] MEM: [], STORAGE: {}

短语"SLOAD从堆栈中弹出一个“意味着它从堆栈中获取顶部的项,在本例中是54。这是SLOAD的操作数。

因此,SLOAD然后在契约存储中查找键54的值,并将在那里找到的值推送到堆栈中。在这种情况下,键54处的存储值为零(因为契约是第一次运行的),所以推送到堆栈的值是0

因此,最终状态(堆栈上为零)。

代码语言:javascript
复制
PC: 4 STACK: [0] MEM: [], STORAGE: {}

我认为你被“推动合同储存中的价值”这句话误导了--这是非常懒惰的措辞。更清楚的是,“从契约存储中获取值并将其推送到堆栈中”。

票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/32750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档