The Status module that consumes go-ethereum https://status.im
Go to file
Dmitry Shulyak 2d964bfe9f Remove async operations from node manager (#584)
The main goal of this change is to remove async operations from node manager.
Additionally all of the signals from node manager are moved to status backend.

All of the async operation now will have the following behaviour:
- If node in the correct state exit immediatly without error
- If node not in the correct state exit immediatly with error
- In all other cases spawn a goroutine with wanted operation
- All the progress regarding that operation will be reported
  by using signals
- Signals should be handled in once place, which is StatusBackend

There are 2 potentially breaking changes:
- Empty event field will be ommited when Envelope is sent to a client
- All errors will be delivered to a client as an Envelope, previously
  some errors (NodeExists, NoRunningNode) were delivered synchronously

Signed-off-by: Dmitry Shulyak <yashulyak@gmail.com>
2018-02-09 14:37:56 +01:00
.github Update github-bot.yml 2018-02-08 13:00:10 +01:00
build Get rid of build/env.sh Fixes #418 (#446) 2017-11-04 00:20:17 -04:00
ci Add vendor-check script, Makefile target and CI step (#581) 2018-02-01 18:14:51 +01:00
cmd Remove async operations from node manager (#584) 2018-02-09 14:37:56 +01:00
docker Make whisper nodes reachable from prometheus by sharing a network 2018-02-02 15:22:22 +02:00
extkeys Fix make lint warnings (#417) 2017-10-20 12:06:22 +03:00
geth Remove async operations from node manager (#584) 2018-02-09 14:37:56 +01:00
geth-patches Maintain local copy of the nonce for each used address (#538) 2018-02-08 00:23:57 +02:00
lib Remove async operations from node manager (#584) 2018-02-09 14:37:56 +01:00
metrics Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
profiling Remove unused `helpers` package with single subpackage. 2018-02-02 16:55:42 +01:00
static Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
t Remove async operations from node manager (#584) 2018-02-09 14:37:56 +01:00
vendor Maintain local copy of the nonce for each used address (#538) 2018-02-08 00:23:57 +02:00
xgo Fix dependency version to build xgo-ios-simulator image (#542) 2018-01-10 10:37:09 +01:00
.dockerignore Ignore *.test files from all folders (#635) 2018-02-08 14:23:08 +02:00
.gitignore .gitignore: add vim swap files (#545) 2018-01-09 18:28:03 +01:00
.gometalinter.json Sync blockchain before running e2e tests on public testnet #568 (#612) 2018-02-07 11:48:03 +01:00
.travis.yml Fix sync-and-exit option logic (#628) 2018-02-08 10:51:53 +02:00
DEPENDENCIES.md Introduce the dependency vendoring tool: `dep`. (#551) 2018-01-25 14:08:43 +01:00
Dockerfile Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
Gopkg.lock Maintain local copy of the nonce for each used address (#538) 2018-02-08 00:23:57 +02:00
Gopkg.toml Add support for metrics (#558) 2018-01-30 12:51:48 +01:00
Jenkinsfile add 'g' prefix before artifact SHA (#358) 2017-09-25 18:06:13 +02:00
Jenkinsfile-manual send message with build version in slack (parametrized build) (#495) 2017-12-05 09:35:12 +01:00
LICENSE.md Create LICENSE.md 2016-09-21 10:00:29 +08:00
Makefile Group tests in a dedicated testing package (#629) 2018-02-08 13:52:47 +01:00
README.md Group tests in a dedicated testing package (#629) 2018-02-08 13:52:47 +01:00
package-lock.json Refactor shh_requestMessages method (#513) 2017-12-21 11:26:01 +01:00
package.json Refactor shh_requestMessages method (#513) 2017-12-21 11:26:01 +01:00
patcher Create a script that auto-applies geth-patches #603 (#624) 2018-02-08 13:07:49 +01:00

README.md

Status bindings for go-ethereum

TravisCI Builds GoDoc Master Build Status Develop Build Status

Docs

Intro

status-go is an underlying part of Status - a browser, messenger, and gateway to a decentralized world.

It's written in Go and requires Go 1.8 or above.

It uses Makefile to do most common actions. See make help output for available commands.

status-go uses forked ethereum-go with some patches applied in it, located under vendor/ directory. See geth-patches README for more info.

Build

There are two main modes status-go can be built:

  • standalone server
  • library to link for Android or iOS

Use following Makefile commands:

  • make statusgo (builds binary into build/bin/statusd)
  • make statusgo-android) (builds .aar file build/android-16/aar)
  • make statusgo-ios and make statusgo-ios-simulator (builds iOS related artifacts in build/os-9.3/framework)

Testing

To setup accounts passphrase you need to setup an environment variable: export ACCOUNT_PASSWORD="secret_pass_phrase".

Make sure the dependencies are installed first by running:

make lint-install
make mock-install

To test fully statusgo, use:

make ci

To test statusgo using a given network by name, use:

make ci networkid=rinkeby

To test statusgo using a given network by number ID, use:

make ci networkid=3

If you have problems running tests on public network we suggest reading e2e guide.

If you want to launch specific test, for instance RPCSendTransactions, use the following command:

go test -v ./geth/api/ -testify.m ^RPCSendTransaction$

Note -testify.m as testify/suite is used to group individual tests.

Licence

Mozilla Public License 2.0