Part of #12679.
Every accepted header is recorded as unknown in the per-connection state of all other peers, and every accepted shard likewise, even though a connection is only ever read for the authors that peer has advertised. That is one copy of each reference per peer, plus a fan-out from the cordial knowledge task to every connection per header, both growing with the committee size. In a healthy network almost none of that state is ever taken.
Key points:
- Headers first; shards keep today's layout, they would need their own index
- A connection should hold entries only for the authors that peer currently advertises, seeded when the advertisement arrives so a peer that starts asking still receives the retained chain
- A header already sent to a peer must not be offered again after a later advertisement
- What an advertising peer receives must not change; the existing bundle-content tests should still hold
- The steady-state size should be visible in the existing cordial knowledge gauges
Part of #12679.
Every accepted header is recorded as unknown in the per-connection state of all other peers, and every accepted shard likewise, even though a connection is only ever read for the authors that peer has advertised. That is one copy of each reference per peer, plus a fan-out from the cordial knowledge task to every connection per header, both growing with the committee size. In a healthy network almost none of that state is ever taken.
Key points: