Python
如何監控交易合約?
這是我到目前為止所做的。
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上的文件,但沒有對其進行測試。