nimbus-eth1/nimbus/sync/snap
Jordan Hrycaj 15d0ccb39c
Prepare snap server client test scenario cont4 (#1507)
* 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
2023-03-17 14:46:50 +00:00
..
worker Prepare snap server client test scenario cont4 (#1507) 2023-03-17 14:46:50 +00:00
README.txt Prepare snap server client test scenario cont4 (#1507) 2023-03-17 14:46:50 +00:00
constants.nim Silence compiler gossip after nim upgrade (#1454) 2023-01-30 22:10:23 +00:00
range_desc.nim Snap sync extractor and sub range proofs cont1 (#1468) 2023-02-15 10:14:40 +00:00
update_beacon_header.nim Prepare snap server client test scenario cont2 (#1487) 2023-03-07 14:23:22 +00:00
worker.nim Prepare snap server client test scenario cont4 (#1507) 2023-03-17 14:46:50 +00:00
worker_desc.nim Prepare snap server client test scenario cont4 (#1507) 2023-03-17 14:46:50 +00:00

README.txt

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.