94672cb9cc
* added publish TX for backwards compat. * lowered the prototick for faster block syncing * print useragent on startup * added createMultiRedeemScript for genesis block generation. * building genesis block from scratch. * implemented merkle tree. * starting blockhain with generated genesis hash * Fixed bug in unspent coin state. * fixed broken tests after genesis block. * removed log line. * bumped version -> 0.34.0 |
||
---|---|---|
.github | ||
cli | ||
config | ||
pkg | ||
.gitignore | ||
circle.yml | ||
CONTRIBUTING.md | ||
Gopkg.lock | ||
Gopkg.toml | ||
LICENCE.md | ||
Makefile | ||
README.md | ||
VERSION |
neo-go
Go Node and SDK for the NEO blockchain.
Overview
This project is currently in alpha and under active development.
Project Goals
Full port of the original C# NEO project. A complete toolkit for the NEO blockchain, including:
- Full consensus node
- Full RPC node
- RPC client
- CLI tool
- Smart contract compiler
Current State
The project will exist out of the following packages:
Package | State | Developer |
---|---|---|
core | started | @anthdm |
network | started | @anthdm |
vm | started | @anthdm |
compiler | started | @anthdm |
client | started | @revett |
cli | started | @revett |
wallet | started | @pawanrawal |
Getting Started
Node
Install dependencies, this requires dep:
make deps
Build the neo-go CLI:
make build
Currently, there is a minimal subset of the NEO protocol implemented. To start experimenting make sure you a have a private net running on your machine. If you dont, take a look at docker-privnet-with-gas.
Start a NEO node:
make run
You can add multiple seeds if you want:
make run -e SEEDS="127.0.0.1:20333,127.0.01:20334"
By default the server will currently run on port 3000, for testing purposes. You can change that by setting the tcp flag:
make run -e PORT="1337"
To run the binary directly:
./bin/neo-go node -seed 127.0.0.1:20333 -tcp 1337
RPC
If you want your node to also serve JSON-RPC, you can do that by setting the following flag:
./bin/neo-go node -rpc 4000
In this case the server will accept and respond JSON-RPC on port 4000. Keep in mind that currently there is only a small subset of the JSON-RPC implemented. Feel free to make a PR with more functionality.
VM
TODO
Smart Contracts
In depth documentation about the neo-go compiler and smart contract examples can be found inside the compiler package.
Compile a smart contract
./bin/neo-go contract compile -i mycontract.go
By default the filename will be the name of your .go file with the .avm extension, the file will be located in the same directory where you called the command from. If you want another location for your compiled contract:
./bin/neo-go contract compile -i mycontract.go --out /Users/foo/bar/contract.avm
Debugging your smart contract
You can dump the opcodes generated by the compiler with the following command:
./bin/neo-go contract opdump -i mycontract.go
This will result in something like this:
INDEX OPCODE DESC
0 0x52 OpPush2
1 0xc5 OpNewArray
2 0x6b OpToAltStack
3 0x 0 OpPush0
4 0x6c OpFromAltStack
5 0x76 OpDup
6 0x6b OpToAltStack
7 0x 0 OpPush0
8 0x52 OpPush2
9 0x7a OpRoll
10 0xc4 OpSetItem
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 feauture/topic you are going to implement.
Contact
- @anthdm on Github
- @anthdm on Twitter
- Send me an email anthony@cityofzion.io
License
- Open-source MIT