智能合约中的变量读取时需要遍历整个区块链中的相关交易吗?

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

慕桂英546537

不需要,合约本质是一个账户,以太坊的账户体系中是可以存储数据的,没增加一个区块,有些账户的数据就变动了,如果合约被调用,数据变动了,其实在区块上链后,也就是新的数据了。这是一个合约中数据的样子,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"}}

炎炎设计

这其实是误解了。以太坊是虚拟机,你可以理解为运行你的程序前,所有环境都是准备好了的。变量就在那里,你读取就好了。就像是一台机器一样。因为他虚拟机里存储的是最终状态。inputdata只是本次交易的附加数据而已。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript