Introduce flag to enable sentry nodes to participate in grandpa gossip (#3018)

Given the following situation: A validator 'A' is not supposed to be
connected to the public internet to protect it from e.g. a DoS attack.
Instead it connects to a sentry node 'sentry-A' which connects to the
public internet. Validator 'B' can reach validator 'A' via sentry node
'sentry-A' and vice versa.

A sentry node needs to participate in the grandpa gossip without
becoming a validator itself in order to forward these message to its
validator. This commit adds a new command line flag (`--grandpa-voter`)
forcing a node to participate in the grandpa voting process even though
no `--key` was specified. Due to the fact that it does not have a key,
it does not become a validator in the network.

In order to simulate the above situation this commit also adds a Docker
Compose file (`scripts/sentry-node/docker-compose.yml`) with further
documentation.
This commit is contained in:
Max Inden
2019-07-09 18:35:37 +02:00
committed by Gavin Wood
parent 2c5a3b84db
commit 6639ab339a
6 changed files with 153 additions and 3 deletions
+3 -2
View File
@@ -125,7 +125,7 @@ construct_service_factory! {
};
match config.local_key {
None => {
None if !service.config.grandpa_voter => {
service.spawn_task(Box::new(grandpa::run_grandpa_observer(
config,
link_half,
@@ -133,7 +133,8 @@ construct_service_factory! {
service.on_exit(),
)?));
},
Some(_) => {
// Either config.local_key is set, or user forced voter service via `--grandpa-voter` flag.
_ => {
let telemetry_on_connect = TelemetryOnConnect {
telemetry_connection_sinks: service.telemetry_on_connect_stream(),
};