【问题标题】:How to trace history of ethereum state varaibles?如何追踪以太坊状态变量的历史?
【发布时间】:2020-04-20 16:11:25
【问题描述】:

区块链最受好评的特性之一是数据的可追溯性 存储在区块链上,我认为记录是不可变的。

我正在尝试找出如何在以太坊区块链上实际追踪状态变化。 为了解释我的问题,以下面的智能合约为例

contract SimpleStorage {
    uint storedData;

    function set(uint x) public {
        storedData = x;
    }

    function get() public view returns (uint) {
        return storedData;
    }
}

在本合同中,重点是storedData 状态变量。让我们假设 值在无数次加班中发生了数次变化。 那么如何追溯这个storedData 的历史来查看在不同时间点分配给它的所有值。 我正在寻找一种实用的方法。

【问题讨论】:

    标签: blockchain ethereum


    【解决方案1】:

    您有两种方法可以潜在地跟踪状态变量随时间的变化:

    1) 合约的开发使得当所述变量被修改时,其先前的状态被添加到包含所有先前状态的数组中。 前任。检查此合同事件: https://etherscan.io/address/0x3958b4ec427f8fa24eb60f42821760e88d485f7f#events

    2) 合约已经开发,所以当状态变量被修改时,它会触发一个记录所述交易的事件。 看看 consensys 中关于事件的这篇帖子:

    https://media.consensys.net/technical-introduction-to-events-and-logs-in-ethereum-a074d65dd61e

    本文介绍了事件的三个​​用例:

    "首先,使用事件简单地从合约中获取返回值 使用 sendTransaction() 调用的函数。第二,使用事件作为 带有数据的异步触发器,可以通知观察者,例如 用户界面。三、使用事件在区块链中写入日志作为更便宜 存储形式。"

    【讨论】:

    • 谢谢,有道理。因此,似乎没有开箱即用的标准 api 可以做到这一点。
    • 我不知道直接提供变量历史的API
    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2019-12-21
    • 2021-04-25
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多