question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Issues: "failed to meet quorum" on homestead network only.

See original GitHub issue

@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 but homestead got this error.

filters :

[homestead] register listenner: [ partnerowner1 : 0xBb993EBccB72F523f068220Ed557aDAE3CdA2cd4 ]

filters {
  address: '0xdac17f958d2ee523a2206206994597c13d831ec7',
  topics: [
    '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
    null,
    '0x000000000000000000000000bb993ebccb72f523f068220ed557adae3cda2cd4'
  ]
}

and this is what I got:

Error: failed to meet quorum (method="getBlockNumber", params={}, results=[{"weight":1,"start":1603061155831,"result":11078005},{"weight":1,"start":1603061155831,"result":11082697},{"weight":1,"start":1603061156585,"result":11082697},{"weight":1,"start":1603061156585,"result":11082697}], provider="[object Object]", code=SERVER_ERROR, version=providers/5.0.12)

additional log

 {
  reason: 'failed to meet quorum',
  code: 'SERVER_ERROR',
  method: 'getBlockNumber',
  params: {},
  results: [
    { weight: 1, start: 1603061697719, result: 11078005 },
    { weight: 1, start: 1603061697719, result: 11082737 },
    { weight: 1, start: 1603061698474, result: 11082737 },
    { weight: 1, start: 1603061698474, result: 11082737 }
  ],
  provider: FallbackProvider {
    _isProvider: true,
    _events: [ [Event] ],
    _emitted: { block: 11082736 },
    formatter: Formatter { formats: [Object] },
    anyNetwork: false,
    _network: {
      name: 'homestead',
      chainId: 1,
      ensAddress: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e',
      _defaultProvider: [Function]
    },
    _maxInternalBlockNumber: 11082736,
    _lastBlockNumber: 11082736,
    _pollingInterval: 4000,
    _fastQueryDate: 1603061693718,
    providerConfigs: [ [Object], [Object], [Object], [Object] ],
    quorum: 2,
    _highestBlockNumber: 11082736,
    _internalBlockNumber: Promise { <rejected> [Circular] },
    _poller: Timeout {
      _idleTimeout: 4000,
      _idlePrev: [TimersList],
      _idleNext: [Timeout],
      _idleStart: 28586,
      _onTimeout: [Function: bound ],
      _timerArgs: undefined,
      _repeat: 4000,
      _destroyed: false,
      [Symbol(refed)]: true,
      [Symbol(kHasPrimitive)]: false,
      [Symbol(asyncId)]: 438,
      [Symbol(triggerId)]: 0
    },
    _bootstrapPoll: null,
    _fastBlockNumber: 11082736,
    _fastBlockNumberPromise: Promise { 11082736 }
  }

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

2reactions
ricmoocommented, Oct 19, 2020

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. 😃

1reaction
ricmoocommented, Oct 19, 2020

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…

Read more comments on GitHub >

github_iconTop Results From Across the Web

Failure to Achieve Quorum - FindHOALaw
If an association fails to achieve quorum, the membership meeting may be adjourned by the vote of a majority of the votes represented...
Read more >
UniswapV2SlidingOracle: failed to meet quorum - Defender
Hello everybody,. Just to say that the code ok @Bolo work well, and I have my first transaction with it. With really high...
Read more >
THE CONDOMINIUM ACT - MyFloridaLicense.com
locations and approximate dimensions. Failure of the survey to meet the standards of practice does not invalidate an otherwise validly created condominium.
Read more >
Board of Appeal and Equalization Handbook
A quorum was present at each board meeting for the previous assessment year. Failure to comply. Any city or town that fails to...
Read more >
2022 Florida Statutes - Online Sunshine
Failure of the survey to meet the standards of practice does not ... during a specified period applies only to unit owners who...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found