智能合约中的变量读取时需要遍历整个区块链中的相关交易吗?
如果在智能合约中定义了一个数组,和append方法。那要读取这个数组的最新值,是不是需要遍历整个区块链中的相关交易,把所有append(也可能还有delete)读取出来,才能最终得到最新的数组?看起来很麻烦。
我看到向Contract Address发起的交易里,有input data一项。但这里面只涉及要调用的方法以及参数。transaction的ordering在以太坊里如何解决的呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不需要,合约本质是一个账户,以太坊的账户体系中是可以存储数据的,没增加一个区块,有些账户的数据就变动了,如果合约被调用,数据变动了,其实在区块上链后,也就是新的数据了。
这是一个合约中数据的样子,storage就是合约的变量数据。
这其实是误解了。
以太坊是虚拟机,你可以理解为运行你的程序前,所有环境都是准备好了的。变量就在那里,你读取就好了。就像是一台机器一样。因为他虚拟机里存储的是最终状态。
input data只是本次交易的附加数据而已。