I am trying to filter Transfer events from my local ethereum node using web3 py. I have created a venv in visual studio code. My code is as follows:
def decodeLogswithfilter(t1, t2, abi1, addr):
mycontract = geth.eth.contract(address=addr, abi=abi1)
filter = mycontract.eventFilter(
'Transfer', {'fromBlock': t1, 'toBlock': t2})
eventlist = filter.get_all_entries
print(eventlist)
decodeLogswithfilter(start, ending_block,
abi['result'], geth.toChecksumAddress(current_addr))
I have also tried using createFilter as well but it gives me the same error that Contract object has no attribute eventFilter.
Traceback (most recent call last):
File "/mnt/ssd/erc721/queryBlockchain.py", line 150, in <module>
abi['result'], geth.toChecksumAddress(current_addr))
File "/mnt/ssd/erc721/queryBlockchain.py", line 71, in decodeLogswithfilter
filter = mycontract.eventFilter(
AttributeError: 'Contract' object has no attribute 'eventFilter'
I have also tried upgrading my web3 package as suggested online, but the error didn't resolve.
Best Answer
Replace
with
assuming Transfer is the eventname in solidity, This is for web3==5.5.1 version.