Merge pull request #3526 from nspcc-dev/improve-doc

This commit is contained in:
Roman Khimov 2024-07-29 15:07:54 +03:00 committed by GitHub
commit 07da75c254
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 29 additions and 0 deletions

View file

@ -33,6 +33,13 @@ a dialect of Go rather than a complete port of the language:
it's up to the programmer whether assert can be performed successfully.
* type aliases including the built-in `any` alias are supported.
* generics are not supported, but eventually will be (at least, partially), ref. https://github.com/nspcc-dev/neo-go/issues/2376.
* `~` token is not supported
* `comparable` is not supported
* arrays (`[4]byte`) are not supported (https://github.com/nspcc-dev/neo-go/issues/3524)
* `min()` and `max()` are not supported (https://github.com/nspcc-dev/neo-go/issues/3090)
* `clear()` is not supported (https://github.com/nspcc-dev/neo-go/issues/3091)
* ranging over integers in `for` is not supported (https://github.com/nspcc-dev/neo-go/issues/3525)
* `for` loop variables are treated in pre-Go 1.22 way: a single instance is created for the whole loop
## VM API (interop layer)
Compiler translates interop function calls into Neo VM syscalls or (for custom

View file

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