Skip to content

Commit

Permalink
Merge pull request #3526 from nspcc-dev/improve-doc
Browse files Browse the repository at this point in the history
  • Loading branch information
roman-khimov authored Jul 29, 2024
2 parents 54fd70f + 5d29a3f commit 07da75c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
7 changes: 7 additions & 0 deletions docs/compiler.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
22 changes: 22 additions & 0 deletions docs/node-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

0 comments on commit 07da75c

Please sign in to comment.