Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request for view states method after sync is complete #16558

Closed
CryptoKiddies opened this issue Apr 24, 2018 · 9 comments
Closed

Request for view states method after sync is complete #16558

CryptoKiddies opened this issue Apr 24, 2018 · 9 comments

Comments

@CryptoKiddies
Copy link

This is a feature request. I would like to be able to view the number of known and pulled states when geth is in sync–which is a good thing–but viewing states isn't possible when eth.syncing == false. Thanks!

System information

Geth version: geth v.1.8.3
OS & Version: Ubuntu 16.04

@karalabe
Copy link
Member

I don't think that would be an easy thing to keep track of, unless we maintain a counter in each and every trie node. When I modify the state, entire subtries get replaced with new ones. Unless we know exactly how many nodes the cut-off subtrie contained, we'd need to iterate, which is prohibitively expensive.

Maintaining a counter inside the trie node might in theory be a possible solution, I'm just afraid of how much overhead that would be to add 8 bytes to every node (if we have 120M nodes on mainnet, that's 900MB of counter data).

@CryptoKiddies
Copy link
Author

I'm all for keeping the client as lightweight as possible, so I'll be fine without the feature bloat. Cheers.

@andrewheadricke
Copy link

andrewheadricke commented May 24, 2018

This would indeed be very handy.. lots of users are complaining about the super long sync times and the fact that no one knows how many state entries are needed to be downloaded is compounding the problem. Currently at 175M apparently :)

Geth is able to keep track of the state entry count while syncing, even when it performs its intermittent block updates whilst downloaded state entries. But I understand that its probably not trivial once sync completes.

Even if the node itself didn't keep a count due to resource constraints, what if nodes that just finish syncing announce their state entries count to the network, so that other downloaders at least have a rough idea. Or even better, perhaps once a node completes the sync it stores {blockNumber: 1234, stateEntryCount: 170M} and shares this information as part of its node info request.. then downloaders could find the most recently synced node and use its stateEntryCount as an approximate guess. Obviously the more recent the block the more accurate the state entry count.

Another option, what about an offline command whilst the node is not running.. to scan the DB and output a count?

@deke997
Copy link

deke997 commented Mar 21, 2019

@andrewheadricke Came here to suggest the same thing. Let's have each newly synced node announce state entry count.

I thought I was going crazy with fast sync taking this long, but after I found a lot of digging, I found a post from February 2019 which stated the synced state entry count to be ~284M. I am currently at 270M and still syncing, so I now believe I am almost there.

Even just a centralized google doc with most recent state entry counts from newly synced people would be helpful at this point 😅😅😅

@deke997
Copy link

deke997 commented Mar 21, 2019

Update: As of February 24 2019, state count was ~292M

#15616 (comment)

@deke997
Copy link

deke997 commented Mar 21, 2019

Update: My node is finally synced. Final state entry count as of 3/20/2019 is 292,494,140.

I started collecting some data during the last 20M state entries, and I made a chart and found the rate of state entry importation. Note that this is after the sync has pretty much caught up with the network in terms of block imports. I'm not sure if the rate is different while it's importing a ton of blocks in the beginning. Anyway, the chart shows 187M state entry imports per 24 hours on average. Yikes.

state_entry

Machine is a 12 core VPS with 6GB of ram and a 250GB SSD

@adamschmideg
Copy link
Contributor

See also EIP 2029

@nyetwurk
Copy link
Contributor

nyetwurk commented Jan 27, 2020

Please push this forwards; providing sync progress is impossible without some way of getting a reference from ... somewhere. Even just adding it as a response to a query (e.g. eth.syncing)
to a synced node would be useful.. it doesn't have to be part of the protocol initially. For those of us developing UIs and/or monitoring systems, just having the ability to pull it from a reference node is sufficient.

@holiman
Copy link
Contributor

holiman commented Mar 25, 2021

This will not be fixed for fast-sync, but we have much better possibilities of providing a sensible eta in snap sync.

@holiman holiman closed this as completed Mar 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants