f0fbe9f6c9
As NEO uses P256 we can use standard crypto/elliptic library for almost everything, the only exception being decompression of the Y coordinate. For some reason the standard library only supports uncompressed format in its Marshal()/Unmarshal() functions. elliptic.P256() is known to have constant-time implementation, so it fixes #245 (and the decompression using big.Int operates on public key, so nobody really cares about that part being constant-time). New decompress function is inspired by https://stackoverflow.com/questions/46283760, even though the previous one really did the same thing just in a little less obvious way. |
||
---|---|---|
.circleci | ||
.github | ||
_pkg.dev | ||
cli | ||
config | ||
docs | ||
examples | ||
pkg | ||
.dockerignore | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
LICENSE.md | ||
Makefile | ||
README.md | ||
ROADMAP.md |
Go Node and SDK for the NEO blockchain.
Overview
This project aims to be a full port of the original C# NEO project. A complete toolkit for the NEO blockchain, including:
- Consensus node (WIP)
- RPC node & client
- RPC client
- CLI tool
- Smart contract compiler
- NEO virtual machine
Getting started
Installation
Go: 1.11+
Install dependencies.
neo-go
uses GoModules 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:
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 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
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
- @roman-khimov on GitHub
- @volekerb on Github
- Reach out to us on the NEO Discord channel
License
- Open-source MIT