The Status module that consumes go-ethereum https://status.im
Go to file
Dmitry Shulyak 5014e4e3b0
Fix two race conditions in peerpool tests (#827)
Multiple concurrent topic pool stops could result in the close of the closed
quit channel. Fixed by using atomic compare and swap and closing only if swap
happened.

Added events feed to peer pool for tests purpose. Otherwise it is impossible to run
simulation with -race flag enabled. In the essence it happens because we are managing global
object , which is server.Discv5, but unfortunately there is no way around it.
2018-04-13 11:34:30 +03:00
.github Move CONTRIBUTING.md to top level (#798) 2018-04-04 12:51:05 +02:00
_assets Expose only public APIs in inproc RPC client [breaking-change] (#815) 2018-04-12 18:17:10 +02:00
cmd Add tests for topic flags 2018-04-10 16:18:02 +03:00
extkeys use iota to define entropy strengths 2018-03-15 00:29:56 +01:00
geth Fix two race conditions in peerpool tests (#827) 2018-04-13 11:34:30 +03:00
lib Generalize signing requests. 2018-04-09 20:48:00 +02:00
metrics Move status-go over to go-ethereum/log #717 (#727) 2018-03-20 19:35:28 +01:00
profiling Add profiling with pprof (#754) 2018-03-23 14:58:40 +01:00
shhext Implement shh api extension that allows to confirm that message is sent (#814) 2018-04-11 18:41:51 +03:00
sign Generalize signing requests. 2018-04-09 20:48:00 +02:00
static Update bindata 2018-04-09 15:42:36 +02:00
t Expose only public APIs in inproc RPC client [breaking-change] (#815) 2018-04-12 18:17:10 +02:00
vendor Expose only public APIs in inproc RPC client [breaking-change] (#815) 2018-04-12 18:17:10 +02:00
.dockerignore Ignore *.test files from all folders (#635) 2018-02-08 14:23:08 +02:00
.gitignore Remove unused JavaScript tests for RPC API (#737) 2018-03-16 18:49:42 +01:00
.gometalinter.json Disable unparam linter 2018-02-19 11:40:08 +01:00
.travis.yml Run lint and vendor-check on the same travis stage (#802) 2018-04-05 14:37:39 +02:00
CONTRIBUTING.md Move CONTRIBUTING.md to top level (#798) 2018-04-04 12:51:05 +02:00
Gopkg.lock Peer pool to manage v5 peers (#736) 2018-04-10 09:44:09 +03:00
Gopkg.toml Update bindata 2018-04-09 15:42:36 +02:00
LICENSE.md Create LICENSE.md 2016-09-21 10:00:29 +08:00
Makefile Expose only public APIs in inproc RPC client [breaking-change] (#815) 2018-04-12 18:17:10 +02:00
README.md Quick fix of broken link to CONTRIBUTE.md (#799) 2018-04-04 14:16:05 +03: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 go-ethereum 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)

In order to build and use status-go directly from status-react, follow the instructions in https://wiki.status.im/Building_Status, under the 'Building Status with the checked-out version of status-go' section.

Debugging

In order to see the log files while debugging on an Android device, do the following:

  • Ensure that the app can write to disk by granting it file permissions. For that, you can for instance set your avatar from a file on disk.
  • Connect a USB cable to your phone and make sure you can use adb.

Run

adb shell tail -f sdcard/Download/geth.log

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