我正在考虑使用或实现一些只需要访问存储在区块链上的智能契约存储中的数据的最新版本的轻型Ethereum节点,并且只尝试下载相关的块。在这个考虑中,我正在寻找更多关于如何保存合同的记忆的信息。我设想,所有契约的初始状态--持久性变量--都存储在契约被挖掘到的同一个块中。
是否有一种方法可以知道包含事务的块号/块数据,该事务会导致此持久契约存储的状态(最近版本)发生更改?
发布于 2017-07-24 21:05:15
Ethereum契约具有运行时内存,当程序崩溃时,合同中的所有数据(例如简单计数器)、计数器、变量都将被删除。如果您使用transfer或send,您可以在日志数据中跟踪信息,但是这个函数需要付费才能这样做(它将保存在事务中)。
您可以跟踪属于某个合同的所有事务。首先,您需要创建一个带有对象的过滤器。
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_新滤波器。
在您可以通过轮询从节点队列中获取事务(入/出)之后
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getfilterchanges。
对于内部事务,您需要查看log部分。
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getlogs日志
https://ethereum.stackexchange.com/questions/22965
复制相似问题