Tendermint Upgrade - Commit Size Reduction

Tendermint blocks contain a Commit structure that is a list of Votes, where each Vote has about 80 bytes of redundant data. With 100 validators, that means each block on the Cosmos Hub has ~8kB of unnecessary data. That’s ~100MB/day, and over 30GB/year.

There is a proposal in ADR-025
to deduplicate this data, saving all our hard drives from it. It also saves some bandwidth, and will be especially beneficial to light clients and IBC, both of which depend on receiving and verifying Commit structures.

This thread is to gauge interest in and gather feedback on an upgrade plan for this improvement, which will be a breaking change on the Tendermint block data structure that will require a dump/restart of state. While it could be bundled with a larger upgrade further down the line (eg. IBC), it would in the meantime provide benefits to all Tendermint users and would allow dependencies of IBC
(ie. the Commit structure) to stabilize before the IBC upgrade itself.

Preparatory development has already been done in a series of PRs (#3245, #3275, #3298) that prepare the codebase for the final breaking change. The final changes are awaiting a greater sense of when the community would be looking to adopt the breaking upgrade, but should be relatively quick to implement.

We could also take the opportunity to make some other minor breaking changes that would reduce the header size, for instance by removing the NumTx and TotalTx fields - ie. abci: Remove TotalTxs from BlockHeader · Issue #2521 · tendermint/tendermint · GitHub