From 5d29a3fdabb5f643b843e874fd8ffd8872ad01aa Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Fri, 26 Jul 2024 16:42:24 +0300 Subject: [PATCH] docs: document DB incompatibilities, fix #3456 Signed-off-by: Roman Khimov --- docs/node-configuration.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/node-configuration.md b/docs/node-configuration.md index 2e635ecef..7ef4466d7 100644 --- a/docs/node-configuration.md +++ b/docs/node-configuration.md @@ -403,3 +403,25 @@ where: Note that `Transaction` is a NeoGo extension that isn't supported by the NeoC# node and must be disabled on the public Neo N3 networks. + +## DB compatibility + +Real networks with large number of blocks require a substantial amount of time +to synchronize. When operating a number of node instances with similar +configurations you may want to save some resources by performing synchronization +on one node and then copying the DB over to other instances. In general, this +can be done and this is supported, but NeoGo has a lot of options that may +affect this: +- any differences in `ProtocolConfiguration` section make databases + incompatible, except for `Max*` settings, `MemPoolSize`, + `P2PNotaryRequestPayloadPoolSize`, `SeedList`, `TimePerBlock`. + Protocol configuration is expected to be the same on all nodes of the same + network, so don't touch it unless you know what you're doing. +- DB types (Level/Bolt) must be the same +- `GarbageCollectionPeriod` must be the same +- `KeepOnlyLatestState` must be the same +- `RemoveUntraceableBlocks` must be the same + +BotlDB is also known to be incompatible between machines with different +endianness. Nothing is known for LevelDB wrt this, so it's not recommended +to copy it this way too.