One problem in ethereum is the public proposer election and the ability to map validator to IP and thus DoS all proposers one by one. Also, when upgrading, all peers are lost and it takes time to build up a healthy mesh.
Both these problems can be mitigated by running several beacon nodes in a trusted setup - there are several pieces needed to achieve this:
[ ] Add command line option to specify trusted peers by ip, libp2p multiaddr or ENR
[ ] Should not be disconnected because of score issues
[ ] Should not count towards peer limit
[ ] Should always be part of mesh, without counting towards D
Blocks and attestations in particular should always be sent to the trusted peers so as to ensure multiple egresses to the "public" network
[ ] Needs documentation to explain how it can be used (with era files, could share era store
We currently have the --direct-peer option - it bits and pieces of the above but needs more work
One way to test this: run two nodes, one without bootnodes/discovery and one "normal" - have them trust each other - both nodes should follow the chain.
bonus: add a third node connected only to the first node.
One problem in ethereum is the public proposer election and the ability to map validator to IP and thus DoS all proposers one by one. Also, when upgrading, all peers are lost and it takes time to build up a healthy mesh.
Both these problems can be mitigated by running several beacon nodes in a trusted setup - there are several pieces needed to achieve this:
We currently have the
--direct-peer
option - it bits and pieces of the above but needs more work