almindor / etherwall

Ethereum QT5 Wallet
GNU General Public License v3.0
142 stars 59 forks source link

Error: Unknown internal filterID #69

Closed UGatgithub closed 6 years ago

UGatgithub commented 6 years ago

With Version 2.1.0 I get a new Error when starting Etherwall. ... Unknown internal filterID: Unknown internal filterID: Unknown internal filterID: Unknown internal filterID: Unknown internal filterID: IPC ready, initializing poller Connected to IPC socket Connecting to IPC socket \.\pipe\geth.ipc Geth starting C:/Program Files/Geth/geth.exe --syncmode fast --cache=1024 --maxpeers=48 --datadir C:/Users/User/AppData/Roaming/Ethereum/ --nousb Checking to see if there is an already running geth... Etherwall starting Connecting to main Etherwall server

The error disappears if I deactivate Watches under contracts.

almindor commented 6 years ago

Yes old watches are no longer compatible. You'll have to re-create them. I'm afraid I forgot to do the "cleanup" and old stored watches will cause this. It doesn't really do any harm but it makes them useless.

This is due to how their structure changed and how the new filters are implemented. If you also used the erc20 "alpha" releases any token contracts added need to be re-added.

I'm going to close this as it's a minor issue with a workaround. If you re-add your watches and still get trouble please reopen.

almindor commented 6 years ago

Actually going to keep this open and see if I can detect the old version. If not I'll have to wipe any user-made watches with some sort of dialog telling the user.

I've added a FAQ entry so people can work around.

almindor commented 6 years ago

Hmm looking at the code there might also be a getLogs problem. Can you please try the work-around and see if it worked?

almindor commented 6 years ago

Should be fixed now, will release 2.1.1 by Tuesday

almindor commented 6 years ago

Just a note on what the issue was: when you're on full node client and have a watch Etherwall requests a "history" of events to pre-fill on start.

The reason why this error didn't pop up on testing was that it only shows up if the watched contract has an event in the given timeframe (usually up to a day). I tested with thin client where history is not loaded at all due to constraints and on testnet but I didn't have a recent event to load.

Thanks for reporting.

UGatgithub commented 6 years ago

Tryed the work around and it helps for Augur but not for XENON, GOLEM and OmiseGo - seems to be connected to the contract itself in some way also then. Should be enough to delete and add the Watch again, don't need to remove and add the contract also, correct?

almindor commented 6 years ago

Hey so I was wrong in my original assumption. The issue is now fixed in master, will be released with 2.2.1 by Tuesday.

Basically here's what went wrong: When you have a watch installed you use a "filter" with geth to check for new incoming events. This part changed in order to accommodate for ERC20 "internal" filters to watch your token balances.

Etherwall also supports getting events from the "past" via the eth_getLogs call which uses the same handler to parse out the resulting data as the filter calls. I forgot to add a new param to this call that identifies the "internal" filter ID and so when this call is made and if there were any events in history to get, you'll get that error for every one of them.

This only happens if:

  1. you're running in full node mode
  2. you have at least one watch defined
  3. there are historic events for the given watch in the last 1h or so

I suspect the reason why it worked for Augur is simply that there were no events matching your filter in the hour when you ran it.

Just to be sure tho I'll post the binary here for testing before releasing so you can confirm it's fixed. You're on windows correct?

UGatgithub commented 6 years ago

Yes I am on Windows

almindor commented 6 years ago

Found out some more problems caused by this, will release an alpha build of 2.1.1 soon so you can test. I'd appreciate if you tested this ASAP so I can release it out.

almindor commented 6 years ago

Could you please test with: https://github.com/almindor/etherwall/releases/tag/v2.1.1-alpha ? Should have all the logs/events issues fixed.

Please report success or failure here ASAP. I'll try to make the official release tonight or tomorrow.

almindor commented 6 years ago

released 2.1.1 with fix. If you still get issues please reopen