Json-Rpc

為什麼不能使用過濾器(eth_newFilter)追溯擷取事件?

  • October 30, 2016

eth_newFilter在一組交易之前和之後放置了相同的過濾器。在事務擷取 0 個事件後安裝的那個。事件是如何運作的?除了 ,還有其他方法可以追溯地捕捉事件eth_getLogs嗎?

from ethjsonrpc import EthJsonRpc
c = EthJsonRpc('127.0.0.1', 8545)
ADDRESS = "0xdb1154368ba2645e6c090f3d1f3ddd5c8c1f8008"
params = {
   "fromBlock": "0x01",
   "address": ADDRESS
}
before = c.eth_newFilter(params)
for i in range(100):
   tx = c.call_with_transaction(c.eth_coinbase(), ADDRESS, 'setValue(uint32)', [i])
   receipt = c.eth_getTransactionReceipt(tx)
after = c.eth_newFilter(params)

print len(c.eth_getFilterLogs(before)) // 100
print len(c.eth_getFilterLogs(after)) // 0
print len(c.eth_getLogs(params)) // 100

我正在使用 testrpc 作為區塊鏈客戶端。

不幸的是,TestRPC 不支持過去的事件。您可以嘗試使用此處詳述的私有 Geth 鏈。

引用自:https://ethereum.stackexchange.com/questions/8065