Replies: 8 comments
-
That looks like quorum should certainly have been met. I’ll look into this shortly. |
Beta Was this translation helpful? Give feedback.
-
@ricmoo I found this block of code that may cause this error. |
Beta Was this translation helpful? Give feedback.
-
That should be fine. You want to use a quorum of at least 2 in production. I think there must be some logic issue on the custom blockNumber validation rules. It’s been a while since I have dug into that though, so I’ll set up some reproduction scripts later. |
Beta Was this translation helpful? Give feedback.
-
at least it fixed my issue, the error hurt my logs. |
Beta Was this translation helpful? Give feedback.
-
No worries, I’ll look into it. I am planing to re-factor the FallbackProvider overall. Reducing it to 1 will eliminate the error in you code, but reduces the security and resilience. If any backend is out of sync or has been compromised, your app may behave incorrectly... |
Beta Was this translation helpful? Give feedback.
-
I have no choice in this case until have your fix. Actually may I increase it more than 3 or something else? Honestly I don't understand what quorum does there. If you have time please lighten me up, thanks! |
Beta Was this translation helpful? Give feedback.
-
Increasing it beyond the sum of providers / 2 could start to impact its quorum error rate. Basically, the goal of the FallbackProvider is to create a provider with many backends. The defaultProvider creates a FallbackProvider backed by multiple third-party backends (such as INFURA and Alchemy). But since using a third-party service means you must trust that service, multiple backends are queried at random, to ensure a quorum of them agree. That way if a backend is lying (through malice or being out-of-sync) it will be “out-voted” by honest, synced nodes. If a quorum is not reached initially, additional nodes are queries until a quorum is reached. So, if you use eth_call to lookup an ENS name and the first node says address A and the second address B, then a third will be queried. If it answers with address B, the default quorum has been reached and address B is returned. So, but specifying a quorum of 1, you are saying you will accept any answer that comes back and that you trust any backend. If you do this, I recommend pulling the CloudflareProvider out of the list of providers as it is regularly out-of-sync. I might make this the default behaviour; if a person is selecting a quorum of 1, remove Cloudflare. I have had relatively issue with any of the other third-party services. Hope that helps a bit. :) |
Beta Was this translation helpful? Give feedback.
-
thanks for your explaination @ricmoo , very clear! esProvider = ProviderInstance.Providersconfigs.find(provider => provider.provider.apiKey === ETHERSCAN_API_KEY); It was broken my code once since I ran version 4 and apiKey was a randomKey instead of mine, then the function getHistory stop working (esProvider === null) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
@ricmoo I'm still having this issue after fresh install version 5.0.12.
It's no issue happens if I add an event listener on
rinkeby
network buthomestead
got this error.filters :
and this is what I got:
additional log
Beta Was this translation helpful? Give feedback.
All reactions