Я пытаюсь отфильтровать события передачи от моего локального узла Ethereum, используя web3 py. Я получаю удаленный доступ к своему локальному ethereum узлу с помощью teamviewer, и он также работает и полностью синхронизируется Мой код выглядит следующим образом:
def decodeLogswithfilter(t1, t2, abi1, addr):
mycontract = geth.eth.contract(address=addr, abi=abi1)
filter = mycontract.events.Transfer.createFilter(fromBlock=t1, toBlock=t2 )
eventlist = filter.get_all_entries()
print(eventlist)
decodeLogswithfilter(start, ending_block, abi['result'], geth.toChecksumAddress(current_addr))
Каждый раз, когда я запускал свой код после внесения изменений в код по ссылке, приведенной выше, терминал показывал следующую ошибку в Ubuntu, когда я проверял состояние eth.syncing.
Error: write unix @->/mnt/ssd/.ethereum/geth.ipc: use of closed network connection
at web3.js:3143:20
at web3.js:6347:15
at get (web3.js:6247:38)
at <unknown>
Принимая во внимание, что код Visual Studio, где выполнялся мой код, показывал ошибку, подобную этой:
Traceback (most recent call last): File "/home/ethereumpc1/.local/lib/python3.6/site-packages/web3/providers/ipc.py", line 239, in make_request raw_response += sock.recv(4096) socket.timeout: timed out.
Есть идеи, что вызывает остановку узла и как заставить фильтр работать успешно?
Кроме того, если фильтр успешно работает, то журналы, возвращаемые им, позволяют предположить, что адрес A для событий передачи будет всеми журналами события передачи на и с этого адреса или только с?