Go Node and SDK for the NEO blockchain
Find a file
Roman Khimov 4a9ca253d3
Merge pull request #1801 from nspcc-dev/fix/testrace
consensus/test: add missing `t.Cleanup()`
2021-03-03 13:29:20 +03:00
.circleci *: add go 1.16 support 2021-03-02 14:04:35 +03:00
.docker docker: fix privnet node config and compose file 2020-07-24 16:30:38 +03:00
.github *: add go 1.16 support 2021-03-02 14:04:35 +03:00
cli Merge pull request #1744 from nspcc-dev/fix/nativecall 2021-03-02 15:28:00 +03:00
config config: add default notary configuration 2021-02-16 13:58:25 +03:00
docs rpc: add getblockheadercount call 2021-02-07 23:18:09 +03:00
examples examples: add onNEP17Payment invocation 2021-02-11 17:51:44 +03:00
internal rpc: implement getnativecontracts RPC 2021-02-11 12:27:43 +03:00
pkg consensus/test: add missing t.Cleanup() 2021-03-03 13:14:25 +03:00
scripts scripts: ignore ledger items while comparing dumps 2021-02-12 23:48:26 +03:00
.dockerignore Fix build node and docker-image 2019-08-26 19:32:09 +03:00
.gitignore gitignore: don't ignore blockchain(s) directories 2020-05-26 19:55:35 +03:00
.gitmodules vm: update json tests to neo3 branch 2020-04-17 11:46:31 +03:00
.travis.yml drop support for Go 1.12 2020-08-06 16:29:55 +03:00
CHANGELOG.md Release 0.93.0 2021-02-12 23:59:42 +03:00
CONTRIBUTING.md *: move all packages from CityOfZion to nspcc-dev 2020-03-03 17:21:42 +03:00
Dockerfile use -trimpath build flag for more reproducible builds 2020-08-06 16:32:36 +03:00
go.mod *: add go 1.16 support 2021-03-02 14:04:35 +03:00
go.sum *: add go 1.16 support 2021-03-02 14:04:35 +03:00
LICENSE.md LICENSE.md: rename from LICENCE.md 2019-08-20 18:47:08 +03:00
Makefile Makefile: remove push-to-registry target 2021-02-25 18:41:01 +03:00
neo-go.service.template service file templating 2019-11-13 15:05:13 +03:00
README.md *: drop go 1.13 support 2021-03-01 14:56:49 +03:00
ROADMAP.md ROADMAP: update for 0.94.0 2021-02-15 12:15:20 +03:00

logo

Go Node and SDK for the NEO blockchain.


codecov CircleCI Report GoDoc GitHub release (latest SemVer) License

Overview

This project aims to be a full port of the original C# Neo project. A complete toolkit for the NEO blockchain, including:

This branch (master) is under active development now (read: won't work out of the box) and aims to be compatible with Neo 3. For the current stable version compatible with Neo 2 please refer to the master-2.x branch and releases before 0.80.0 (0.7X.Y track). Releases starting from 0.90.0 contain Neo 3 code (0.90.0 being compatible with Neo 3 preview2).

Getting started

Installation

Go: 1.14+

Install dependencies.

neo-go uses GoModules as dependency manager:

make deps

How to setup a node

Docker

Each tagged build is published to docker hub and the :latest tag pointing at the latest tagged master build.

By default the CMD is set to run a node on privnet, so to do this simply run:

docker run -d --name neo-go -p 20332:20332 -p 20331:20331 nspccdev/neo-go

Which will start a node on privnet and expose the nodes port 20332 and 20331 for the JSON-RPC server.

Building

Build the neo-go CLI:

make build

Running

Quick start a NEO node on the private network. To build and run the private network image locally, use:

make env_image
make env_up

To start a NEO node on the private network:

make run

To run the binary directly:

./bin/neo-go node

By default the node will run on the private network, to change this:

./bin/neo-go node --mainnet

Available network flags:

  • --mainnet, -m
  • --privnet, -p
  • --testnet, -t

Importing mainnet/testnet dump files

If you want to jump-start your mainnet or testnet node with chain archives provided by NGD follow these instructions (when they'd be available for 3.0 networks):

$ wget .../chain.acc.zip # chain dump file
$ unzip chain.acc.zip
$ ./bin/neo-go db restore -m -i chain.acc # for testnet use '-t' flag instead of '-m'

The process differs from the C# node in that block importing is a separate mode, after it ends the node can be started normally.

Smart contract development

Please refer to neo-go smart contract development workshop that shows some simple contracts that can be compiled/deployed/run using neo-go compiler, SDK and private network. For details on how Go code is translated to Neo VM bytecode and what you can and can not do in smart contract please refer to the compiler documentation.

Developer notes

Nodes have such features as Prometheus and Pprof in order to have additional information about them for debugging.

How to configure Prometheus or Pprof: In config/protocol.*.yml there is

  Prometheus:
    Enabled: true
    Port: 2112

where you can switch on/off and define port. Prometheus is enabled and Pprof is disabled by default.

Contributing

Feel free to contribute to this project after reading the contributing guidelines.

Before starting to work on a certain topic, create an new issue first, describing the feature/topic you are going to implement.

Contact

License

  • Open-source MIT