存储,主存和栈

存储

每个账户有一块持久化内存区域被称为存储。其形式为 key-value,key 和 value 的长度
均为 256 比特

在合约里,不能遍历账户的存储。相对于另外两种,存储的读操作相对来
说开销较大,修改存储更甚。

 

一个合约只能对它自己的存储进行读写。

主存
第二个内存区被称为主存。合约执行每次消息调用时,都有一块新的,被清除过的主存

主存可以以字节粒度寻址,但是读写粒度为 32 字节(256 比特)。操作主存的开销随着其增
长而变大(平方级别)。

EVM 不是基于寄存器,而是基于栈的虚拟机。因此所有的计算都在一个被称为栈的区域执
行。栈最大有 1024 个元素,每个元素 256 比特。对栈的访问只限于其顶端,方式为:
许拷贝最顶端的 16 个元素中的一个到栈顶
,或者是交换栈顶元素和下面 16 个元素中的一
个。

所有其他操作都只能取最顶的两个(或一个,或更多,取决于具体的操作)元素,并把
结果压在栈顶。当然可以把栈上的元素放到存储或者主存中。但是无法只访问栈上指定深度
的那个元素
,在那之前必须要把指定深度之上的所有元素都从栈中移除才行。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值