Test Details Overview

Add vote relay messages and the vote_relay node capability (#5256)

* Consolidate and document node capability flags

The handshake capabilities are not in a release yet, so the flags are
renumbered without a gap: bit 0 is reserved, no_ledger takes bit 1,
topo_index bit 2 and the new vote_relay bit 3. The unused vote_storage
placeholder is gone. Channels answer has_capability for a single flag.

* Add vote_relay_req and vote_relay_ack messages

A vote_relay_req asks a peer advertising the vote_relay capability for
the votes it knows on up to 255 (block hash, root) pairs, from up to 255
named representatives or from any, and either final votes only or any
vote, a choice nano::vote_finality names and vote::satisfies checks a
vote against. The peer answers under the request id with vote_relay_acks of up
to 64 votes each. An ack flagged completed, or one without votes, ends
the answer, and an ack flagged refused tells the requester the peer did
not take the request. vote_relay_ack::batch_votes splits votes into the
acks they fit by count and payload size.

Both messages store their payload length in the header extensions and
ignore trailing bytes, like telemetry and the asc_pull messages, so
newer versions can append fields. Realtime connections accept them; no
component handles them yet, so they are counted as dropped by type.

__________

Type: commit

Hash: df6f91a981baf52104bc90778ccb768d9862353d

Created: today

__________

gr0v1ty/nano-node:df6f91a981baf52104bc90778ccb768d9862353d

Test Results

Test Case Status Duration Median Deviation Log Graph
5n4pr_conf_10k_bintree PASS 108 s -5.5 s GitHub job logs Show
5n4pr_conf_10k_change PASS 128 s -16.5 s GitHub job logs Show
5n4pr_conf_change_dependant PASS 117 s 2.0 s GitHub job logs -
5n4pr_conf_change_independant PASS 109 s -2.5 s GitHub job logs -
5n4pr_conf_send_dependant PASS 116 s 0.5 s GitHub job logs -
5n4pr_conf_send_independant PASS 112 s 0.0 s GitHub job logs -
5n4pr_rocks_10k_bintree PASS 111 s -1.5 s GitHub job logs -
5n4pr_rocks_10k_change PASS 160 s -0.5 s GitHub job logs -