mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-02-20 15:58:56 +00:00
* Add state root to node steps path register `RPath` or `XPath` why: Typically, the first node in the path register is the state root. There are occasions, when the path register is empty (i.e. there are no node references) which typically applies to a zero node key. In order to find the next node key greater than zero, the state root is is needed which is now part of the `RPath` or `XPath` data types. * Extracted hexary tree debugging functions into separate files * Update empty path fringe case for left/right node neighbour why: When starting at zero, the node steps path register would be empty. So will any path that is before the fist non-zero link of a state root (if it is a `Branch` node.) The `hexaryNearbyRight()` or `hexaryNearbyLeft()` function required a non-zero node steps path register. Now the first node is to be advanced starting at the first state root link if necessary. * Simplify/reorg neighbour node finder why: There was too mach code repetition for the cases * persistent or in-memory database * left or right move details: Most algorithms apply for persistent and in-memory alike. Using templates/generic functions most of these algorithms can be stated in a unified way * Update storage slots snap/1 handler details: Minor changes to be more debugging friendly. * Fix detection of full database for snap sync * Docu: Snap sync test & debugging scenario
Snap sync test & debugging scenario =================================== Start snap/1 server ------------------- # Enter nimbus directory for snap/1 protocol server. cd server # Tell nimbus to stop full sync after 2 mio blocks. echo 2000000 > full-limit.txt # Tell nimbus to use this predefined key ID echo 123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0 > full-id.key ./build/nimbus \ --tcp-port:30319 --nat=None --sync-mode=full \ --protocols=snap --discovery=none \ --net-key=./full-id.key \ --sync-ctrl-file=./full-limit.txt \ --log-level:TRACE # Wait for several hours until enough blocks have been downloaded so that # snap sync data are available. The full 2 mio blocks are available if the # log ticker shows something like # # INF 2023-03-17 [..] Sync statistics (suspended) topics="full-tick" [..] persistent=#2000080 [..] # # where the persistent=#2000080 field might vary Start snap/1 client ------------------- # Note: When the snap/1 server has enough blocks, the client can be started. # Enter nimbus directory for snap/1 protocol server cd client # Tell nimbus to use this pivot block number. This number must be smaller # than the 2000000 written into the file full-limit.txt above. echo 600000 > snap/snap-update.txt. # Tell nimbus to use this hard coded peer enode. echo enode://192d7e7a302bd4ff27f48d7852621e0d3cb863a6dd67dd44e0314a25a3aa866837f0d2460b4444dc66e7b7a2cd56a2de1c31b2a2ba4e23549bf3ba3b0c4f2eb5@127.0.0.1:30319 > snap/full-servers.txt ./build/nimbus \ --tcp-port:30102 --nat=None --sync-mode=snap \ --protocols=none --discovery=none \ --static-peers-file=./full-servers.txt \ --sync-ctrl-file=./snap-update.txt \ --log-level:TRACE Modifications while the programs are syncing -------------------------------------------- # Increasing the number in the files full/full-limit.txt or # snap/snap-update.txt will be recognised while running. Decreasing # or removing will be ignored.