Add new StellarValue type representing a skipped ledger
#1865
bboston7
started this conversation in
Core Advancement Proposals
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
We would like to improve SCP performance by permitting some validator voting prior to receiving full transaction sets. In early voting stages (all of nomination, and part of balloting), validators would assume that transaction sets they do not posses are valid. This will speed up SCP, as transaction set dissemination is costly, and validators can safely make some progress on consensus while waiting to receive transaction sets.
In order to make this change, we need a method for a quorum of validators to decide that a transaction set is unavailable, and to vote to skip the current ledger. We expect these skipped ledgers to be rare.
To enable ledger skipping, we propose the following XDR change to
Stellar-ledger.x:With this change, the full
StellarValuestruct becomes:When the network votes to skip the ledger, validators will externalize a
StellarValuewith fields set as follows:txSetHash: Zeroed outcloseTime: Set as usualupgrades: Set as usualext: Set toSTELLAR_VALUE_SKIPoriginalValue: Details about the originalStellarValuethat a quorum of validators decided to skip.originalValue.txSetHash: The hash of the transaction set that was insufficiently disseminated.originalValue.lcValueSignature: The signature from the originalStellarValue. Can be used to determine which validator proposed the originalStellarValue.Note that the exact details of this struct are subject to change until solidified in a CAP.
Downstream Impacts
If this change is adopted, downstream consumers of
StellarValues may require modification. Specifically, those that reason abouttxSetHashwill need to handle the new0x0value, and those that reason aboutextwill need to handle the newSTELLAR_VALUE_SKIPextension.To help determine if you depend on something that contains a
StellarValue, transitive dependencies onStellarValueare as follows:Downstream consumers of
StellarValues should treat skipped ledgers as empty ledgers. Emitted meta will reflect this.Beta Was this translation helpful? Give feedback.
All reactions