如果在智能合约中定义了一个数组,和append方法。那要读取这个数组的最新值,是不是需要遍历整个区块链中的相关交易,把所有append(也可能还有delete)读取出来,才能最终得到最新的数组?看起来很麻烦。我看到向ContractAddress发起的交易里,有inputdata一项。但这里面只涉及要调用的方法以及参数。transaction的ordering在以太坊里如何解决的呢?
2 回答

慕桂英546537
TA贡献1848条经验 获得超10个赞
不需要,合约本质是一个账户,以太坊的账户体系中是可以存储数据的,没增加一个区块,有些账户的数据就变动了,如果合约被调用,数据变动了,其实在区块上链后,也就是新的数据了。这是一个合约中数据的样子,storage就是合约的变量数据。"143f5e185e5724a1794739d37245b5b790d9e981":{"balance":"0","nonce":0,"root":"ca8c4b371ca57e115d36d825df11edb2ed0d3a95fe16d62ddc1588d2dba7e44f","codeHash":"7612f2653b712e6...fa640e2294c876098b1358f0b4e8","code":"60806040526004361....","storage":{"00000000000000000000...0000000000000000000000000":"0a","00000000000000000000...0000000000000000000000001":"64","00000000000000000000...0000000000000000000000002":"01","034feb03b7facb45a16a...b0ac9c170ab4ad6508986005c":"820400"}}

炎炎设计
TA贡献1808条经验 获得超4个赞
这其实是误解了。以太坊是虚拟机,你可以理解为运行你的程序前,所有环境都是准备好了的。变量就在那里,你读取就好了。就像是一台机器一样。因为他虚拟机里存储的是最终状态。inputdata只是本次交易的附加数据而已。
添加回答
举报
0/150
提交
取消