Skip to content

Consolidation

Compare
Choose a tag to compare
@roman-khimov roman-khimov released this 19 Sep 15:09
· 7342 commits to master since this release

The first release from the new team focuses on bringing all related
development effort into one codebase, refactoring things, fixing some
long-standing bugs and adding new functionality. This release merges two
radically different development branches --- dev and master that were
present in the project (along with all associated pull requests) and also
brings in changes made to the compiler in the neo-storm project.

New features:

  • configurable storage backends supporting LevelDB, in-memory DB (for
    testing) and Redis
  • BoltDB support for storage backend
  • updated and extended interop APIs (thanks to neo-storm)

Notable behavior changes:

  • the default configuration for privnet was changed to use ports 20331 and
    20332 so that it doesn't clash with the default dockerized neo-privnet
    setups
  • the default configuration path was changed from ../config to ./config,
    at this stage it makes life a bit easier for development, later this will
    be changed to some sane default for production version
  • VM CLI now supports type inference for run parameters (you don't need to
    specify types explicitly in most of the cases) and treats operation
    parameter as mandatory if anything is passed to run

VM improvements:

  • added implementation for EQUAL, NZ, PICK, TUCK, XDROP, INVERT,
    CAT, SUBSTR, LEFT, RIGHT, UNPACK, REVERSE, REMOVE
  • expanded tests
  • better error messages for different erroneous code
  • implemented item conversions following neo-vm behavior: array to/from
    struct, bigint to/from boolean, anything to bytearray and anything to
    boolean
  • improved compatibility with neo-vm (#394)

Technical improvements:

  • switched to Go 1.12+
  • gofmt, golint (#213)
  • fixed and improved CircleCI builds
  • removed internal rfc6969 package (#285)
  • refactored util/crypto/io packages, removed a lot of duplicating code
  • updated READMEs and user-level documents
  • update Makefile with useful targets
  • dropped internal base58 implementation (#355)
  • updated default seed lists for mainnet and testnet from neo-cli

Bugs fixed:

  • a lot of compiler fixes from neo-storm
  • data access race in memory-backed storage backend (#313)
  • wrong comparison opcode emitted by compiler (#294)
  • decoding error in publish transactions (#179)
  • decoding error in invocation transactions (#173)
  • panic in state transaction decoding
  • double VM run from CLI (#96)
  • non-constant time crypto (#245)
  • APPEND pushed value on the stack and worked for bytearrays (#391)
  • reading overlapping hash blocks from the DB leading to blockchain state
    neo-go couldn't recover from (#393)
  • codegen for append() wasn't type-aware and emitted wrong code (#395)
  • node wasn't trying to reconnect to other node if connection failed (#390)
  • stricly follow handshare procedure (#396)
  • leaked connections if disconnect happened before handshake completed (#396)