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

发布于 2022-09-07 08:32:35 字数 212 浏览 21 评论 0

如果在智能合约中定义了一个数组,和append方法。那要读取这个数组的最新值,是不是需要遍历整个区块链中的相关交易,把所有append(也可能还有delete)读取出来,才能最终得到最新的数组?看起来很麻烦。

我看到向Contract Address发起的交易里,有input data一项。但这里面只涉及要调用的方法以及参数。transaction的ordering在以太坊里如何解决的呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心的憧憬 2022-09-14 08:32:35

不需要,合约本质是一个账户,以太坊的账户体系中是可以存储数据的,没增加一个区块,有些账户的数据就变动了,如果合约被调用,数据变动了,其实在区块上链后,也就是新的数据了。

这是一个合约中数据的样子,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"
            }
        }
反目相谮 2022-09-14 08:32:35

这其实是误解了。
以太坊是虚拟机,你可以理解为运行你的程序前,所有环境都是准备好了的。变量就在那里,你读取就好了。就像是一台机器一样。因为他虚拟机里存储的是最终状态。
input data只是本次交易的附加数据而已。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文