From 3ab6026ad70b55ba499c10314701507d0c1b005d Mon Sep 17 00:00:00 2001 From: Erik Grinaker Date: Thu, 2 Apr 2020 15:38:00 +0200 Subject: [PATCH] RFC-001: configurable block retention (#84) * Added RFC for truncated block history coordination * Clarified minimum block retention * Added hard checks on block retention and snapshot interval, and made some minor tweaks * Genesis parameters are immutable * Use local config for snapshot interval * Reordered parameter descriptions * Clarified local config option for snapshot-interval * rewrite for ABCI commit response * Renamed RFC * add block retention diagram * Removed retain_blocks table * fix image numbers * resolved open questions * image quality --- rfc/001-block-retention.md | 108 +++++++++++++++++++++++++++++++++ rfc/images/block-retention.png | Bin 0 -> 53718 bytes 2 files changed, 108 insertions(+) create mode 100644 rfc/001-block-retention.md create mode 100644 rfc/images/block-retention.png diff --git a/rfc/001-block-retention.md b/rfc/001-block-retention.md new file mode 100644 index 000000000..43cfa9d14 --- /dev/null +++ b/rfc/001-block-retention.md @@ -0,0 +1,108 @@ +# RFC 001: Configurable Block Retention + +## Changelog + +- 2020-03-23: Initial draft (@erikgrinaker) +- 2020-03-25: Use local config for snapshot interval (@erikgrinaker) +- 2020-03-31: Use ABCI commit response for block retention hint +- 2020-04-02: Resolved open questions + +## Author(s) + +- Erik Grinaker (@erikgrinaker) + +## Context + +Currently, all Tendermint nodes contain the complete sequence of blocks from genesis up to some height (typically the latest chain height). This will no longer be true when the following features are released: + +* [Block pruning](https://github.com/tendermint/tendermint/issues/3652): removes historical blocks and associated data (e.g. validator sets) up to some height, keeping only the most recent blocks. + +* [State sync](https://github.com/tendermint/tendermint/issues/828): bootstraps a new node by syncing state machine snapshots at a given height, but not historical blocks and associated data. + +To maintain the integrity of the chain, the use of these features must be coordinated such that necessary historical blocks will not become unavailable or lost forever. In particular: + +* Some nodes should have complete block histories, for auditability, querying, and bootstrapping. + +* The majority of nodes should retain blocks longer than the Cosmos SDK unbonding period, for light client verification. + +* Some nodes must take and serve state sync snapshots with snapshot intervals less than the block retention periods, to allow new nodes to state sync and then replay blocks to catch up. + +* Applications may not persist their state on commit, and require block replay on restart. + +* Only a minority of nodes can be state synced within the unbonding period, for light client verification and to serve block histories for catch-up. + +However, it is unclear if and how we should enforce this. It may not be possible to technically enforce all of these without knowing the state of the entire network, but it may also be unrealistic to expect this to be enforced entirely through social coordination. This is especially unfortunate since the consequences of misconfiguration can be permanent chain-wide data loss. + +## Proposal + +Add a new field `retain_height` to the ABCI `ResponseCommit` message: + +```proto +service ABCIApplication { + rpc Commit(RequestCommit) returns (ResponseCommit); +} + +message RequestCommit {} + +message ResponseCommit { + // reserve 1 + bytes data = 2; // the Merkle root hash + uint64 retain_height = 3; // the oldest block height to retain +} +``` + +Upon ABCI `Commit`, which finalizes execution of a block in the state machine, Tendermint removes all data for heights lower than `retain_height`. This allows the state machine to control block retention, which is preferable since only it can determine the significance of historical blocks. By default (i.e. with `retain_height=0`) all historical blocks are retained. + +Removed data includes not only blocks, but also headers, commit info, consensus params, validator sets, and so on. In the first iteration this will be done synchronously, since the number of heights removed for each run is assumed to be small (often 1) in the typical case. It can be made asynchronous at a later time if this is shown to be necessary. + +Since `retain_height` is dynamic, it is possible for it to refer to a height which has already been removed. For example, commit at height 100 may return `retain_height=90` while commit at height 101 may return `retain_height=80`. This is allowed, and will be ignored - it is the application's responsibility to return appropriate values. + +State sync will eventually support backfilling heights, via e.g. a snapshot metadata field `backfill_height`, but in the initial version it will have a fully truncated block history. + +## Cosmos SDK Example + +As an example, we'll consider how the Cosmos SDK might make use of this. The specific details should be discussed in a separate SDK proposal. + +The returned `retain_height` would be the lowest height that satisfies: + +* Unbonding time: the time interval in which validators can be economically punished for misbehavior. Blocks in this interval must be auditable e.g. by the light client. + +* IAVL snapshot interval: the block interval at which the underlying IAVL database is persisted to disk, e.g. every 10000 heights. Blocks since the last IAVL snapshot must be available for replay on application restart. + +* State sync snapshots: blocks since the _oldest_ available snapshot must be available for state sync nodes to catch up (oldest because a node may be restoring an old snapshot while a new snapshot was taken). + +* Local config: archive nodes may want to retain more or all blocks, e.g. via a local config option `min-retain-blocks`. There may also be a need to vary rentention for other nodes, e.g. sentry nodes which do not need historical blocks. + +![Cosmos SDK block retention diagram](images/block-retention.png) + +## Status + +Proposed + +## Consequences + +### Positive + +* Application-specified block retention allows the application to take all relevant factors into account and prevent necessary blocks from being accidentally removed. + +* Node operators can independently decide whether they want to provide complete block histories (if local configuration for this is provided) and snapshots. + +### Negative + +* Social coordination is required to run archival nodes, failure to do so may lead to permanent loss of historical blocks. + +* Social coordination is required to run snapshot nodes, failure to do so may lead to inability to run state sync, and inability to bootstrap new nodes at all if no archival nodes are online. + +### Neutral + +* Reduced block retention requires application changes, and cannot be controlled directly in Tendermint. + +* Application-specified block retention may set a lower bound on disk space requirements for all nodes. + +## References + +- State sync ADR: https://github.com/tendermint/tendermint/blob/master/docs/architecture/adr-053-state-sync-prototype.md + +- State sync issue: https://github.com/tendermint/tendermint/issues/828 + +- Block pruning issue: https://github.com/tendermint/tendermint/issues/3652 diff --git a/rfc/images/block-retention.png b/rfc/images/block-retention.png new file mode 100644 index 0000000000000000000000000000000000000000..e013e1ab383a3b1c7b54246cbfef6ae353758f88 GIT binary patch literal 53718 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 literal 0 HcmV?d00001