logo

Go Node and SDK for the NEO blockchain.


[![codecov](https://codecov.io/gh/nspcc-dev/neo-go/branch/master/graph/badge.svg)](https://codecov.io/gh/nspcc-dev/neo-go) [![CircleCI](https://circleci.com/gh/nspcc-dev/neo-go/tree/master.svg?style=svg)](https://circleci.com/gh/nspcc-dev/neo-go/tree/master) [![Report](https://goreportcard.com/badge/github.com/nspcc-dev/neo-go)](https://goreportcard.com/report/github.com/nspcc-dev/neo-go) [![GoDoc](https://godoc.org/github.com/nspcc-dev/neo-go?status.svg)](https://godoc.org/github.com/nspcc-dev/neo-go) ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/nspcc-dev/neo-go?sort=semver) ![License](https://img.shields.io/github/license/nspcc-dev/neo-go.svg?style=popout) # Overview This project aims to be a full port of the original C# [Neo project](https://github.com/neo-project). A complete toolkit for the NEO blockchain, including: - [Consensus node](docs/consensus.md) - [RPC node & client](docs/rpc.md) - [CLI tool](docs/cli.md) - [Smart contract compiler](docs/compiler.md) - [NEO virtual machine](docs/vm.md) 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](https://github.com/nspcc-dev/neo-go/tree/master-2.x) and releases before 0.80.0 (**0.7X.Y** track). Releases starting from 0.90.0 will contain Neo 3 code. # Getting started ## Installation Go: 1.12+ Install dependencies. `neo-go` uses [GoModules](https://github.com/golang/go/wiki/Modules) as dependency manager: ``` make deps ``` ## How to setup a node ### Docker Each tagged build is built to docker hub and the `:latest` tag pointing at the latest tagged build. By default the `CMD` is set to run a node on `testnet`, so to do this simply run: ```bash docker run -d --name neo-go -p 20332:20332 -p 20333:20333 cityofzion/neo-go ``` Which will start a node on `testnet` and expose the nodes port `20333` and `20332` for the `JSON-RPC` server. ### Building Build the **neo-go** CLI: ``` make build ``` Quick start a NEO node on the private network. This requires the [neo-privatenet](https://hub.docker.com/r/cityofzion/neo-privatenet/) Docker image running on your machine. ``` make run ``` To run the binary directly: ``` ./bin/neo-go node ``` By default the node will run on the `private network`, to change his: ``` ./bin/neo-go node --mainnet ``` Available network flags: - `--mainnet, -m` - `--privnet, -p` - `--testnet, -t` #Developer notes Nodes have such features as [Prometheus](https://prometheus.io/docs/guides/go-application) and [Pprof](https://golang.org/pkg/net/http/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](CONTRIBUTING.md). Before starting to work on a certain topic, create an new issue first, describing the feature/topic you are going to implement. # Contact - [@roman-khimov](https://github.com/roman-khimov) on GitHub - [@fyrchik](https://github.com/fyrchik) on Github - Reach out to us on the [NEO Discord](https://discordapp.com/invite/R8v48YA) channel # License - Open-source [MIT](LICENSE.md)