Giter Club home page Giter Club logo

nkn's Introduction

NKN

NKN Full Node

Official Go implementation of NKN full node.


GitHub license Go Report Card Build Status PRs Welcome

Dev Status: V2 line, Production (Stable and Feature-Complete)



NKN, short for New Kind of Network, is a project aiming to rebuild the Internet that will be truly open, decentralized, dynamic, safe, shared and owned by the community.

Official website: https://nkn.org/

Note: This is the official full node implementation of the NKN protocol, which relays data for clients and earn mining rewards. For client implementation which can send and receive data, please refer to:

Introduction

The core of the NKN network consists of many connected nodes distributed globally. Every node is only connected to and aware of a few other nodes called neighbors. Packets can be transmitted from any node to any other node in an efficient and verifiable route. Data can be sent to any clients without public or static IP address using their permanent NKN address with end-to-end encryption. The network stack of NKN network is open source at another repo called nnet that can be used to build other decentralized/distributed systems.

The relay workload can be verified using our Proof of Relay (PoR) algorithm. A small and fixed portion of the packets will be randomly selected as proof. The random selection can be verified and cannot be predicted or controlled. Proof will be sent to other nodes for payment and rewards.

A node in our network is both relayer and consensus participant. Consensus among massive nodes can be reached efficiently by only communicating with neighbors using our consensus algorithm based on Cellular Automata. Consensus is reached for every block to prevent fork.

More details can be found in our wiki.

Technical Highlights

  • Transmit any data to any node/client without any centralized server.
  • Proof-of-Relay, a useful proof of work: mining is relaying data.
  • Extremely scalable consensus algorithm (billions of nodes within seconds).
  • Strong consistency rather than eventual consistency.
  • Dynamic, large-scale network.
  • Verifiable topology and routes.
  • Secure address scheme with public key embedded.

Use pre-built binaries

You just need to download and decompress the correct version matching your OS and architecture from github releases.

Now you can jump to configuration for how to configure and run a node.

Use pre-built Docker image

Prerequirement: Have working docker software installed. For help with that visit official docker docs

We host latest Docker image (the same as you build with docker) on our official Docker Hub account. You can get it by

$ docker pull nknorg/nkn

Now you can jump to configuration for how to configure and run a node.

Building using Docker

Prerequirement: Have working docker software installed. For help with that visit official docker docs

Build and tag Docker image

$ docker build -f docker/Dockerfile -t nknorg/nkn .

This command should be run once every time you update the code base.

Building from source

To build from source, you need a properly configured Go environment (lookup the required version within go.mod, and see Go Official Installation Documentation for install instructions).

Build the source code with make

$ git clone https://github.com/nknorg/nkn.git
$ cd nkn
$ make

Run Unit Tests

# run all tests
$ go test -v ./...

# run only specific tests
go test -v ./chain/store

After building is successful, you should see two executables:

  • nknd: the nkn node program
  • nknc: command line tool for nkn node control

Now you can see configuration for how to configure and run a node.

You can also build binaries for other architectures by executing make all. The resulting binaries are stored in build directory.

Configuration

