Charles Hoskinson talked about input endorsers in a recent livestream and said they could improve the throughput of the base ledger by a factor of 20 to 40. What are input endorsers and how do they work? How do they achieve scalability? Where can I learn more?
Here is a link to the original Ouroboros paper from 2016:
If you scroll to section 8.1, input endorsers (IE) are discussed and generalized in close proximity to block producers (BP). Both are stakeholder entities in that the power to go about their tasks is constrained by the amount of stake delegated to them.
We are familiar what this means in the case of BPs - block production capacity (limited by stake threshold) and chain verification (unlimited).
However, during periods of surging transaction volumes, BPs may be unable to keep up with network demand and continuous sequences of blocks may be completely full. This is where IEs come in. They are able to aggregate transactions and keep track of all submitted transactions, even those that haven't been included on chain yet. After the surge has settled, an IE would be able to check if some of the transactions it has processed have not made it on-chain, and if so, they'd be able to submit those transactions late, up to a certain late-time (assuming the UTXOs haven't yet been spent in an already on-chain tx).
I like to think of IE's almost like backup mempools with special privelages. The details of how many and how late endorsed transactions may be submitted on-chain will be a future protocol parameter, and will be constrained by a stake-threshold; much in the same way that an individual BPs power is constrained.
Hope this helps!
The core idea of input endorsers is to separate transaction selection from block production. The Ouroboros protocol - just like it randomly selects block producers according to their staked Ada - would additionally randomly select input endorsers also according to the same staked Ada. Input endorsers would select transactions from the mempool and propagate these transactions through the network. All nodes could then process these endorsed transactions before the block producers bundle previously endorsed transactions into blocks.
According to the Ouroboros paper:
Input-endorsers create a second layer of transaction endorsing prior to block inclusion. [..] Note that input-endorsers are assigned to slots in the same way that slot leaders are, and inputs included in blocks are only acceptable if they are endorsed by an eligible input-endorser.
Note that blocks and endorsed inputs are diffused independently with each block containing from 0 up to d endorsed inputs.
To understand how this makes Cardano more scalable you need to understand what the current scalability bottlenecks are. Currently, a node will produce a block and then propagate it through the network. The next block producer will then hopefully create the next block on top of this previous block. There needs to be enough time in between the blocks to allow the new block to be created and propagated through the whole network. Otherwise you get more forks in the blockchain since some block producers would start producing their block before they received the previous block. More forks are a security risk since it allows an attacker with less than 50% of the stake to more easily create a longer chain. This leads to a situation where nodes spend most of their time just waiting for blocks to propagate.
Input endorsers solve this bottleneck. Since input endorsers cannot create forks (endorsed transactions are not yet ordered) they can be run at an increased rate without risking the security of the chain and since blocks contain only endorsed (and therefore already processed) transactions you can easily put more transactions into each block without increasing the time it takes to produce a block.
The concept of input endorsers seems to share a lot of similarities to a paper called Prism: Scaling Bitcoin by 10,000x. There's a video presentation on Prism that I found helpful in understanding the scalability aspect of input endorsers.
Input endorsers are originally discussed in the Ouroboros paper and could be potentially be used to create specific high-throughput layer 1 Ouroboros variants.
To get the idea, check out this part of the paper:
Input endorsers, stakeholder delegates, anonymous communication. In the final stage of our design, we augment the protocol with two new roles for the entities that are maintaining the ledger and consider the benefits of anonymous communication. Input-endorsers create a second layer of transaction endorsing prior to block inclusion. This mechanism enables the protocol to withstand deviations such as selfish mining and enables us to show that honest behaviour is an approximate Nash equilibrium under reasonable assumptions regarding the costs of running the protocol. Note that input-endorsers are assigned to slots in the same way that slot leaders are, and inputs included in blocks are only acceptable if they are endorsed by an eligible input-endorser. Second, the delegation feature allows stakeholders to transfer committee participation to selected delegates that assume the responsibility of the stakeholders in running the protocol (including participation to the MPC and issuance of blocks).