Python

如何監控交易合約?

  • March 22, 2018

這是我到目前為止所做的。

import json
import sys

import web3
from web3 import Web3, IPCProvider

ADDRESS = '...' #contract address
PIPE = '\\\\.\\pipe\\geth.ipc'

w3 = Web3(IPCProvider(PIPE))
f = w3.eth.filter({
   'contract_address': ADDRESS,
   'toBlock': "latest"
})
def callback(block_hash):
   sys.stdout.write("New Block: {0}".format(block_hash))
f.watch(callback)

但是,這似乎並不僅僅監視我指定的契約,contract_address它似乎監視了所有(好像我已經完成了f = w3.eth.filter('latest')

可用於設置過濾器的欄位在JSON-RPC 文件eth_newFilter中定義。

具體來說,地址欄位只是address

地址:DATA|Array,20 字節 - (可選)合約地址或日誌應源自的地址列表。

所以過濾器應該設置為:

f = w3.eth.filter({
   'address': ADDRESS,
   'toBlock': "latest"
})

使用address而不是contract_address. 我剛剛檢查了http://web3py.readthedocs.io/en/stable/web3.eth.html#web3.eth.Eth.filter上的文件,但沒有對其進行測試。

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