When starting a NKN node (i.e. running nknd), it will reads a few configurable files: config.json for configuration, wallet.json for wallet, and certs/* for certificates. Additionally, it will read directory web for web GUI interface static assets. By default nknd assumes they are located in the current working directory.

For Docker, a directory containing config.json, wallet.json (if exists) and certs/ should be mapped to /nkn/data directory in the container. If not provided, the default config and certs will be copied to /nkn/data/, and a wallet and random password will be generated and saved to /nkn/data/ on nknd launch.

The path of config file, wallet file, database directory and log directory can be specified by passing arguments to nknd or in config.json, run nknd --help for more information.

config.json:

We provide a few sample config.json:

  • config.mainnet.json: join the mainnet
  • config.local.json: create and join a private chain on your localhost

You can copy the one you want to config.json or write your own.

For convenience, we ship a copy of config.mainnet.json in release version (as default.json) and in docker image (under /nkn/). The docker container will copy this default one to /nkn/data/config.json if not exists on nknd launch.

If config file is not provided, node will join the mainnet by default.

wallet.json:

Before starting the node, you need to create a new wallet first. Wallet information will be saved at wallet.json and it's encrypted with the password you provided when creating the wallet. So please make sure you pick a strong password and remember it!

$ ./nknc wallet -c
Password:
Re-enter Password:
Address                                Public Key
-------                                ----------
NKNRQxosmUixL8bvLAS5G79m1XNx3YqPsFPW   35db285ea2f91499164cd3e19203ab5e525df6216d1eba3ac6bcef00503407ce

[IMPORTANT] Each node needs to use a unique wallet. If you use share wallet among multiple nodes, only one of them will be able to join the network!

If you are using Docker, it should be docker run -it -v ${PWD}:/nkn/data nknorg/nkn nknc wallet -c instead, assuming you want to store the wallet.json in your current working directory. If you want it to be saved to another directory, you need to change ${PWD} to that directory.

The docker container will create a wallet saved to /nkn/data/wallet.json and a random password saved to /nkn/data/wallet.pswd if not exists on nknd launch.

certs/

nknd uses Let's Encrypt to apply and renew TLS certificate and put in into cert/ directory. By default nknd will generate certificate with x-x-x-x.ipv4.staticdns{1,2,3}.io domain name which x-x-x-x is your ipv4 address, replace dot with dash. The default cert domain is deprecated and will be removed in the future version. Please provide your own domain or cert if you need to use tls.

If you would like to use your own domain name, simply set CertDomainName with your domain name in config.json, nknd will automatically apply or renew certificate from Let's Encrypt and deploy it.

If you already have certificate and want to use it in nknd, you can put it in the certs directory then set HttpsJsonDomain HttpWssDomain with your domain name, HttpsJsonCert HttpsJsonKey HttpWssCert HttpWssKey with your certificate full chain file and private key file.

Data and Logs

After nknd starts, it will creates two directories: ChainDB to store blockchain data, and Log to store logs. By default nknd will creates these directories in the current working directory, but it can be changed by passing --chaindb and --log arguments to nknd or specify in config.json.

Now you can join the mainnet or create a private chain.

Join the MainNet

[IMPORTANT] In order to join the MainNet, you need to have a public IP address, or set up port forwarding on your router properly so that other people can establish connection to you.

If you have done the previous steps correctly (config.json, create wallet, public IP or port forwarding), joining the MainNet is as simple as running:

$ ./nknd

If you are using Docker then you should run the following command instead:

$ docker run -p 30001-30005:30001-30005 -v ${PWD}:/nkn/data --name nkn --rm -it nknorg/nkn

If you would like to enable web GUI interface from outside of the container, you need to replace -p 30001-30005:30001-30005 with -p 30000-30005:30000-30005.

If you get an error saying docker: Error response from daemon: Conflict. The container name "/nkn" is already in use by container ..., you should run docker rm nkn first to remove the old container.

If everything goes well, you should be part of the MainNet after a few minutes! You can query your wallet balance (which includes the NKN token you've mined) by:

$ ./nknc wallet -l balance

or if you are using Docker:

$ docker exec -it nkn nknc wallet -l balance

If there is a problem, you may want to check if any of the previous steps went wrong. If the problem still persists, create an issue or ask us in our Discord group.

[Recommended] Using Beneficiary Address

By default, token mined by your node will be sent to the wallet your node is using, which is NOT as safe as you might think. The recommended way is to use another cold wallet (that is saved and backed up well) to store your token. You can use your code wallet address as beneficiaryAddr in config.json such that token mined by your node will be sent directly to that beneficiary address. This is safer and more convenient because: 1. even if your node is hacked, or your node wallet is leaked, you will not lose any token; 2. if you run multiple nodes, it's the only way that all their mining rewards will go to the same address.

NAT traversal and port forwarding

By default, nknd will try to detect if your node is behind a router and if your router supports UPnP or NAT-PMP protocol, and if success, it will try to set up port forwarding automatically. You can add --no-nat flag when starting nknd OR add "NAT": false in config.json to disable automatic port forwarding. If your router does not support such protocol, you have to setup port forwarding on your router for port 30001 as well as all other ports specified in config.json (30001-30005 by default), otherwise other nodes cannot establish connections to you and you will NOT be able to earn mining rewards even though your node can still run and sync blocks.

When setting up port forwarding, public port needs to be the same as private port mapped to your node. For example, you should map port 30001 on your router's public IP address to port 30001 on your node's internal IP address.

The specific steps to setup port forwarding depends on your router. But in general, you need to log in to the admin interface of your router (typically in a web browser), then navigate to the port forwarding section, and create several mappings, one for each port. One of the easiest way to find out how to setup port forwarding on your router is to search "how to setup port forwarding" + your router model or name online.

Contributing

Can I submit a bug, suggestion or feature request?

Yes. Please open an issue for that.

Can I contribute patches to NKN project?

Yes, we appreciate your help! To make contributions, please fork the repo, push your changes to the forked repo with signed-off commits, and open a pull request here.

Please follow our Golang Style Guide for coding style.

Please sign off your commit. This means adding a line "Signed-off-by: Name " at the end of each commit, indicating that you wrote the code and have the right to pass it on as an open source patch. This can be done automatically by adding -s when committing:

git commit -s

Community

nkn's People

Contributors

admirabilis avatar alverlyu avatar ansrivas avatar arbio5zt avatar barbapapait avatar bettermanbao avatar billfort avatar bufrr avatar chickenpie347 avatar d5c5ceb0 avatar dependabot[bot] avatar dreamfly281 avatar gdmmx avatar iheron avatar laizy avatar liuhangyu avatar noelbright avatar omani avatar realjohnsmith avatar sharpbear avatar superjinqing avatar tanziwen avatar tdcqzd avatar trueinsider avatar wizardofcodez avatar xizho10 avatar yilunzhang avatar zhengq1 avatar zhouziyan avatar zhtangsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nkn's Issues

./nknc does not transfer - INVALID METHOD (-42001)

Description of the issue

nknc does not transfer - INVALID METHOD (-42001)
Log: [WARN ] GID 910315, HTTP JSON RPC Handle - No function to call for sendtoaddress

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • Linux
  • go version go1.10.3 linux/amd64
  • 52c8354

Expected behaviour

should receive tx id

Actual behaviour

{
        "error": {
                "code": -42001,
                "message": "INVALID METHOD"
        },
        "id": 0,
        "jsonrpc": "2.0"
}

Steps to reproduce

./nknc asset -t -p MYPASSWORD -a 4945ca009174097e6614d306b66e1f9cb1fce586cb857729be9e1c5cc04c9c02 -v 10 --to RECEIVINGADDRESS

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.

crash bug found when setup the testbed with the script

X@bogon:/projects/src/github.com/nknorg/nkn$ make all
go build -ldflags "-X github.com/nknorg/nkn/util/config.Version=5b4e8-dirty" nknd.go
go build -ldflags "-X github.com/nknorg/nkn/cli/common.Version=5b4e8-dirty" nknc.go
yanbo@bogon:
/projects/src/github.com/nknorg/nkn$ ./test/create_testbed.sh 10 test
Password:Re-enter Password:Address Public Key


ATajt3w8ZZLHcmaZSNYtutaUafA5H1MAKD 0243cdabbe0f4a5c8d32d8454b94f6fa28a063e5f8735848ef2a49fed297c1f80b
Password:Re-enter Password:Address Public Key


AbgztA5p2pHuKRZBYz2LZ8b3jC7fwojF9N 021b83f66011450c186e2938def975e34dba43f92ccdf6f37d7f12465a28a7e853
Password:Re-enter Password:Address Public Key


AUyTtKhzzAX2irqPQekYc17xpxVb7Ek3es 0288ea16ee0338e3e71a91c62bd07cd026c64bed548aab121eb7c34c032d8edbda
Password:Re-enter Password:Address Public Key


ALf75ALXrrfLkQhsRFKYQB433tw2ivQzd6 0399977060ce5a8d600eee9ccfd26cece0689cba0c18d11b183c19bfa873ecd2f8
Password:Re-enter Password:Address Public Key


AR4uBASuvu24WYtBATB2KR4kfRLvcHu8KL 02a0d73f5c2c712ebcaae6fe3b88f6d6e9a566893b183a7535eea2989a078b6aab
Password:Re-enter Password:Address Public Key


ASLhN1BctFz2E32zPQngJKhLS5QJ5DzCnG 03806a48de343cf59a212067b23c4c1ed209e6c0f695c0e0864409d61ba7fd5cf1
Password:Re-enter Password:Address Public Key


AQ7TYkeyNdzU6LqtkejWPgLyG8YPdY5tHR 028eed00d9e286d9aed67379c48c2cae89373e2b7fe0b72e3a81fb2ddffa1751bc
Password:Re-enter Password:panic: crypto/cipher: input not full blocks

goroutine 1 [running]:
crypto/cipher.(*cbcEncrypter).CryptBlocks(0xc420017220, 0xc4200cbb80, 0x1f, 0x1f, 0xc4200cba61, 0x1f, 0x1f)
/usr/local/Cellar/go/1.8/libexec/src/crypto/cipher/cbc.go:57 +0x2f7
github.com/nknorg/nkn/crypto.AesEncrypt(0xc4200cba61, 0x1f, 0x1f, 0xc4200cb5a0, 0x20, 0x20, 0xc420013da0, 0x10, 0x10, 0x15486e0, ...)
/Users/yanbo/projects/src/github.com/nknorg/nkn/crypto/helper.go:33 +0x1cb
github.com/nknorg/nkn/wallet.(*WalletImpl).CreateAccount(0xc420068540, 0x0, 0x0, 0x0, 0xc420013da0, 0x10)
/Users/yanbo/projects/src/github.com/nknorg/nkn/wallet/wallet.go:182 +0xdf
github.com/nknorg/nkn/wallet.NewWallet(0x139a465, 0xa, 0xc420013a70, 0x7, 0x8, 0x100cd01, 0x1399db7, 0x139937a, 0x1)
/Users/yanbo/projects/src/github.com/nknorg/nkn/wallet/wallet.go:89 +0x481
github.com/nknorg/nkn/cli/wallet.walletAction(0xc4200d6280, 0x0, 0xc4200d6280)
/Users/yanbo/projects/src/github.com/nknorg/nkn/cli/wallet/wallet.go:74 +0x26e
github.com/nknorg/nkn/vendor/github.com/urfave/cli.HandleAction(0x132a8a0, 0x13ac650, 0xc4200d6280, 0xc420068400, 0x0)
/Users/yanbo/projects/src/github.com/nknorg/nkn/vendor/github.com/urfave/cli/app.go:485 +0xd4
github.com/nknorg/nkn/vendor/github.com/urfave/cli.Command.Run(0x1398f86, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x139e60d, 0x15, 0x0, ...)
/Users/yanbo/projects/src/github.com/nknorg/nkn/vendor/github.com/urfave/cli/command.go:207 +0xb72
github.com/nknorg/nkn/vendor/github.com/urfave/cli.(*App).Run(0xc4200884e0, 0xc420010120, 0x3, 0x3, 0x0, 0x0)
/Users/yanbo/projects/src/github.com/nknorg/nkn/vendor/github.com/urfave/cli/app.go:250 +0x7d0
main.main()
/Users/yanbo/projects/src/github.com/nknorg/nkn/nknc.go:42 +0x53a

Parse confidential via command-line.

Description of the issue

Describe the issue you are experiencing.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS ubuntu 16.04
  • Go version 1.10
  • Release tag/commit of the code 7926840

Expected behaviour

What should happen?
nknd/nknc seems only accept password via interact with human, could we have an option to parse it from command-line, i.e. nknd --password xxxxxxxx. It will be much convenient to start/restart nknd from scratch when using docker.

Actual behaviour

What is actually happening?
Currently, user must enter their confidential from command-line.

Steps to reproduce

  1. Provide detailed steps
    Run command nknd
  2. how to reproduce this issue
    Run command nknd

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.

Do not exit if NAT encounters an error during setup

Description of the issue

Currently if NAT router is discovered and an error is got halfway when setting up port map, nknd will exit. We should change it to not exiting (but just abort setting up port map).

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
  • Go version
  • Release tag/commit of the code

Expected behaviour

What should happen?

Actual behaviour

What is actually happening?

Steps to reproduce

  1. Provide detailed steps
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.

Show start time in nknc info

It'd very useful (for debugging) if nknc info shows when nknd started

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Use protobuffer instead of JSON for websocket msg for binary data

Description of the issue

Currently all websocket messages are encoded in JSON, which does not support transmitting binary data natively. Encode binary data with base64 introduces both CPU and bandwidth overhead. This can be avoided by sending binary data directly through websocket. The easy and backward/forward/cross-platform compatible way of doing it is to use protobuffer to encode/decode message.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Development will be based on v0.9 branch

The new version with balance model is now ready at branch v0.9. Future development work should be based on this branch except bug fix until merged into master.

Add log rotation function

Description of the issue

Most of unix daemons have a log rotation function by receiving HUP unix signal. Usially, it is not necessary to restart the whole daemon if I want only to rotate the log file, for example using logrotate.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Expected behaviour

What should happen? When receive HUP unix signal, nknd will close current log file and start new one.

Actual behaviour

What is actually happening? Nothing.

[Raspberry pi] node crashes and loses sync after "Get block header error: leveldb: not found"

Description of the issue

My local rasperry pi gets regularly out of sync with the testnet. After that it shows following warnings and doesn't participate to the network at all:

AddVoteForBlock: block: 4e5c54f4b4805ecd3f0c1a95f4ef7f168889bf115318d10df456453fbc654885 doesn't exist, cache vote only

Problem starts round about 15 Minutes after starting the node with a fresh Chain. Node crashes with:

2018/09/13 11:04:01.669527 [WARN ] GID 12633, receive block which height is invalid, consensus height: 44578, received block height: 44579, hash: 452da64319ad18d55e986cd4134f09f78581d453dbb2b142cdd8ba2fad8636c3
2018/09/13 11:04:02.900955 [ERROR] GID 12817, Get block header error: leveldb: not found
2018/09/13 11:04:02.906263 [ERROR] GID 12740, state is different with neighbors, current voting height: 44580, neighbor height: 44581 (9/16), exits.

When it gets restarted it is out of sync.

Hope that helps!

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

Raspbian stretch lite Kernel version 4.14
1.11 arm
v0.3.6-alpha-dirty

Expected behaviour

Not getting out of sync.

Actual behaviour

Described above.

Steps to reproduce

  1. Provide detailed steps
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

For more information you can reach me on Discord (ChrisT).

Bug in RPC name service

Description of the issue

Registering and/or resolving a name to public key does not give correct results.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of the code.
  • This issue has not been reported earlier.

Your environment

  • OS: Not relevant
  • Go version: Not relevant
  • Release tag/commit of the code: ed50f28

Expected behavior

Registering a name to the public key and then resolving this name should return the corresponding wallet address.

Actual behavior

Registering a name to the public key and then resolving this name returns a different wallet address. One possible cause is a bug in encoding the public key to a wallet address, may be related to migration to Ed25519

Steps to reproduce

(1) Send a transaction to register the name to a public key
(2) Request an NKN address associated with that name

These are actual transactions from my wallet:
(1)
Address: NKNRmDTBZJuByb5HcEE6ZQ8KhCYGpt1uCPnj which has pubkey b77b2a3fe032357644a14d6e8f5c67a87ee8b477131ca1e47e0852638ae0e776
Name to register: somename

this is the request: {"method":"sendrawtransaction","jsonrpc":"2.0","params":{"tx":"0a340a300803122c0a20b77b2a3fe032357644a14d6e8f5c67a87ee8b477131ca1e47e0852638ae0e7761208736f6d656e616d65101412680a232104b77b2a3fe032357644a14d6e8f5c67a87ee8b477131ca1e47e0852638ae0e776ac1241408ce43787a38fefc983493de84b6cf6183e900d68c3a2df1a646efab596c956addc329e94ad89118021399f0991fdf8e898b869bf5403393b6122e04d939a720f"}}

tx successful, with this id: 39d13910c5320ad61fac0f28cb20d97ed484d9833f8700cb6f787918f1fc4e64

(2) After long enough wait time, I sent a request to resolve somename

{"method":"getaddressbyname","jsonrpc":"2.0","params":{"name":"somename"}}

and I received this resoponse: {"result":"NKNGob91RtdLmxUs72UxUKPB8DhAS6qpffpB","id":"1","jsonrpc":"2.0"}

As you can see, the address returned NKNGob91RtdLmxUs72UxUKPB8DhAS6qpffpB is not the same as address registered NKNRmDTBZJuByb5HcEE6ZQ8KhCYGpt1uCPnj

block proposer verification

The validity of block proposer should be verified. The sigchain proof of block proposer should be included in last block.

Use UDP instead of TCP for consensus?

Block and consensus related data transmission could use significant bandwidth. Switching from TCP to UDP could enhance performance, and will not affect correctness due to the fault tolerance of consensus algorithm. Any thoughts are appreciated.

API features request

Description of the issue

getnodestate — would be nice to add the property of latestblockheight and getversion, in order not to send 3 different requests and do not overload the frontend.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

NAT Traversal

Description of the issue

Currently we require node to have public IP address. It MAY be beneficial to add NAT traversal for nodes so that people behind NAT can start mining. However, this may cause a few troubles:

  1. A node cannot know its public ports before all connections have already been established
  2. Because of 1, a node cannot know its chord ID in advance
  3. Reconnecting to the network may change chord ID as port is changed
  4. May reduce the performance of the network if some NAT traversal are problematic

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Should randomly choose node in seed list rather than sequential

Node should randomly choose seed node in seed list rather than sequential for better load balance among seed node

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
  • Go version
  • Release tag/commit of the code

Expected behaviour

What should happen?

Actual behaviour

What is actually happening?

Steps to reproduce

  1. Provide detailed steps
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.

Chord FingerTable incorrect.

Description of the issue

FingerTable incorrect when address cross over 0x0 from 0xf... to 0x0...

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
    Debian GNU/Linux 9 (stretch)
  • Go version
    go version go1.10.3 linux/amd64
  • Release tag/commit of the code
    v0.1-alpha-103-ge3abc

Expected behaviour

What should happen?
The address in FingerTable should comply with i^n offset.

Actual behaviour

What is actually happening?
As content as below extra info:

Finger[2].Id = 0xfca6df...
Finger[3].Id = 0x9b8832...
Address 0x00... ~ 0x8.... was skipped

Steps to reproduce

  1. Provide detailed steps
    During large-scale testing from 1 nodes outspread to 120 nodes.
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

"Vnodes": [
			{
				"Id": "f89abe81d36627c73db77487a4d671db4d0b2b50f076c93d3fd51c82a551a4f5",
				"Host": "104.198.15.42:30000",
				"NodePort": 30001,
				"HttpWsPort": 30002,
				"Successors": [
					{
						"Id": "f8e344d4cdaa2edb64eabaca62e75f9708aa1d1b9389d316b167b64b2c4b7ceb",
						"Host": "35.194.192.160:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "faee8b09a265d255223209635648f32ae320c6ce528778b47563f9165cf00156",
						"Host": "35.203.3.174:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "fbb6bc8d17b8095a2da40bd6247d48655c0858ff58f7683f6cd144f2220ff834",
						"Host": "35.203.64.11:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "fbbbf913091630f1e9defc33c94e60ee0325b66f115c32aba6e29b76a8282b8b",
						"Host": "35.203.98.236:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "fca6dfeb03ce4074ee0732f6d113d3d82f82ca9e0ee6aa60da5770ef1bd17b0a",
						"Host": "35.200.111.83:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "00a0e9d4e87e3fcea54b5955263e52172cc5274b54b1fa49d3141f187e6e65b2",
						"Host": "35.198.46.230:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "00f5abcec023945f741cf8fac6f206889d8102388d6506c33e03c535e11fe947",
						"Host": "35.197.171.106:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "012425779b5b079c344a0beb5e2f7df8d939407f9ee3eb5eb8a4d7b57bd504f4",
						"Host": "130.211.240.166:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					}
				],
				"Finger": [
					{
						"Id": "f8e344d4cdaa2edb64eabaca62e75f9708aa1d1b9389d316b167b64b2c4b7ceb",
						"Host": "35.194.192.160:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "faee8b09a265d255223209635648f32ae320c6ce528778b47563f9165cf00156",
						"Host": "35.203.3.174:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "fca6dfeb03ce4074ee0732f6d113d3d82f82ca9e0ee6aa60da5770ef1bd17b0a",
						"Host": "35.200.111.83:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					},
					{
						"Id": "9b8832dab1951b5450bad9916ee50e1e77e25fa429a0668b15915782e128a7b0",
						"Host": "104.197.138.103:30000",
						"NodePort": 30001,
						"HttpWsPort": 30002
					}
				],
				"Predecessor": {
					"Id": "f3b801b7179ef75293bcd980b9e674ac97b2e1f88b60ba1e1795a7558bad70e3",
					"Host": "35.196.130.234:30000",
					"NodePort": 30001,
					"HttpWsPort": 30002
				},
				"Last_finger": 250
			}
		]

Node in syncing shouldn't send updateSigChainBlockHash to client

Currently node send a updateSigChainBlockHash msg to client when his latest block hash changes. Node shouldn't do this when it's syncing, otherwise it's spamming msgs to client.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

RPC call 'getnodestate' returns height/version with 0 value

Description of the issue

Describe the issue you are experiencing.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
  • Go version
  • Release tag/commit of the code

Expected behaviour

What should happen?

Actual behaviour

What is actually happening?

Steps to reproduce

  1. Provide detailed steps
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.

HTTP json API routine panic when POST incorrect data

Description of the issue

RPCServer.Handle have nothing validity check for POST data.
It is very vulnerable when POST malicious parameter.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
  • Go version
  • Release tag/commit of the code

Expected behaviour

What should happen?
HTTP json Service should robust whatever POST any data.

Actual behaviour

What is actually happening?
One of service goroutine panic for each POST incorrect data. Such as "No method", "params not a map" etc.

Steps to reproduce

  1. Provide detailed steps
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

2018/12/18 09:13:17 http: panic serving 124.126.218.235:58389: interface conversion: interface {} is []interface {}, not map[string]interface {}
goroutine 1549821 [running]:
net/http.(*conn).serve.func1(0xc42040d400)
	/usr/lib/go-1.10/src/net/http/server.go:1726 +0xd0
panic(0xa883a0, 0xc42779d300)
	/usr/lib/go-1.10/src/runtime/panic.go:502 +0x229
github.com/nknorg/nkn/api/httpjson.(*RPCServer).Handle(0xc420068180, 0xbd1c80, 0xc4204449a0, 0xc421565100)
	/home/admin/nknorg/src/github.com/nknorg/nkn/api/httpjson/RPCserver.go:85 +0x1098
github.com/nknorg/nkn/api/httpjson.(*RPCServer).Handle-fm(0xbd1c80, 0xc4204449a0, 0xc421565100)
	/home/admin/nknorg/src/github.com/nknorg/nkn/api/httpjson/RPCserver.go:185 +0x48
net/http.HandlerFunc.ServeHTTP(0xc42041fd50, 0xbd1c80, 0xc4204449a0, 0xc421565100)
	/usr/lib/go-1.10/src/net/http/server.go:1947 +0x44
net/http.(*ServeMux).ServeHTTP(0xc4254ad0b0, 0xbd1c80, 0xc4204449a0, 0xc421565100)
	/usr/lib/go-1.10/src/net/http/server.go:2337 +0x130
net/http.serverHandler.ServeHTTP(0xc4253ffba0, 0xbd1c80, 0xc4204449a0, 0xc421565100)
	/usr/lib/go-1.10/src/net/http/server.go:2694 +0xbc
net/http.(*conn).serve(0xc42040d400, 0xbd2540, 0xc42779d100)
	/usr/lib/go-1.10/src/net/http/server.go:1830 +0x651
created by net/http.(*Server).Serve
	/usr/lib/go-1.10/src/net/http/server.go:2795 +0x27b

Node height = 0 when getting syncstate for node

Description of the issue

./nknc info -s gives node height 0.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS Ubuntu 16.04
  • Go version 1.8
  • Release tag/commit of the code 980bbfc

Expected behaviour

What should happen?
I think it should give a height count.

Actual behaviour

What is actually happening?
It is giving a height count, but height count is always 0.

Steps to reproduce

  1. Provide detailed steps: ./nknc info -s
  2. how to reproduce this issue: follow step 1

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.
screen shot 2018-09-25 at 11 12 22 pm

block should be verified when syncing

Description of the issue

block should be verified locally when sync from neighbors

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

New node cannot join after the first node stopped

I started 8 nodes following the instruction and stop the very first one which created the network. New node failed to join with following logs.

xhdeMacBook-Air-5:node9 xh$ ./nknd -test join
2018/06/13 15:45:18.465413 [TRACE] GID 1, nknMain() nknd.go:80 Node version:  v0.1-alpha-2-g68d1
2018/06/13 15:45:18.465492 [TRACE] GID 1, JoinNet() chord.go:295
panic: runtime error: index out of range

goroutine 18 [running]:
github.com/nknorg/nkn/net/chord.trimSlice(0x184d258, 0x0, 0x0, 0x184d258, 0x0, 0x0)
	/Users/xh/go/src/github.com/nknorg/nkn/net/chord/net.go:821 +0x86
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc42005e240, 0xc420134000)
	/Users/xh/go/src/github.com/nknorg/nkn/net/chord/net.go:699 +0x9c7
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
	/Users/xh/go/src/github.com/nknorg/nkn/net/chord/net.go:636 +0x14e

or

xhdeMacBook-Air-5:node9 xh$ ./nknd -test join
2018/06/13 15:45:15.441674 [TRACE] GID 1, nknMain() nknd.go:80 Node version:  v0.1-alpha-2-g68d1
2018/06/13 15:45:15.443488 [TRACE] GID 1, JoinNet() chord.go:295
2018/06/13 15:45:15.449267 [FATAL] GID 1, failed to join local node! Got %s EOF

node 3.15 crashes after a while - fatal error: concurrent map writes

Description of the issue

Node crashes after a while (after it was successfully synced & was operating for 10-30min). It says
fatal error: concurrent map writes

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS Ubuntu 18.04
  • Go version 1.10.1 linux/amd64
  • Release tag/commit of the code (I am using the 3.15-alpha binary from github

Expected behaviour

What should happen?
Node should not crash

Actual behaviour

What is actually happening?
Node crashes

Steps to reproduce

  1. Provide detailed steps
    run ./nknd and wait
  2. how to reproduce this issue
    run ./nknd and wait

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.
2018/10/03 12:36:47.268921 [INFO ] GID 27, # current block height: 105686, block hash: 3c14b1705bf840b1e728d2453b26f0e3ed58e468b42354edda8b317e3839dc42
fatal error: concurrent map writes

goroutine 473675 [running]:
runtime.throw(0xa6d1e1, 0x15)
/usr/local/Cellar/go/1.10/libexec/src/runtime/panic.go:619 +0x81 fp=0xc420081ba0 sp=0xc420081b80 pc=0x429b21
runtime.mapassign_fast32(0x9b2080, 0xc421a034d0, 0x19cda, 0x1)
/usr/local/Cellar/go/1.10/libexec/src/runtime/hashmap_fast.go:359 +0x2f3 fp=0xc420081be8 sp=0xc420081ba0 pc=0x40b0d3
github.com/nknorg/nkn/por.(*PorServer).AddSigChainFromTx(0xc421cccb40, 0xc4203708d8, 0xc421ef4001, 0xc4231b0000, 0x51f)
/Users/skysniper/go/src/github.com/nknorg/nkn/por/porserver.go:219 +0x204 fp=0xc420081c70 sp=0xc420081be8 pc=0x84a574
github.com/nknorg/nkn/core/transaction/pool.(*TxnPool).AppendTxnPool(0xc421cccb80, 0xc4203708d8, 0xc400000000)
/Users/skysniper/go/src/github.com/nknorg/nkn/core/transaction/pool/pool.go:57 +0xf6 fp=0xc420081d38 sp=0xc420081c70 pc=0x85d786
github.com/nknorg/nkn/net/message.trn.Handle(0x787400000000, 0x0, 0x6abad7df00000507, 0x42, 0xadb820, 0xc422fcb020, 0xc4201a80f8, 0x1, 0x1, 0x0, ...)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/message/transaction.go:39 +0x23a fp=0xc420081dc0 sp=0xc420081d38 pc=0x8a5b8a
github.com/nknorg/nkn/net/message.(*trn).Handle(0xc4203d3f40, 0xae0b60, 0xc4200b1680, 0x568, 0x0)
:1 +0x91 fp=0xc420081e88 sp=0xc420081dc0 pc=0x8a9f91
github.com/nknorg/nkn/net/message.HandleNodeMsg(0xae0b60, 0xc4200b1680, 0xc4202d4b00, 0x51f, 0x580, 0x51f, 0x0, 0x0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/message/message.go:246 +0x470 fp=0xc420081fa0 sp=0xc420081e88 pc=0x8a22d0
runtime.goexit()
/usr/local/Cellar/go/1.10/libexec/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc420081fa8 sp=0xc420081fa0 pc=0x456721
created by github.com/nknorg/nkn/net/node.unpackNodeBuf
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:79 +0x46d

goroutine 1 [chan receive, 60 minutes]:
main.nknMain(0xc4200ce3c0, 0x0, 0x0)
/Users/skysniper/go/src/github.com/nknorg/nkn/nknd.go:168 +0x693
github.com/nknorg/nkn/vendor/github.com/urfave/cli.HandleAction(0x990ac0, 0xa8c1d8, 0xc4200ce3c0, 0xc42006a1e0, 0x0)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/urfave/cli/app.go:485 +0xc8
github.com/nknorg/nkn/vendor/github.com/urfave/cli.(*App).Run(0xc42009d040, 0xc42001c090, 0x3, 0x3, 0x0, 0x0)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/urfave/cli/app.go:259 +0x64e
main.main()
/Users/skysniper/go/src/github.com/nknorg/nkn/nknd.go:212 +0x3f6

goroutine 5 [syscall, 60 minutes]:
os/signal.signal_recv(0x0)
/usr/local/Cellar/go/1.10/libexec/src/runtime/sigqueue.go:139 +0xa6
os/signal.loop()
/usr/local/Cellar/go/1.10/libexec/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.0
/usr/local/Cellar/go/1.10/libexec/src/os/signal/signal_unix.go:28 +0x41

goroutine 68 [IO wait, 2 minutes]:
internal/poll.runtime_pollWait(0x7f345a93fe30, 0x72, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202aa298, 0x72, 0xc420068100, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202aa298, 0xffffffffffffff00, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc4202aa280, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:372 +0x1a8
net.(*netFD).accept(0xc4202aa280, 0xc4201a9000, 0xc42017c358, 0x8011b024982e6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc420458098, 0x452ec0, 0xc42015e758, 0xc42015e760)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).AcceptTCP(0xc420458098, 0xa8af38, 0xc4201861b0, 0xc4201a9000)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock.go:246 +0x49
github.com/nknorg/nkn/net/chord.(*TCPTransport).listen(0xc4201861b0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:717 +0x38
created by github.com/nknorg/nkn/net/chord.InitTCPTransport
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:122 +0x1af

goroutine 24 [select]:
github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mpoolDrain(0xc420169c80)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db_state.go:101 +0x127
created by github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.openDB
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db.go:140 +0x4bf

goroutine 77 [select]:
github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/util.(*BufferPool).drain(0xc42034a8c0)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:206 +0x152
created by github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/util.NewBufferPool
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:237 +0x171

goroutine 6557 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93ff00, 0x72, 0xc421e39718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42220e598, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42220e598, 0xc421c06000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42220e580, 0xc421c06000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42220e580, 0xc421c06000, 0x1000, 0x1000, 0xc42220e580, 0xc4218d5988, 0x6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420458e40, 0xc421c06000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc421e25080, 0xc4201dbed0, 0x1, 0x9, 0xc421e39910, 0x58136a, 0xc42220e580)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc421e25080, 0xc4201dbed0, 0x1, 0x9, 0x1, 0xc4218d5980, 0x3, 0xc420034a70)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc421e25080, 0xc4201dbed0, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc421e399c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc421e25080, 0xc4201dbed0, 0x9, 0x9, 0xc420458e40, 0xc420390c18, 0xc421e39a18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc42220e600, 0xc421e39a30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc42220e600, 0xa8ca00, 0xc42220e600)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc42220e600, 0x964000, 0xc4201dbee0, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc42220e600, 0x964000, 0xc4201dbee0, 0xc42114e268, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc420458e40)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 23 [select, 34 minutes]:
github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).compactionError(0xc420169c80)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:90 +0xff
created by github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.openDB
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db.go:139 +0x49d

goroutine 473523 [select]:
github.com/nknorg/nkn/net/chord.(*TCPTransport).Notify(0xc4201861b0, 0xc4218fcd50, 0xc4203d30e0, 0x0, 0x0, 0x0, 0xc422482f30, 0x8352b5)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:458 +0x240
github.com/nknorg/nkn/net/chord.(*LocalTransport).Notify(0xc42017aac0, 0xc4218fcd50, 0xc4203d30e0, 0x0, 0x0, 0xc4203d3150, 0x0, 0x0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/transport.go:107 +0xcd
github.com/nknorg/nkn/net/chord.(*localVnode).notifyPredecessor(0xc4203d30e0, 0x0, 0x0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/vnode.go:268 +0x4f
github.com/nknorg/nkn/net/chord.(*localVnode).stabilize(0xc4203d30e0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/vnode.go:130 +0x249
github.com/nknorg/nkn/net/chord.(*localVnode).(github.com/nknorg/nkn/net/chord.stabilize)-fm()
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/vnode.go:79 +0x2a
created by time.goFunc
/usr/local/Cellar/go/1.10/libexec/src/time/sleep.go:172 +0x44

goroutine 69 [sleep]:
time.Sleep(0x2540be400)
/usr/local/Cellar/go/1.10/libexec/src/runtime/time.go:102 +0x166
github.com/nknorg/nkn/net/chord.(*TCPTransport).reapOld(0xc4201861b0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:662 +0x32
created by github.com/nknorg/nkn/net/chord.InitTCPTransport
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:125 +0x1d1

goroutine 43 [sleep]:
time.Sleep(0x2540be400)
/usr/local/Cellar/go/1.10/libexec/src/runtime/time.go:102 +0x166
github.com/nknorg/nkn/net/chord.(*localVnode).keepalive(0xc4203d30e0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/vnode.go:159 +0x1cf
created by github.com/nknorg/nkn/net/chord.(*localVnode).init
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/vnode.go:72 +0x1ac

goroutine 25 [select, 34 minutes]:
github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).tCompaction(0xc420169c80)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:804 +0x277
created by github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.openDB
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db.go:146 +0x627

goroutine 26 [select, 60 minutes]:
github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.(*DB).mCompaction(0xc420169c80)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db_compaction.go:751 +0x15d
created by github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb.openDB
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/syndtr/goleveldb/leveldb/db.go:147 +0x649

goroutine 27 [select]:
github.com/nknorg/nkn/db.(*ChainStore).loop(0xc4201a6240)
/Users/skysniper/go/src/github.com/nknorg/nkn/db/store.go:107 +0xf5
created by github.com/nknorg/nkn/db.NewChainStore
/Users/skysniper/go/src/github.com/nknorg/nkn/db/store.go:92 +0x198

goroutine 30 [select]:
github.com/nknorg/nkn/vendor/github.com/patrickmn/go-cache.(*janitor).Run(0xc420311540, 0xc421cccbc0)
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/patrickmn/go-cache/cache.go:1079 +0x106
created by github.com/nknorg/nkn/vendor/github.com/patrickmn/go-cache.runJanitor
/Users/skysniper/go/src/github.com/nknorg/nkn/vendor/github.com/patrickmn/go-cache/cache.go:1099 +0xb3

goroutine 31 [IO wait, 11 minutes]:
internal/poll.runtime_pollWait(0x7f345a93fa20, 0x72, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420199c18, 0x72, 0xc42017a000, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420199c18, 0xffffffffffffff00, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc420199c00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:372 +0x1a8
net.(*netFD).accept(0xc420199c00, 0xd, 0xc42101d04e, 0x5)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc4204582a0, 0x452ec0, 0xc42065fee8, 0xc42065fef0)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).Accept(0xc4204582a0, 0xa8af98, 0xc42065ad80, 0xd, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock.go:259 +0x49
github.com/nknorg/nkn/net/node.(*node).initConnection(0xc4200b0480)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:153 +0x9e
created by github.com/nknorg/nkn/net/node.InitNode
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/node.go:198 +0x7e4

goroutine 32 [chan receive]:
github.com/nknorg/nkn/net/node.(*node).updateConnection(0xc4200b0480)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/node.go:731 +0x4e
created by github.com/nknorg/nkn/net/node.InitNode
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/node.go:199 +0x806

goroutine 81 [chan receive]:
github.com/nknorg/nkn/net/node.(*node).keepalive(0xc4200b0480)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/node.go:720 +0x49
created by github.com/nknorg/nkn/net/node.InitNode
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/node.go:200 +0x828

goroutine 168 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f200, 0x72, 0xc420420dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8618, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8618, 0xc4219de000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8600, 0xc4219de000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8600, 0xc4219de000, 0x3fff, 0x4000, 0x18, 0xc423130000, 0xc4210f79a0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420458330, 0xc4219de000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc421c6c6c0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 146 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f130, 0x72, 0xc421cb0dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8718, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8718, 0xc421b7c000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8700, 0xc421b7c000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8700, 0xc421b7c000, 0x3fff, 0x4000, 0x18, 0xc423131b00, 0xc422dcc220)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c320, 0xc421b7c000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc420ad8000)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 152 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86d638, 0x72, 0xc421e0ddc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8a18, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8a18, 0xc421a1e000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8a00, 0xc421a1e000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8a00, 0xc421a1e000, 0x3fff, 0x4000, 0x18, 0xc420327080, 0xc422dcd4a0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c338, 0xc421a1e000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc420ad86c0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 123 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f2d0, 0x72, 0xc420422dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8518, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8518, 0xc421b20000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8500, 0xc421b20000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8500, 0xc421b20000, 0x3fff, 0x4000, 0x18, 0xc4226802c0, 0xc422dccc80)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4201a9ce8, 0xc421b20000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc4200b0900)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 894 [runnable]:
syscall.Syscall(0x0, 0x47, 0xc421b6e000, 0x3fff, 0xffffffffffffffff, 0x0, 0xb)
/usr/local/Cellar/go/1.10/libexec/src/syscall/asm_linux_amd64.s:18 +0x5
syscall.read(0x47, 0xc421b6e000, 0x3fff, 0x4000, 0xc4220aca00, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/syscall/zsyscall_linux_amd64.go:749 +0x5f
syscall.Read(0x47, 0xc421b6e000, 0x3fff, 0x4000, 0x452ec0, 0xc421cb5e38, 0xc421cb5e40)
/usr/local/Cellar/go/1.10/libexec/src/syscall/syscall_unix.go:162 +0x49
internal/poll.(*FD).Read(0xc422868b80, 0xc421b6e000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:153 +0x118
net.(*netFD).Read(0xc422868b80, 0xc421b6e000, 0x3fff, 0x4000, 0x18, 0xc420329700, 0xc422dcdea0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420b444a8, 0xc421b6e000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc42065a000)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 181 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f060, 0x72, 0xc421e0fdc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8818, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8818, 0xc42111a000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8800, 0xc42111a000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8800, 0xc42111a000, 0x3fff, 0x4000, 0x18, 0xc4202c8480, 0xc422dcc4c0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4201a9d48, 0xc42111a000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc4200b18c0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 166 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f950, 0x72, 0xc42041ddc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420199d18, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420199d18, 0xc4207ca000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420199d00, 0xc4207ca000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420199d00, 0xc4207ca000, 0x3fff, 0x4000, 0x18, 0xc420328c00, 0xc422dcdaa0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420458320, 0xc4207ca000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc421c6c480)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 177 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f540, 0x72, 0xc421cb1dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8218, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8218, 0xc4218ce000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8200, 0xc4218ce000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8200, 0xc4218ce000, 0x3fff, 0x4000, 0x18, 0xc4202d4b00, 0xc42359fb60)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4201a9d08, 0xc4218ce000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc4200b1680)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 127 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f610, 0x72, 0xc42041fdc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8118, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8118, 0xc421cda000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8100, 0xc421cda000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8100, 0xc421cda000, 0x3fff, 0x4000, 0x18, 0xc420233700, 0xc422df5960)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4201a9d00, 0xc421cda000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc4200b1440)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 170 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86d708, 0x72, 0xc421e0edc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8918, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8918, 0xc42051c000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8900, 0xc42051c000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8900, 0xc42051c000, 0x3fff, 0x4000, 0x18, 0xc421e95200, 0xc421ba88c0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420458338, 0xc42051c000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc421c6c900)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 148 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86d568, 0x72, 0xc420662dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8b18, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8b18, 0xc4218ee000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8b00, 0xc4218ee000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8b00, 0xc4218ee000, 0x3fff, 0x4000, 0x18, 0xc420447680, 0xc42359eac0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c328, 0xc4218ee000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc420ad8240)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 358933 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86dd78, 0x72, 0xc4221df718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc423646618, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc423646618, 0xc4212f1000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc423646600, 0xc4212f1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc423646600, 0xc4212f1000, 0x1000, 0x1000, 0xc423646600, 0xc421e8b908, 0x6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc422686c30, 0xc4212f1000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc421f5b080, 0xc423027980, 0x1, 0x9, 0xc4221df910, 0x58136a, 0xc423646600)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc421f5b080, 0xc423027980, 0x1, 0x9, 0x1, 0xc421e8b900, 0x3, 0xc420034a70)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc421f5b080, 0xc423027980, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc4221df9c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc421f5b080, 0xc423027980, 0x9, 0x9, 0xc422686c30, 0xc4211d7e38, 0xc4221dfa18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc423646680, 0xc4221dfa30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc423646680, 0xa8ca00, 0xc423646680)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc423646680, 0x964000, 0xc423027990, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc423646680, 0x964000, 0xc423027990, 0xc42114e2b0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc422686c30)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 12455 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93fc90, 0x72, 0xc421ed5718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421109a98, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc421109a98, 0xc421af3000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421109a80, 0xc421af3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc421109a80, 0xc421af3000, 0x1000, 0x1000, 0xc421109a80, 0xc42216ee48, 0x46)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420b76930, 0xc421af3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc42068faa0, 0xc421298830, 0x1, 0x9, 0xc421ed5910, 0x58136a, 0xc421109a80)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc42068faa0, 0xc421298830, 0x1, 0x9, 0x1, 0xc42216ee40, 0x3, 0xc420036f70)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc42068faa0, 0xc421298830, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc421ed59c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc42068faa0, 0xc421298830, 0x9, 0x9, 0xc420b76930, 0xc421d92678, 0xc421ed5a18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc421109b00, 0xc421ed5a30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc421109b00, 0xa8ca00, 0xc421109b00)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc421109b00, 0x964000, 0xc421298828, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc421109b00, 0x964000, 0xc421298828, 0xc42046f5a8, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc420b76930)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 970 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86e668, 0x72, 0xc422748dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc422869018, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc422869018, 0xc421e74000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc422869000, 0xc421e74000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc422869000, 0xc421e74000, 0x3fff, 0x4000, 0x18, 0xc4202c8000, 0xc422dcc2c0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4210b6b68, 0xc421e74000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc420ad9680)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).initConnection
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:166 +0x8a

goroutine 150 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f7b0, 0x72, 0xc42041edc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420199e18, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420199e18, 0xc420934000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420199e00, 0xc420934000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420199e00, 0xc420934000, 0x3fff, 0x4000, 0x18, 0xc420233180, 0xc422df5760)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c330, 0xc420934000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc420ad8480)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 334 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86cee8, 0x72, 0xc421e1d718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420134b18, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420134b18, 0xc421ebe000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420134b00, 0xc421ebe000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420134b00, 0xc421ebe000, 0x1000, 0x1000, 0xc420134b00, 0xc42039e006, 0x40c)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420b44d78, 0xc421ebe000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc4201a7080, 0xc4202a11a0, 0x1, 0x9, 0xc421e1d910, 0x58136a, 0xc420134b00)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc4201a7080, 0xc4202a11a0, 0x1, 0x9, 0x1, 0xc42039e000, 0x3, 0xc420030070)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc4201a7080, 0xc4202a11a0, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc421e1d9c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc4201a7080, 0xc4202a11a0, 0x9, 0x9, 0xc420b44d78, 0xc420252218, 0xc421e1da18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc420134b80, 0xc421e1da30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc420134b80, 0xa8ca00, 0xc420134b80)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc420134b80, 0x964000, 0xc4202a1198, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc420134b80, 0x964000, 0xc4202a1198, 0xc42114e488, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc420b44d78)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 84423 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a9715d0, 0x72, 0xc421167718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4223dfb98, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4223dfb98, 0xc4220b3000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4223dfb80, 0xc4220b3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4223dfb80, 0xc4220b3000, 0x1000, 0x1000, 0xc4223dfb80, 0xc420024ea8, 0x6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc421bf20a8, 0xc4220b3000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc421f00600, 0xc4208192e0, 0x1, 0x9, 0xc421167910, 0x58136a, 0xc4223dfb80)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc421f00600, 0xc4208192e0, 0x1, 0x9, 0x1, 0xc420024ea0, 0x3, 0xc420034a70)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc421f00600, 0xc4208192e0, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc4211679c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc421f00600, 0xc4208192e0, 0x9, 0x9, 0xc421bf20a8, 0xc4227d42b8, 0xc421167a18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc4223dfc00, 0xc421167a30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc4223dfc00, 0xa8ca00, 0xc4223dfc00)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc4223dfc00, 0x964000, 0xc4208192d8, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc4223dfc00, 0x964000, 0xc4208192d8, 0xc42114e280, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc421bf20a8)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 114 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f345a86d2f8, 0x72, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8d18, 0x72, 0xc4210bf100, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8d18, 0xffffffffffffff00, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc4202e8d00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:372 +0x1a8
net.(*netFD).accept(0xc4202e8d00, 0x401127, 0xc4211a2120, 0x9a3300)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc4204582c8, 0x452ec0, 0xc4208eade8, 0xc4208eadf0)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).Accept(0xc4204582c8, 0xa8c360, 0xc4211a20a0, 0xadaa60, 0xc42019d590)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock.go:259 +0x49
net/http.(*Server).Serve(0xc42011e8f0, 0xad9f20, 0xc4204582c8, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/http/server.go:2770 +0x1a5
github.com/nknorg/nkn/api/httpjson.(*RPCServer).Start(0xc42068ecc0)
/Users/skysniper/go/src/github.com/nknorg/nkn/api/httpjson/RPCserver.go:189 +0x246
created by main.nknMain
/Users/skysniper/go/src/github.com/nknorg/nkn/nknd.go:140 +0x488

goroutine 115 [IO wait, 4 minutes]:
internal/poll.runtime_pollWait(0x7f345a86d3c8, 0x72, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8c98, 0x72, 0xc42017a100, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8c98, 0xffffffffffffff00, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc4202e8c80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:372 +0x1a8
net.(*netFD).accept(0xc4202e8c80, 0x401127, 0xc421d93ca0, 0x9a3300)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc4204582a8, 0x452ec0, 0xc4208e9dd8, 0xc4208e9de0)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).Accept(0xc4204582a8, 0xa8c360, 0xc421d93c20, 0xadaa60, 0xc42019d410)
/usr/local/Cellar/go/1.10/libexec/src/net/tcpsock.go:259 +0x49
net/http.(*Server).Serve(0xc42011e340, 0xad9f20, 0xc4204582a8, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/http/server.go:2770 +0x1a5
github.com/nknorg/nkn/api/websocket/server.(*WsServer).Start(0xc4204002c0, 0x951f96bb00000000, 0x7f855601050c001f)
/Users/skysniper/go/src/github.com/nknorg/nkn/api/websocket/server/server.go:90 +0x1ef
github.com/nknorg/nkn/api/websocket.StartServer.func1()
/Users/skysniper/go/src/github.com/nknorg/nkn/api/websocket/websocket.go:30 +0x2d
created by github.com/nknorg/nkn/api/websocket.StartServer
/Users/skysniper/go/src/github.com/nknorg/nkn/api/websocket/websocket.go:29 +0x154

goroutine 116 [chan receive]:
github.com/nknorg/nkn/consensus/ising.(*ConsensusService).Start(0xc4202c08f0)
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/ising.go:28 +0x81
github.com/nknorg/nkn/consensus/ising.StartIsingConsensus(0xc42040a380, 0xae0b60, 0xc4200b0480)
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/ising.go:36 +0x4d
created by main.StartConsensus
/Users/skysniper/go/src/github.com/nknorg/nkn/nknd.go:74 +0xe2

goroutine 117 [sleep]:
time.Sleep(0x2540be400)
/usr/local/Cellar/go/1.10/libexec/src/runtime/time.go:102 +0x166
main.nknMain.func2()
/Users/skysniper/go/src/github.com/nknorg/nkn/nknd.go:158 +0x34
created by main.nknMain
/Users/skysniper/go/src/github.com/nknorg/nkn/nknd.go:156 +0x5f9

goroutine 118 [select, 60 minutes, locked to thread]:
runtime.gopark(0xa8c9b0, 0x0, 0xa665c7, 0x6, 0x18, 0x1)
/usr/local/Cellar/go/1.10/libexec/src/runtime/proc.go:291 +0x11a
runtime.selectgo(0xc42102e750, 0xc42014c480)
/usr/local/Cellar/go/1.10/libexec/src/runtime/select.go:392 +0xe50
runtime.ensureSigM.func1()
/usr/local/Cellar/go/1.10/libexec/src/runtime/signal_unix.go:549 +0x1f4
runtime.goexit()
/usr/local/Cellar/go/1.10/libexec/src/runtime/asm_amd64.s:2361 +0x1

goroutine 846 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a8d9af8, 0x72, 0xc421ed1718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42288c498, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42288c498, 0xc421b72000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42288c480, 0xc421b72000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42288c480, 0xc421b72000, 0x1000, 0x1000, 0xc42288c480, 0xc422796188, 0x46)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125cb68, 0xc421b72000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc42006bc80, 0xc42031d5a0, 0x1, 0x9, 0xc421ed1910, 0x58136a, 0xc42288c480)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc42006bc80, 0xc42031d5a0, 0x1, 0x9, 0x1, 0xc422796180, 0x3, 0xc420034a70)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc42006bc80, 0xc42031d5a0, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc421ed19c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc42006bc80, 0xc42031d5a0, 0x9, 0x9, 0xc42125cb68, 0xc420370a38, 0xc421ed1a18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc42288c500, 0xc421ed1a30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc42288c500, 0xa8ca00, 0xc42288c500)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc42288c500, 0x964000, 0xc42031d598, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc42288c500, 0x964000, 0xc42031d598, 0xc42114e390, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc42125cb68)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 349113 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86d898, 0x72, 0xc4207f9718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc422ef3818, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc422ef3818, 0xc4232c7000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc422ef3800, 0xc4232c7000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc422ef3800, 0xc4232c7000, 0x1000, 0x1000, 0xc422ef3800, 0xc422707ce8, 0x46)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420baa000, 0xc4232c7000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc422ca6360, 0xc422a0abc0, 0x1, 0x9, 0xc4207f9910, 0x58136a, 0xc422ef3800)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc422ca6360, 0xc422a0abc0, 0x1, 0x9, 0x1, 0xc422707ce0, 0x3, 0xc420036f70)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc422ca6360, 0xc422a0abc0, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc4207f99c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc422ca6360, 0xc422a0abc0, 0x9, 0x9, 0xc420baa000, 0xc4227d5cf8, 0xc4207f9a18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc422ef3980, 0xc4207f9a30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc422ef3980, 0xa8ca00, 0xc422ef3980)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc422ef3980, 0x964000, 0xc422a0abd0, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc422ef3980, 0x964000, 0xc422a0abd0, 0xc42114e6f0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc420baa000)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 875 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a8d9c98, 0x72, 0xc42065edc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42288c418, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42288c418, 0xc4219f6000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42288c400, 0xc4219f6000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42288c400, 0xc4219f6000, 0x3fff, 0x4000, 0x18, 0xc420446d80, 0xc42359e560)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4204590e0, 0xc4219f6000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc421c6cfc0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 1014 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86e3f8, 0x72, 0xc421cb4dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42288c918, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42288c918, 0xc4228d0000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42288c900, 0xc4228d0000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42288c900, 0xc4228d0000, 0x3fff, 0x4000, 0x18, 0xc423131200, 0xc4210f7da0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125cf98, 0xc4228d0000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc42041a480)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).initConnection
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:166 +0x8a

goroutine 1009 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86e4c8, 0x72, 0xc421ecf718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42288c818, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42288c818, 0xc421e7d000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42288c800, 0xc421e7d000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42288c800, 0xc421e7d000, 0x1000, 0x1000, 0xc42288c800, 0xc420417648, 0x6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125ce40, 0xc421e7d000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc421e253e0, 0xc4202ecd60, 0x1, 0x9, 0xc421ecf910, 0x58136a, 0xc42288c800)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc421e253e0, 0xc4202ecd60, 0x1, 0x9, 0x1, 0xc420417640, 0x3, 0xc420032570)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc421e253e0, 0xc4202ecd60, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc421ecf9c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc421e253e0, 0xc4202ecd60, 0x9, 0x9, 0xc42125ce40, 0xc420370c18, 0xc421ecfa18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc42288c880, 0xc421ecfa30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc42288c880, 0xa8ca00, 0xc42288c880)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc42288c880, 0x964000, 0xc4202ecd58, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc42288c880, 0x964000, 0xc4202ecd58, 0xc42114e5b0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc42125ce40)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 133 [select]:
github.com/nknorg/nkn/api/websocket/server.(*WsServer).checkSessionsTimeout(0xc4204002c0, 0xc420672120)
/Users/skysniper/go/src/github.com/nknorg/nkn/api/websocket/server/server.go:227 +0x153
created by github.com/nknorg/nkn/api/websocket/server.(*WsServer).Start
/Users/skysniper/go/src/github.com/nknorg/nkn/api/websocket/server/server.go:87 +0x147

goroutine 135 [chan receive]:
github.com/nknorg/nkn/consensus/ising.(*ProbeService).Start(0xc42095fc80, 0x9d9460, 0xc4202c08f0)
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/probeservice.go:64 +0xf7
created by github.com/nknorg/nkn/consensus/ising.(*ConsensusService).Start
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/ising.go:24 +0x6c

goroutine 136 [chan receive]:
github.com/nknorg/nkn/consensus/ising.(*ProposerService).ProposerRoutine(0xc4200c2d10)
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:268 +0x48
created by github.com/nknorg/nkn/consensus/ising.(*ProposerService).Start
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:483 +0x210

goroutine 137 [chan receive, 60 minutes]:
github.com/nknorg/nkn/consensus/ising.(*ProposerService).ChangeProposerRoutine(0xc4200c2d10)
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:332 +0xc8
created by github.com/nknorg/nkn/consensus/ising.(*ProposerService).Start
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:485 +0x232

goroutine 138 [chan receive]:
github.com/nknorg/nkn/consensus/ising.(*ProposerService).TimeoutRoutine(0xc4200c2d10)
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:287 +0x31
created by github.com/nknorg/nkn/consensus/ising.(*ProposerService).Start
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:487 +0x254

goroutine 1594 [chan receive]:
github.com/nknorg/nkn/consensus/ising.(*ProposerService).ProbeRoutine(0xc4200c2d10)
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:297 +0x9a
created by github.com/nknorg/nkn/consensus/ising.(*ProposerService).Start
/Users/skysniper/go/src/github.com/nknorg/nkn/consensus/ising/proposerservice.go:491 +0x289

goroutine 473533 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86cd48, 0x72, 0xc422744ba0)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420134e98, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420134e98, 0xc421edc000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420134e80, 0xc421edc000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420134e80, 0xc421edc000, 0x1000, 0x1000, 0xc420134e80, 0xc420112807, 0x89)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420b45010, 0xc421edc000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc4201a7500, 0xc4202a1a70, 0x1, 0x9, 0xc4234cb598, 0x58136a, 0xc420134e80)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc4201a7500, 0xc4202a1a70, 0x1, 0x9, 0x1, 0xc420112800, 0x3, 0xc420032570)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc4201a7500, 0xc4202a1a70, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc4234cb650)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc4201a7500, 0xc4202a1a70, 0x9, 0x9, 0xc4234cb700, 0x410249, 0xc4234cb6a0, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc420134f80, 0xc4234cb6b8)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc420134f80, 0xa8ca00, 0xc420134f80)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc420134f80, 0x963fc0, 0xc42392e9f0, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc420134f80, 0x963fc0, 0xc42392e9f0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).Notify.func1(0xc4203799f0, 0xc4218fcd50, 0xc4203d30e0, 0xc421f002a0, 0xc421f000c0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:446 +0x123
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).Notify
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:431 +0x11f

goroutine 119 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86d228, 0x72, 0xc420173718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202aa618, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202aa618, 0xc4218be000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202aa600, 0xc4218be000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202aa600, 0xc4218be000, 0x1000, 0x1000, 0xc4202aa600, 0xc421308008, 0x6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4201a9b70, 0xc4218be000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc42068ee40, 0xc4202653f0, 0x1, 0x9, 0xc420173910, 0x58136a, 0xc4202aa600)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc42068ee40, 0xc4202653f0, 0x1, 0x9, 0x1, 0xc421308000, 0x3, 0xc420030070)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc42068ee40, 0xc4202653f0, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc4201739c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc42068ee40, 0xc4202653f0, 0x9, 0x9, 0xc4201a9b70, 0xc4203142b8, 0xc420173a18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc4202aa780, 0xc420173a30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc4202aa780, 0xa8ca00, 0xc4202aa780)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc4202aa780, 0x964000, 0xc420265400, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc4202aa780, 0x964000, 0xc420265400, 0xc42114e158, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc4201a9b70)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 121 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f6e0, 0x72, 0xc421cb2dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420199f98, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420199f98, 0xc421ce0000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420199f80, 0xc421ce0000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420199f80, 0xc421ce0000, 0x3fff, 0x4000, 0x18, 0xc420231600, 0xc422df5280)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4201a9ce0, 0xc421ce0000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc4200b06c0)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 142 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f470, 0x72, 0xc420421dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8318, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8318, 0xc420622000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8300, 0xc420622000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8300, 0xc420622000, 0x3fff, 0x4000, 0x18, 0xc420327600, 0xc422dcd6a0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4204582f8, 0xc420622000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc421c6c240)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 186 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f3a0, 0x72, 0xc420665dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4202e8418, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4202e8418, 0xc421daa000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4202e8400, 0xc421daa000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4202e8400, 0xc421daa000, 0x3fff, 0x4000, 0x18, 0xc422830d80, 0xc421ba9640)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc4201a9d68, 0xc421daa000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc4200b1d40)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 200 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a93f880, 0x72, 0xc421e09dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420134a18, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420134a18, 0xc421e14000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420134a00, 0xc421e14000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420134a00, 0xc421e14000, 0x3fff, 0x4000, 0x18, 0xc420328680, 0xc422dcd8a0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420b44d20, 0xc421e14000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc42065a240)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).initConnection
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:166 +0x8a

goroutine 208 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86cfb8, 0x72, 0xc421e3d718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420134a98, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc420134a98, 0xc421e41000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc420134a80, 0xc421e41000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc420134a80, 0xc421e41000, 0x1000, 0x1000, 0xc420134a80, 0xc421308808, 0x6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc420b44d38, 0xc421e41000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc420339b00, 0xc42027bea0, 0x1, 0x9, 0xc421e3d910, 0x58136a, 0xc420134a80)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc420339b00, 0xc42027bea0, 0x1, 0x9, 0x1, 0xc421308800, 0x3, 0xc420032570)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc420339b00, 0xc42027bea0, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc421e3d9c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc420339b00, 0xc42027bea0, 0x9, 0x9, 0xc420b44d38, 0xc420370718, 0xc421e3da18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc4202e8f80, 0xc421e3da30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc4202e8f80, 0xa8ca00, 0xc4202e8f80)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc4202e8f80, 0x964000, 0xc42027beb0, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc4202e8f80, 0x964000, 0xc42027beb0, 0xc42114e378, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc420b44d38)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 473708 [runnable]:
github.com/nknorg/nkn/net/message.HandleNodeMsg(0xae0b60, 0xc42065a000, 0xc420329700, 0x51f, 0x580, 0x51f, 0xc42065a000, 0xc421cb5ed8)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/message/message.go:213
created by github.com/nknorg/nkn/net/node.unpackNodeBuf
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:79 +0x46d

goroutine 2360 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a90c1c8, 0x72, 0xc420190dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4211ea518, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc4211ea518, 0xc420518000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4211ea500, 0xc420518000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc4211ea500, 0xc420518000, 0x3fff, 0x4000, 0x0, 0xc421ba94c0, 0xc421ba94c0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc422204e20, 0xc420518000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc421c6d200)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).initConnection
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:166 +0x8a

goroutine 957 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a8d9888, 0x72, 0xc420197dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42288c718, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42288c718, 0xc421e48000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42288c700, 0xc421e48000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42288c700, 0xc421e48000, 0x3fff, 0x4000, 0x18, 0xc423130480, 0xc4210f7ba0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125cde8, 0xc421e48000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc42041a000)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).initConnection
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:166 +0x8a

goroutine 827 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a8d9f08, 0x72, 0xc4204e5718)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42288c118, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42288c118, 0xc421a89000, 0x1000, 0x1000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42288c100, 0xc421a89000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42288c100, 0xc421a89000, 0x1000, 0x1000, 0xc42288c100, 0xc42008b788, 0x6)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c9a8, 0xc421a89000, 0x1000, 0x1000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
bufio.(*Reader).Read(0xc42006baa0, 0xc42031c510, 0x1, 0x9, 0xc4204e5910, 0x58136a, 0xc42288c100)
/usr/local/Cellar/go/1.10/libexec/src/bufio/bufio.go:216 +0x238
io.ReadAtLeast(0xad5000, 0xc42006baa0, 0xc42031c510, 0x1, 0x9, 0x1, 0xc42008b780, 0x3, 0xc420030070)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:309 +0x86
io.ReadFull(0xad5000, 0xc42006baa0, 0xc42031c510, 0x1, 0x9, 0x428f34, 0xa8ca70, 0xc4204e59c8)
/usr/local/Cellar/go/1.10/libexec/src/io/io.go:327 +0x58
encoding/gob.decodeUintReader(0xad5000, 0xc42006baa0, 0xc42031c510, 0x9, 0x9, 0xc42125c9a8, 0xc420370998, 0xc4204e5a18, 0x428639)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decode.go:120 +0x63
encoding/gob.(*Decoder).recvMessage(0xc42288c180, 0xc4204e5a30)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:80 +0x57
encoding/gob.(*Decoder).decodeTypeSequence(0xc42288c180, 0xa8ca00, 0xc42288c180)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:142 +0x136
encoding/gob.(*Decoder).DecodeValue(0xc42288c180, 0x964000, 0xc42031c508, 0x16, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:210 +0xdc
encoding/gob.(*Decoder).Decode(0xc42288c180, 0x964000, 0xc42031c508, 0xc42114e048, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/encoding/gob/decoder.go:187 +0x14f
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc4201861b0, 0xc42125c9a8)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:762 +0x11a
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
/Users/skysniper/go/src/github.com/nknorg/nkn/net/chord/net.go:741 +0x267

goroutine 1888 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a90c848, 0x72, 0xc42091ddc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc42288d498, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc42288d498, 0xc4227b8000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc42288d480, 0xc4227b8000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc42288d480, 0xc4227b8000, 0x3fff, 0x4000, 0x18, 0xc420329180, 0xc422dcdca0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c760, 0xc4227b8000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc421ef4000)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).Connect
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:271 +0x59e

goroutine 261 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86d158, 0x72, 0xc4208eddc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421cb6198, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc421cb6198, 0xc421e66000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421cb6180, 0xc421e66000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc421cb6180, 0xc421e66000, 0x3fff, 0x4000, 0x18, 0xc420232680, 0xc422df5560)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c340, 0xc421e66000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc420ad8900)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).initConnection
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:166 +0x8a

goroutine 427 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86cad8, 0x72, 0xc4208e7dc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc421cb6618, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:85 +0x9b
internal/poll.(*pollDesc).waitRead(0xc421cb6618, 0xc421efa000, 0x3fff, 0x4000)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc421cb6600, 0xc421efa000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/internal/poll/fd_unix.go:157 +0x17d
net.(*netFD).Read(0xc421cb6600, 0xc421efa000, 0x3fff, 0x4000, 0x18, 0xc4233d5200, 0xc42359f8c0)
/usr/local/Cellar/go/1.10/libexec/src/net/fd_unix.go:202 +0x4f
net.(*conn).Read(0xc42125c650, 0xc421efa000, 0x3fff, 0x4000, 0x0, 0x0, 0x0)
/usr/local/Cellar/go/1.10/libexec/src/net/net.go:176 +0x6a
github.com/nknorg/nkn/net/node.(*node).rx(0xc420ad8b40)
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:100 +0xf0
created by github.com/nknorg/nkn/net/node.(*node).initConnection
/Users/skysniper/go/src/github.com/nknorg/nkn/net/node/link.go:166 +0x8a

goroutine 364 [IO wait]:
internal/poll.runtime_pollWait(0x7f345a86ca08, 0x72, 0xc421caedc8)
/usr/local/Cellar/go/1.10/libexec/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc420135018, 0x72, 0xffffffffffffff00, 0xad6860, 0xd8a4b

make test is failing currently

Description of the issue

make test is failing currently. Turns out that porpackage_test.go:48 is failing where we are trying to create NewPorPackage with a given transaction. The test is trying to fetch HeightByBlockHash which is failing currently.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS: Fedora 28
  • Go version: 1.10.4
  • Release tag/commit of the code 79268403cc544eb0cf84357cc179a56540499787

Expected behaviour

Tests should pass.

Actual behaviour

Tests are failing.

Steps to reproduce

Just execute make test

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

The blockhash being provided to height, err := Store.GetHeightByBlockHash(blockHash) is all zeroes.

Sync between node neighbors and chord finger table

Currently node neighbors are read from chord finger table. It would be good to add 2-way binding to make sure they are always sync. E.g. when a node neighbor connection is lost, also remove it from finger table.

Move to Go Modules

Glide wasn't maintained since Sep 26, 2018 and Go 1.13 scheduled for August 2019 will deprecate GOPATH and use Go Modules by default. Moving forward we should stop using glide and start using modules.

Adding Node public key in getnodestate-RPC

Description of the issue

Hence we can parse the public key of the used nodes from the transaction payload it would be nice to get the node’s public key from the getnodestate RPC call.

In combination with the nknx nodecrawler we could then backtrace the way packets are relayed based on the geographic position and also create more „node utilization“ statistics.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
  • Go version
  • Release tag/commit of the code

Expected behaviour

What should happen?

Actual behaviour

What is actually happening?

Steps to reproduce

  1. Provide detailed steps
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

If necessary, provide some extra information like code-snippets or error-logs.

Use ed25519 instead of p256

There are several reasons to switch:

  1. Better performance
  2. Better compatibility with VRF
  3. Prepare to switch to deterministic signature (e.g. XEdDSA) as the RNG could be (and has been) the weak point in security

Chrod vs Kademlia

I have noticed that NKN uses Chord DHT.

What is the reason using Chord over Kademlia, when Kademlia has much simpler (and less error prone) implementation?

Huge log of "too many open files ..."

Description of the issue

Describe the issue you are experiencing.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
    Debian (stretch)
  • Go version
    go version go1.10.3 linux/amd64
  • Release tag/commit of the code
    nknd version v0.1-alpha-95-g51da

Expected behaviour

What should happen?

Actual behaviour

What is actually happening?
Generated 1.7GB size log during 1 second with many "too many open files ..."

Steps to reproduce

probabilistic

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

N/A

image

Chord FindSuccessors met nil Pointer panic during startup

Description of the issue

CI testing large-scale startup, from 1 create node outspread to 120 nodes suddenly, one node met nil Pointer panic during the first time FindSuccessors.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
    latest version of dev-testing branch
  • This issue has not been reported earlier.

Your environment

  • OS
    Debian GNU/Linux 9 (stretch)
  • Go version
    go version go1.10.3 linux/amd64
  • Release tag/commit of the code
    v0.1-alpha-103-ge3abc

Expected behaviour

What should happen?
node join NKN network successful and participate in consensus activity.

Actual behaviour

What is actually happening?
Panic due to met nil Pointer at first time FindSuccessors().

Steps to reproduce

  1. Provide detailed steps
  • Running the first node(create node)
  • Booting 120 VMs to join nkn from create node at the same time
  1. how to reproduce this issue
    Refer to above.

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

2018/08/27 10:33:27.207151 [INFO ] GID 1, Node version:  v0.1-alpha-103-ge3abc
2018/08/27 10:33:27 GetNodeState: {"id":0,"jsonrpc":"2.0","result":{"State":0,"SyncState":"PersistFinished","Port":0,"NodePort":30001,"ChordPort":30000,"JsonPort":30003,"WsPort":30002,"Addr":"35.197.90.102","ID":12549842751938768130,"Time":1535366007409311215,"Version":0,"Services":0,"Relay":true,"Height":0,"TxnCnt":0,"RxTxnCnt":0,"ChordID":"1628b492a9b6b0a1d2f207a8cd2d65e3e0883034005538cf9b06f70ed29f4ca6"}}
2018/08/27 10:33:27 NodeInfo: {2.0 0 {0 PersistFinished 0 30001 30000 30003 30002 35.197.90.102 12549842751938768130 1535366007409311215 0 0 true 0 0 0 1628b492a9b6b0a1d2f207a8cd2d65e3e0883034005538cf9b06f70ed29f4ca6}}
2018/08/27 10:33:27.481611 [INFO ] GID 1, Connect to Seed [35.197.90.102:30003] successful
2018/08/27 10:33:27 genId(35.234.137.35:30000@0) = 9c56c2d24cf17c5ae49e04b2a62c9c0c70409f4f19566951a25e4e26b51be1ef
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x7661a6]

goroutine 26 [running]:
panic(0x904260, 0xc918f0)
	/usr/lib/go-1.10/src/runtime/panic.go:551 +0x3c1 fp=0xc420167a48 sp=0xc4201679a8 pc=0x42aed1
runtime.panicmem()
	/usr/lib/go-1.10/src/runtime/panic.go:63 +0x5e fp=0xc420167a68 sp=0xc420167a48 pc=0x429dae
runtime.sigpanic()
	/usr/lib/go-1.10/src/runtime/signal_unix.go:388 +0x17a fp=0xc420167ab8 sp=0xc420167a68 pc=0x43ffba
github.com/nknorg/nkn/net/chord.(*localVnode).FindSuccessors(0xc420370aa0, 0x1, 0xc42035ee40, 0x20, 0x20, 0x8f3b40, 0xc4203c66c8, 0xc42003e508, 0x92ba80, 0xc4202700c0)
	/home/admin/nknorg/src/github.com/nknorg/nkn/net/chord/vnode.go:319 +0x56 fp=0xc420167bc0 sp=0xc420167ab8 pc=0x7661a6
github.com/nknorg/nkn/net/chord.(*TCPTransport).handleConn(0xc420068e40, 0xc42000e890)
	/home/admin/nknorg/src/github.com/nknorg/nkn/net/chord/net.go:772 +0xf7a fp=0xc420167fd0 sp=0xc420167bc0 pc=0x76076a
runtime.goexit()
	/usr/lib/go-1.10/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc420167fd8 sp=0xc420167fd0 pc=0x457a51
created by github.com/nknorg/nkn/net/chord.(*TCPTransport).listen
	/home/admin/nknorg/src/github.com/nknorg/nkn/net/chord/net.go:651 +0x227

Use deterministic signature

RNG is probably one of the weakest point in EC based signature. Signing different msg with the same random number will immediately leak the private key. Switching to deterministic EC based signature where the random number is changed to the hash of the msg and private key (e.g. XEdDSA) could solve the problem by making sure different msg are signed with different "random" number.

NKN node on a Raspberry Pi

Description of the issue

NKN team can you please make a YouTube video on how to set up a NKN node on a Raspberry Pi? It would be a good way to grow the NKN network since it has a lower barrier of entry cost wise.

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • [x ] This issue has not been reported earlier.

Good suggestion, currently the software is written in Golang, it support to be compiled & running for arm processor which the Raspberry Pi used. but currently we are still focus on PC as the first priority due to lack of hands, if someone in community would like to do this, we'd glad to support no matter in technical or incentive.

nil pointer crash when checkPredecessor in Chord stabilize

Description of the issue

nknd crashed

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
    Linux 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64 GNU/Linux
    Debian GNU/Linux 9 (stretch)
  • Go version
    go version go1.11 linux/amd64
  • Release tag/commit of the code
    commit 3b324d2

Expected behaviour

No crash in any time.

Actual behaviour

image

Steps to reproduce

Unknown. Can't reproduce every time.

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

2018/10/19 02:48:38 [INFO] Disconnect with 1 chord nodes at 217.61.112.242:30000.
2018/10/19 02:48:38 [INFO] Disconnect with 1 chord nodes at 104.199.252.161:30000.
2018/10/19 02:48:38 [INFO] Disconnect with 3 chord nodes at 35.237.147.141:30000.
2018/10/19 02:48:38 [INFO] Disconnect with 1 chord nodes at 185.228.232.153:30000.
2018/10/19 02:48:38 [INFO] Disconnect with 1 chord nodes at 188.65.233.36:30000.
2018/10/19 02:48:38 [INFO] Disconnect with 1 chord nodes at 35.231.16.126:30000.
2018/10/19 02:48:38 [INFO] Disconnect with 1 chord nodes at 89.36.220.154:30000.
2018/10/19 02:48:38 [INFO] Disconnect with 1 chord nodes at 35.194.83.8:30000.
2018/10/19 02:48:39 [ERR] Error notifying predecessor: Predecessor is nil
2018/10/19 02:48:39.688089 [WARN ] GID 512, Failed to contact 3a4a8b137999b47f76aed2931aee6fc9888d9492696df0d6bb334c87222222ae. Got write tcp 10.168.0.9:46246->165.227.216.166:30000: write: broken pipe
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x861da5]

goroutine 12394 [running]:
github.com/nknorg/nkn/net/chord.(*localVnode).checkPredecessor(0xc0003781e0, 0x0, 0x0)
	/home/admin/nknorg/src/github.com/nknorg/nkn/net/chord/vnode.go:368 +0x95
github.com/nknorg/nkn/net/chord.(*localVnode).stabilize(0xc0003781e0)
	/home/admin/nknorg/src/github.com/nknorg/nkn/net/chord/vnode.go:125 +0x1d4
github.com/nknorg/nkn/net/chord.(*localVnode).stabilize-fm()
	/home/admin/nknorg/src/github.com/nknorg/nkn/net/chord/vnode.go:79 +0x2a
created by time.goFunc
	/usr/local/go/src/time/sleep.go:172 +0x44

API getUnspendOutput panic when input incorrect wallet address

Description of the issue

Request getUnspendOutput API with incorrect wallet address parameter, one of RPCServer goroutine panic due to "slice bounds out of range"

Issue-Type (put a x sign in the square brackets)

  • bug report
  • feature request
  • Documentation improvement

Checklist

  • Running latest version of code.
  • This issue has not been reported earlier.

Your environment

  • OS
    Debian GNU/Linux 9 (stretch)
    Linux localhost 4.9.0-6-amd64 SMP Debian 4.9.88-1+deb9u1 (2018-05-07) x86_64 GNU/Linux
  • Go version
    go version go1.10.3 linux/amd64
  • Release tag/commit of the code
    nknd version v0.5.3-alpha-1-ga405

Expected behaviour

What should happen?

Actual behaviour

Request getUnspendOutput API with incorrect wallet address parameter, one of RPCServer goroutine panic due to "slice bounds out of range"

Steps to reproduce

  1. Provide detailed steps
  2. how to reproduce this issue

Any extra info ( for eg. code snippet to reproduce, logs, etc. )

2018/11/15 11:35:32 http: panic serving 86.2.243.234:44620: runtime error: slice bounds out of range
goroutine 27024556 [running]:
net/http.(*conn).serve.func1(0xc424cc4280)
	/usr/lib/go-1.10/src/net/http/server.go:1726 +0xd0
panic(0xa7b340, 0xfc6b80)
	/usr/lib/go-1.10/src/runtime/panic.go:502 +0x229
github.com/nknorg/nkn/common.ToScriptHash(0xc436dfc840, 0x1b, 0x0, 0x0, 0xc400000000, 0xa76920, 0xc475118450)
	/home/admin/nknorg/src/github.com/nknorg/nkn/common/uint160.go:114 +0x37c
github.com/nknorg/nkn/api/common.getUnspendOutput(0xbc4b40, 0xc420069da0, 0xc431125ce0, 0x6)
	/home/admin/nknorg/src/github.com/nknorg/nkn/api/common/interfaces.go:969 +0x3f8
github.com/nknorg/nkn/api/httpjson.(*RPCServer).Handle(0xc420069da0, 0xbc8760, 0xc4486bdea0, 0xc42732eb00)
	/home/admin/nknorg/src/github.com/nknorg/nkn/api/httpjson/RPCserver.go:85 +0x4a2
github.com/nknorg/nkn/api/httpjson.(*RPCServer).Handle-fm(0xbc8760, 0xc4486bdea0, 0xc42732eb00)
	/home/admin/nknorg/src/github.com/nknorg/nkn/api/httpjson/RPCserver.go:185 +0x48
net/http.HandlerFunc.ServeHTTP(0xc42028a9b0, 0xbc8760, 0xc4486bdea0, 0xc42732eb00)
	/usr/lib/go-1.10/src/net/http/server.go:1947 +0x44
net/http.(*ServeMux).ServeHTTP(0xc422cb0450, 0xbc8760, 0xc4486bdea0, 0xc42732eb00)
	/usr/lib/go-1.10/src/net/http/server.go:2337 +0x130
net/http.serverHandler.ServeHTTP(0xc420159860, 0xbc8760, 0xc4486bdea0, 0xc42732eb00)
	/usr/lib/go-1.10/src/net/http/server.go:2694 +0xbc
net/http.(*conn).serve(0xc424cc4280, 0xbc9060, 0xc452b8ddc0)
	/usr/lib/go-1.10/src/net/http/server.go:1830 +0x651
created by net/http.(*Server).Serve
	/usr/lib/go-1.10/src/net/http/server.go:2795 +0x27b

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.