solidity智能合约存储特性

2020年8月7日10:29:59
评论
273
摘要

solidity智能合约的一些重要特性,如变长数组中的storage和memory变量,storage和memory的存储位置以及字符串数组string[]使用。

更多区块链技术与应用分类:

区块链应用    区块链开发

以太坊 | Fabric | BCOS | 密码技术 | 共识算法 | 比特币其他链

通证经济传统金融场景 | 去中心化金融 | 防伪溯源 | 数据共享 | 可信存证

 

一. 关于变长数组。

string[],bytes[]

对于变长数组,在初始化分配空间前不可使用,可以通过new关键字来初始化一个数组。它们不能在使用new关键字初始化前使用下标方式访问。

storage

storage类型的动态数组有一个length属性,表示当前的数组长度。对于storage的变长数组,可以通过给length赋值调整数组长度。可以通过两种方式改变数组长度,index++及push方法。

memory

而memory类型的动态数组,不支持修改length属性来调整数组大小。一旦new完,大小不可改变。

二. 存储位置storage和memory

memory赋值给storage

storage转换为storage

memory赋值给storage

memory赋值给局部变量(storage)

storage赋值memory

memory赋值memory

memory之间是引用传递,并不会拷贝数据。一个memory的引用类型赋值给另一个memory的引用,不会创建另一个新的拷贝。

三. 字符串数组string[]

 


原文链接:solidity智能合约存储特性

  • 本文由 发表于 2020年8月7日10:29:59
  • 转载请注明:https://www.wanghaoyi.com/ethereum-solidity-feature.html
Solidity合约间调用原子性操作实验 BCOS

Solidity合约间调用原子性操作实验

实验说明 为了测试在合约内调用另一个合约时,若在某一方法内,先调用另一个合约方法导致其数据更改成功,而执行后面的语句时由于某些原因导致交易失败,那么已经被调用的合约数据已然更改还是未被更改?针对这个问...
以太坊之数据存储详解 以太坊

以太坊之数据存储详解

本文整理分析以太坊网络中的区块、交易以及合约数据是如何存储的。 区块结构 区块由两部分组成,分别是区块头(header)和区块体(body)两部分,详细结构图如下。 区块头(header) 区块头存储...
WeIdentity-Sample国密化部署 BCOS

WeIdentity-Sample国密化部署

之前基于全国密化搭建了FiSCO BCOS链,但是官网给的WeIdentity-Sample例子是基于非国密的,欲将WeIdentity-Sample在国密下运行,还需要手动修改下。 1.修改代码 W...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: