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.
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 intobuild/bin/statusd
)make statusgo-android
(builds .aar filebuild/android-16/aar
)make statusgo-ios
andmake statusgo-ios-simulator
(builds iOS related artifacts inbuild/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.
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
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.
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 ./api/ -testify.m ^RPCSendTransaction$
Note -testify.m
as testify/suite is used to group individual tests.