2017-10-09 14:11:12 +00:00
# Status bindings for go-ethereum
2018-03-01 14:29:36 +00:00
2017-10-09 14:11:12 +00:00
[![TravisCI Builds ](https://img.shields.io/badge/TravisCI-URL-yellowgreen.svg?link=https://travis-ci.org/status-im/status-go )](https://travis-ci.org/status-im/status-go)
[![GoDoc ](https://godoc.org/github.com/status-im/status-go?status.svg )](https://godoc.org/github.com/status-im/status-go) [![Master Build Status ](https://img.shields.io/travis/status-im/status-go/master.svg?label=build/master )](https://github.com/status-im/status-go/tree/master) [![Develop Build Status ](https://img.shields.io/travis/status-im/status-go/develop.svg?label=build/develop )](https://github.com/status-im/status-go/tree/develop)
2016-09-28 14:35:39 +00:00
2017-10-09 14:11:12 +00:00
# Docs
2018-03-01 14:29:36 +00:00
2018-03-01 17:57:10 +00:00
- [How To Build ](https://wiki.status.im/Building_status-go )
- [Notes on Bindings ](https://wiki.status.im/Status-go_Binding_notes )
2018-04-04 11:16:05 +00:00
- [How To Contribute ](CONTRIBUTING.md )
2016-12-19 20:51:08 +00:00
2017-10-09 14:11:12 +00:00
# Intro
2018-03-01 14:29:36 +00:00
2018-03-02 14:36:58 +00:00
status-go is an underlying part of [Status ](https://status.im/ ) - a browser, messenger, and gateway to a decentralized world.
2016-09-28 14:35:39 +00:00
2017-10-09 14:11:12 +00:00
It's written in Go and requires Go 1.8 or above.
2016-09-28 14:35:39 +00:00
2017-10-09 14:11:12 +00:00
It uses Makefile to do most common actions. See `make help` output for available commands.
2016-09-01 13:39:04 +00:00
2018-02-15 09:57:51 +00:00
status-go uses [go-ethereum ](https://github.com/ethereum/go-ethereum ) with [some patches applied ](./_assets/patches/geth ) in it, located under [`vendor/` ](./vendor/github.com/ethereum/go-ethereum ) directory. See [geth patches README ](./_assets/patches/geth/README.md ) for more info.
2016-09-28 12:31:09 +00:00
2017-10-09 14:11:12 +00:00
# Build
2018-03-01 14:29:36 +00:00
2017-10-09 14:11:12 +00:00
There are two main modes status-go can be built:
2018-03-01 14:29:36 +00:00
- standalone server
- library to link for Android or iOS
2017-10-09 14:11:12 +00:00
Use following Makefile commands:
- `make statusgo` (builds binary into `build/bin/statusd` )
2018-03-01 14:29:36 +00:00
- `make statusgo-android` (builds .aar file `build/android-16/aar` )
2017-10-09 14:11:12 +00:00
- `make statusgo-ios` and `make statusgo-ios-simulator` (builds iOS related artifacts in `build/os-9.3/framework` )
2018-03-01 14:29:36 +00:00
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
```shell
adb shell tail -f sdcard/Download/geth.log
```
2018-04-27 15:55:56 +00:00
## IDE Debugging
If you're using Visual Studio Code, you can rename the `.vscode/launch.example.json` file to `launch.json` so that you can run the app with the debugger attached.
2017-10-09 14:11:12 +00:00
# Testing
2018-03-01 14:29:36 +00:00
2017-11-07 17:46:11 +00:00
To setup accounts passphrase you need to setup an environment variable: `export ACCOUNT_PASSWORD="secret_pass_phrase"` .
2018-01-04 16:04:40 +00:00
Make sure the dependencies are installed first by running:
2018-03-01 14:29:36 +00:00
```shell
2018-01-04 16:04:40 +00:00
make lint-install
make mock-install
```
2018-01-29 10:14:55 +00:00
2018-01-04 16:04:40 +00:00
To test fully statusgo, use:
2018-03-01 14:29:36 +00:00
```shell
2018-01-04 16:04:40 +00:00
make ci
```
To test statusgo using a given network by name, use:
2018-03-01 14:29:36 +00:00
```shell
2018-01-04 16:04:40 +00:00
make ci networkid=rinkeby
```
To test statusgo using a given network by number ID, use:
2018-03-01 14:29:36 +00:00
```shell
2018-01-04 16:04:40 +00:00
make ci networkid=3
```
2017-10-09 14:11:12 +00:00
2018-02-08 12:52:47 +00:00
If you have problems running tests on public network we suggest reading [e2e guide ](t/e2e/README.md ).
2018-01-29 10:14:55 +00:00
2017-10-09 14:11:12 +00:00
If you want to launch specific test, for instance `RPCSendTransactions` , use the following command:
2018-03-01 14:29:36 +00:00
```shell
2017-11-04 04:20:17 +00:00
go test -v ./geth/api/ -testify.m ^RPCSendTransaction$
2017-10-09 14:11:12 +00:00
```
Note `-testify.m` as [testify/suite ](https://godoc.org/github.com/stretchr/testify/suite ) is used to group individual tests.
2016-09-28 12:31:09 +00:00
2017-10-09 14:11:12 +00:00
# Licence
2018-03-01 14:29:36 +00:00
2017-10-09 14:11:12 +00:00
[Mozilla Public License 2.0 ](https://github.com/status-im/status-go/blob/develop/LICENSE.md )