The Status module that consumes go-ethereum https://status.im
Go to file
Dmitry Shulyak a609b468fe
Mail peer store and connection manager (#1295)
This change implements connection manager that monitors 3 types of events:
1. update of the selected mail servers
2. disconnect from a mail server
3. errors for requesting mail history

When selected mail servers provided we will try to connect with as many as possible, and later disconnect the surplus. For example if we want to connect with one mail server and 3 were selected, we try to connect with all (3), and later disconnect with 2. It will to establish connection with live mail server faster.

If mail server disconnects we will choose any other mail server from the list of selected. Unless we have only one mail server. In such case we don't have any other choice and we will leave things as is.

If request for history was expired we will disconnect such peer and try to find another one. We will follow same rules as described above.

We will have two components that will rely on this logic:
1. requesting history

If target peer is provided we will use that peer, otherwise we will request history from any selected mail server that is connected at the time of request.

2. confirmation from selected mail server

Confirmation from any selected mail server will bee used to send a feedback that envelope was sent.

I will add several extensions, but probably in separate PRs:
1. prioritize connection with mail server that was used before reboot
2. disconnect from mail servers if history request wasn't expired but failed.
3. wait some time in RequestsMessage RPC to establish connection with any mail server

Currently this feature is hidden, as certain changes will be necessary in status-react. 

partially implements: https://github.com/status-im/status-go/issues/1285
2018-12-05 15:57:05 +02:00
.github Reduce number of days required to consider a PR stale to 14 2018-11-20 13:14:33 +01:00
.vscode Streamline configuration in status-go. Part of #1180 (#1183) 2018-09-13 18:31:29 +02:00
_assets Notify user when the device is missing (#1298) 2018-12-05 09:22:49 +01:00
account Update to geth 1.8.11. Closes #1033 2018-06-22 18:04:13 +02:00
api Change `NotifyUsers` to allow only data JSON element. Part of status-im/status-react#6772 2018-11-30 13:26:27 +01:00
cmd Mail peer store and connection manager (#1295) 2018-12-05 15:57:05 +02:00
config Ensure that `NewNodeConfigWithDefaults` builds a valid configuration 2018-11-09 17:02:55 +01:00
contracts Feature/mailserver registry smart contract (#1135) 2018-08-20 15:55:43 +02:00
db Centralize leveldb.OpenFile allowing Recover corrupted db everywhere (#1072) 2018-07-02 10:42:16 +02:00
discovery Upgrade geth 1.8.17 plus add metrics during compilation time (#1273) 2018-11-14 08:03:58 +01:00
extkeys fix child keys derivation adding bytes padding (#1139) 2018-09-04 09:42:40 +02:00
lib Change `NotifyUsers` to allow only data JSON element. Part of status-im/status-react#6772 2018-11-30 13:26:27 +01:00
logutils Add LogEnabled attribute to NodeConfig to, used in the call from status-react (#866) 2018-04-26 18:28:42 +02:00
mailserver add mailserver batch requests counter and network processing time (#1280) 2018-11-19 10:14:03 +01:00
metrics/node fix collecting p2p/Peers metric (#1269) 2018-11-12 10:27:09 +01:00
node Upgrade geth 1.8.17 plus add metrics during compilation time (#1273) 2018-11-14 08:03:58 +01:00
notifications/push Change `NotifyUsers` to allow only data JSON element. Part of status-im/status-react#6772 2018-11-30 13:26:27 +01:00
notifier Notifier package to interact with gorush notifications (#910) 2018-05-08 16:30:03 +02:00
params Improve Makefile (#1275) 2018-11-20 11:13:42 +01:00
peers Upgrade geth 1.8.17 plus add metrics during compilation time (#1273) 2018-11-14 08:03:58 +01:00
profiling Add profiling with pprof (#754) 2018-03-23 14:58:40 +01:00
rpc Block some JSON-RPC methods completely 2018-08-02 09:07:55 +02:00
services Mail peer store and connection manager (#1295) 2018-12-05 15:57:05 +02:00
signal Mailserver: return error response. (#1244) 2018-10-18 12:25:00 +02:00
static Add enabling/disabling of installations (#1264) 2018-11-06 09:05:32 +01:00
t Mail peer store and connection manager (#1295) 2018-12-05 15:57:05 +02:00
timesource Sanity validate ntp response 2018-06-08 19:10:29 +03:00
transactions tune CLI for better docs experience (#1207) 2018-09-21 16:09:31 +02:00
vendor Mail peer store and connection manager (#1295) 2018-12-05 15:57:05 +02:00
.codeclimate.yml #759 Codeclimate config (#843) 2018-04-23 15:55:21 +02:00
.dockerignore Ignore *.test files from all folders (#635) 2018-02-08 14:23:08 +02:00
.gitignore Fix xgo creating files as `root` (#1210) 2018-09-24 22:21:13 +02:00
.golangci.yml update golangci to 1.10.2 (#1246) 2018-10-17 12:17:58 +02:00
.travis.yml Add `canary-test` make target to test beta fleet mailservers. Closes #1274 2018-11-19 19:02:32 +01:00
CONTRIBUTING.md Move CONTRIBUTING.md to top level (#798) 2018-04-04 12:51:05 +02:00
Gopkg.lock Mail peer store and connection manager (#1295) 2018-12-05 15:57:05 +02:00
Gopkg.toml Mail peer store and connection manager (#1295) 2018-12-05 15:57:05 +02:00
LICENSE.md Create LICENSE.md 2016-09-21 10:00:29 +08:00
Makefile Improve Makefile (#1275) 2018-11-20 11:13:42 +01:00
README.md Automate github releases (#1263) 2018-11-05 15:02:16 +01:00
VERSION Notify user when the device is missing (#1298) 2018-12-05 09:22:49 +01:00

README.md

Status bindings for go-ethereum

TravisCI Builds GoDoc Master Build Status Develop Build Status

Docs

License

Mozilla Public License 2.0

Releasing

To create a release, first increase the VERSION file according to semantic versioning.

You can then build the artifacts for the specific platform.

Once done, you can run:

make prepare-release

and

make release release_branch={{release_branch}}

Where release_branch is the branch you are targeting. You will also need to specify some form of credentials, GITHUB_TOKEN environment variable for example.