April 21, 2018 . 4 min read
While Storecoin’s engineering team worked on developing BlockFin, its dynamic, fork-tolerant, and auditable consensus algorithm, early versions of the Dynamic Proof of Stake (DyPoS) protocol were built and tested on top of Tendermint.
Open-source software, Tendermint core implements the blockchain consensus engine, which ensures that the same transactions are recorded on every machine in the same order. However, when a large number of machines are involved in the consensus, Tendermint is unable to handle the burden, making it unsuitable for large deployments with thousands of peers, a situation that Storecoin expects to encounter when it achieves its mission of becoming zero-fee payment infrastructure for users around the globe.
After studying its research results, Storecoin was able to proposed an open-source idea, called Project Basil, to ensure that throughput is not affected by the size of the network.
Specifically, Storecoin proposes two enhancements to Tendermint core:
Since peer-to-peer communication is eliminated by this proposal, the consensus throughput remains unaffected by the number of peers.
Tendermint is designed so that validators pick transactions from a storage area called a mempool. Each validator has a mempool. The elected block proposer takes the transactions from its local mempool to build the new block and proposes the new block for voting.
The proposer needs to grab a list of validated transactions to propose the new block for voting. Since transaction validation is offloaded to the ABCI app, maintaining the list of validated transactions can be too, calling for a shared mempool with the following properties.
The creation of a shared mempool means that the peers:
Since the transactions are ordered in the shared mempool, multiple block producers can propose multiple blocks for voting. The prevote and pre-commit phases of multiple proposed blocks can be pipelined, so the voting happens in parallel. Only the commit phase needs to be serial, so the block proposed by the current block producer is committed first, followed by the block proposed by the next producer, and so on.
Maintaining a shared mempool of ordered transactions eliminates the need for relaying the incoming transactions to all the peers. This approach adds 3 APIs to the ABCI interface and offloads the consistency and availability responsibilities to the ABCI app. This should not be perceived as a weakness, because the Tendermint core is not a standalone consensus engine and is always used in association with an ABCI app.
Nothing herein is intended to be an offer to sell or solicitation of offer to buy, Storecoin tokens or rights to receive Storecoin tokens in the future. In the event that Storecoin conducts an offering of Storecoin tokens (or rights to receive Storecoin tokens in the future), Storecoin will do so in compliance with all applicable laws which may include the Securities Act of 1933 and the rules and regulations promulgated thereunder, as well as applicable state and foreign law. Any offering for sale to US Persons in a regulated transaction will be pursuant to a registration statement qualified by the Securities and Exchange Commission, or an applicable exemption from the registration requirements.