2018-01-28 18:05:06 +00:00
< p align = "center" >
2019-10-22 16:48:22 +00:00
< img src = "./.github/neo_color_dark_gopher.png" width = "300px" alt = "logo" >
2018-01-28 18:05:06 +00:00
< / p >
< p align = "center" >
2018-02-01 17:40:04 +00:00
< b > Go< / b > Node and SDK for the < a href = "https://neo.org" > NEO< / a > blockchain.
2018-01-28 18:05:06 +00:00
< / p >
2019-08-21 17:31:48 +00:00
< hr / >
[![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)
2019-09-17 15:12:32 +00:00
[![GoDoc ](https://godoc.org/github.com/nspcc-dev/neo-go?status.svg )](https://godoc.org/github.com/nspcc-dev/neo-go)
2019-08-21 17:31:48 +00:00
![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 )
2018-01-29 07:42:49 +00:00
2018-01-28 18:05:06 +00:00
# Overview
2018-01-31 12:50:11 +00:00
2020-04-09 16:45:46 +00:00
This project aims to be a full port of the original C# [Neo project ](https://github.com/neo-project ).
2018-02-01 17:40:04 +00:00
A complete toolkit for the NEO blockchain, including:
2019-11-27 13:11:43 +00:00
- [Consensus node ](docs/consensus.md )
2020-04-09 16:45:46 +00:00
- [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.
2018-02-01 17:40:04 +00:00
2018-03-25 14:03:38 +00:00
# Getting started
2018-01-31 11:51:02 +00:00
2018-03-25 14:03:38 +00:00
## Installation
2018-01-31 11:51:02 +00:00
2019-09-10 17:30:54 +00:00
Go: 1.12+
2019-08-26 13:58:24 +00:00
2018-03-25 14:03:38 +00:00
Install dependencies.
2018-01-28 18:37:03 +00:00
2019-08-26 13:58:24 +00:00
`neo-go` uses [GoModules ](https://github.com/golang/go/wiki/Modules ) as dependency manager:
2018-02-01 17:40:04 +00:00
2018-02-01 18:06:17 +00:00
```
make deps
```
2018-03-25 14:03:38 +00:00
## How to setup a node
2018-04-16 08:41:23 +00:00
### 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
2018-02-01 18:06:17 +00:00
Build the **neo-go** CLI:
```
make build
```
2018-02-01 17:40:04 +00:00
2018-03-25 14:03:38 +00:00
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.
2018-01-28 18:37:03 +00:00
2018-02-01 17:40:04 +00:00
```
2018-03-03 07:16:05 +00:00
make run
2018-02-01 17:40:04 +00:00
```
2018-01-28 18:37:03 +00:00
2018-03-03 07:16:05 +00:00
To run the binary directly:
2018-02-01 17:40:04 +00:00
```
2019-09-02 13:43:44 +00:00
./bin/neo-go node
2018-02-01 17:40:04 +00:00
```
2018-02-01 08:00:42 +00:00
2018-03-25 14:03:38 +00:00
By default the node will run on the `private network` , to change his:
2018-02-01 08:00:42 +00:00
2018-02-01 17:40:04 +00:00
```
2018-03-25 14:03:38 +00:00
./bin/neo-go node --mainnet
2018-02-01 17:40:04 +00:00
```
2018-02-01 08:00:42 +00:00
2018-03-25 14:03:38 +00:00
Available network flags:
- `--mainnet, -m`
- `--privnet, -p`
- `--testnet, -t`
2018-01-31 11:51:02 +00:00
2019-12-04 06:56:10 +00:00
#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.
2018-01-29 07:11:08 +00:00
# Contributing
2018-01-31 11:51:02 +00:00
2018-02-24 07:23:02 +00:00
Feel free to contribute to this project after reading the
2020-04-09 16:45:46 +00:00
[contributing guidelines ](CONTRIBUTING.md ).
2018-02-01 17:40:04 +00:00
2018-02-24 07:23:02 +00:00
Before starting to work on a certain topic, create an new issue first,
2019-02-13 18:01:10 +00:00
describing the feature/topic you are going to implement.
2018-01-29 07:11:08 +00:00
2018-01-31 10:58:19 +00:00
# Contact
2018-02-01 17:40:04 +00:00
2019-08-21 16:30:21 +00:00
- [@roman-khimov ](https://github.com/roman-khimov ) on GitHub
2020-02-11 16:06:19 +00:00
- [@fyrchik ](https://github.com/fyrchik ) on Github
2019-08-21 16:30:21 +00:00
- Reach out to us on the [NEO Discord ](https://discordapp.com/invite/R8v48YA ) channel
2018-01-31 12:50:11 +00:00
# License
2018-02-01 17:40:04 +00:00
2020-04-09 16:45:46 +00:00
- Open-source [MIT ](LICENSE.md )