nimbus-eth2/beacon_chain/networking
Jacek Sieka 867d8f3223
Perform attestation check before broadcast (#2550)
Currently, we have a bit of a convoluted flow where when sending
attestations, we start broadcasting them over gossip then pass them to
the attestation validation to include them in the local attestation pool
- it should be the other way around: we should be checking attestations
_before_ gossipping them - this serves as an additional safety net to
ensure that we don't publish junk - this becomes more important when
publishing attestations from the API.

Also, the REST API was performing its own validation meaning
attestations coming from REST would be validated twice - finally, the
JSON RPC wasn't pre-validating and would happily broadcast invalid
attestations.

* Unified attestation production pipeline with the same flow for gossip,
locally and API-produced attestations: all are now validated and entered
into the pool, then broadcast/republished
* Refactor subnet handling with specific SubnetId alias, streamlining
where subnets are computed, avoiding the need to pass around the number
of active validators
* Move some of the subnet handling code to eth2_network
* Use BitArray throughout for subnet handling
2021-05-10 09:13:36 +02:00
..
README.md Reorg (5/5) (#2377) 2021-03-05 14:12:00 +01:00
eth2_discovery.nim EH cleanup (#2455) 2021-03-26 07:52:01 +01:00
eth2_network.nim Perform attestation check before broadcast (#2550) 2021-05-10 09:13:36 +02:00
faststreams_backend.nim Reorg (5/5) (#2377) 2021-03-05 14:12:00 +01:00
libp2p_json_serialization.nim EH cleanup (#2455) 2021-03-26 07:52:01 +01:00
libp2p_streams_backend.nim Reorg (5/5) (#2377) 2021-03-05 14:12:00 +01:00
network_metadata.nim json cleanups (#2456) 2021-03-26 15:11:06 +01:00
peer_pool.nim EH cleanup (#2455) 2021-03-26 07:52:01 +01:00

README.md

Networking

This folders hold a collection of modules to:

  • configure the Eth2 P2P network
  • discover, connect, and maintain quality Eth2 peers

Data received is handed other to the ../gossip_processing modules for validation.

Security concerns

  • Collusion: part of the peer selection must be kept random. This avoids peers bringing all their friends and colluding against a beacon node.
  • Denial-of-service: The beacon node must provide ways to handle burst of data that may come:
    • from malicious nodes trying to DOS us
    • from long periods of non-finality, creating lots of forks, attestations, forks