Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Towards Tendermint Core 1.0

Towards Tendermint Core 1.0

A preview of the roadmap on the way to Tendermint Core 1.0, and a look back at some of Tendermint Core's history.

Tess Rinearson

December 12, 2020
Tweet

More Decks by Tess Rinearson

Other Decks in Technology

Transcript

  1. Towards Tendermint Core 1.0 T e s s R i

    n e a r s o n V P o f E n g i n e e r i n g , I n t e r c h a i n G m b H @ _ t e s s r D e c e m b e r 2 0 2 0
  2. Agenda • Recap of the last seven years of Tendermint

    Core • Changes introduced in 2020 and Tendermint Core’s Stargate release • Why 1.0 and why now? • Upcoming features and improvements slated for the 1.0 release 2
  3. Seven years of Tendermint Core 3 First commit “Consensus Without

    Mining” published ABCI introduced as “TMSP" Cosmos Hub launch Cosmos Whitepaper published “The Latest Gossip on BFT Consensus” published Stargate - Tendermint 0.34 April 2014 2014 November 2015 March 2019 August 2016 September 2018 November 2020 February 2020 Interchain GmbH founded
  4. Interchain GmbH Interchain GmbH is a new company, focused on

    maintaining and stewarding core technologies for the Cosmos ecosystem. • Formed in early 2020 • Maintainers of Tendermint Core, IBC and Gaia • 14 people, based in Berlin • Learn more at interchain.berlin 4
  5. Stargate Stargate is the most substantial upgrade to the Cosmos

    Hub since launch. • Introduces IBC code to the Hub (although token transfers are initially disabled) • Replaces in-house serialization format with standard and performant Protocol Buffers • For more on the Protocol Buffer change, see Tendermint 0.34, Protocol Buffers, and You 5
  6. Tendermint Core 0.34 Tendermint Core 0.34 is the release that

    supports Stargate. • Protocol Buffer support - faster and easier to use • One Tendermint user (Vocdoni) reported a 58% improvement in throughput1 • State Sync - sync a new code to a preexisting network in minutes instead of days • New light clients - critical for IBC security • More sophisticated evidence handling if/when something goes wrong 6 1 https://twitter.com/vocdoni/status/1337058008183009284
  7. “Tendermint uses Semantic Versioning!!... According to SemVer, anything in the

    public API can change at any time before version 1.0. “To provide some stability to Tendermint users in these 0.X.X days, the MINOR version is used to signal breaking changes across a subset of the total public API. This subset includes all interfaces exposed to other processes (cli, rpc, p2p, etc.), but does not include the Go APIs.” 9
  8. “In an effort to avoid accumulating technical debt prior to

    1.0.0, we do not guarantee that breaking changes (i.e., bumps in the MINOR version) will work with existing Tendermint blockchains. In these cases you will have to start a new blockchain, or write something custom to get the old data into the new chain.” 10
  9. What does 1.0 mean? • Every user-requested feature? • Every

    refactor on our backlog? • Every bug fixed? • Every improvement on our 1.0 Wishlist? • No. Laser-focus on stability and a lean 1.0 release 12
  10. Protocol improvements • Proposer-based timestamps • Updated execution model* •

    Updated Block headers* • Validator address deduplication* • Adoption of ZIP-215 • Upcoming Interchain Conversations talk with Henry de Valence (Zcash Foundation) for more 15 * Pending further design and discussion.
  11. Interface stability • ABCI 1.0 • Upcoming Interchain Conversations talk

    with Dev Ojha (Sikka) for more • Go API stability • Limited “pluggability” 16
  12. Interface stability, cont. • gRPC interface for privval • Wider

    adoption of gRPC* • Upgrade tooling and increased soft-upgrade support • See tendermint/spec#222 17 * Pending further design and discussion.
  13. Spec/docs stability • Unified spec with the Informal team (working

    on Rust implementation) • Specifications with version numbers that adhere to SemVer • Documentation with numbers that adhere to SemVer 18
  14. Performance improvements • Mempool redesign and refactor • Will also

    support more sophisticated application needs • Benchmarks, scalability and performance measurements • Order-preserving database keys 19
  15. Security improvements • P2P refactor - reduction of possible DOS

    vectors • See ADR 61 and ADR 62 • Evidence handling followups • Cross-upgrade accountability 20 Architecture diagram from ADR 62
  16. Correctness through advanced testing • New end-to-end testing suite •

    Jepsen tests updated for 0.34 and beyond • Model-based testing, leveraging formal verification work 22
  17. What we’re not doing (yet) • Pluggable components • Cryptographic

    experiments • Randomized proposer selection • Validator key rotation (defer to application here) • Custom transaction indexers • Canary testing 24
  18. 2020 Q4 Release schedule* 25 0.34 release End-to-end testing gRPC

    for privval Model-based testing P2P refactor (stage 1) Upgrade tooling Versioned docs/spec ABCI 1.0 design Execution model evaluation gRPC evaluation Block updates evaluation Mempool redesign and refactor Productionize blockchain v2 reactor Adopt ZIP 215 Jepsen testing Stabilized Go APIs Stabilized P2P APIs Stabilized RPC APIs Stabilized ABCI Tendermint 1.0 testnets 0.35 release Deprecate blockchain v0, v1 Light client UX improvements Benchmarks Proposer-based timestamps ABCI 1.0 implementation gRPC implementation* Validator address redundancy reduction P2P refactor (stage 2) 2021 Q1 2021 Q2 2022 Q1 2021 Q3 2021 Q4 2022 Q2 Tendermint 1.0 release * Estimated.
  19. Get involved! 27 • Active in the tendermint-core#public channel in

    the community Discord • We welcome PRs and issues • We’re hiring for Tendermint Core engineering team + beyond • Jobs posted on interchain.berlin