Replies: 4 comments 2 replies
-
I completely agree that we do not want order to depend on the discretion of EB or RB producers (indeed this point is included in the first Leios CIP). I see two plausible approaches, order IBs in the RB by (lexicographically), either by
So the first option groups by EB, while the second interleaves IBs from different EBs. Why might we want to group by EB? If we want a scheme where dependent transactions from different IBs can be included into blocks quicker than waiting for them to be included into an RB, then we would need EBs to be more frequent and IBs to reference previous EBs. In that case, we may want to group by EB so that we can usually reuse the EB ledger state. |
Beta Was this translation helpful? Give feedback.
-
All these sound reasonable to me. We should revisit this part as the ledger/mempool discussion gets more mature. |
Beta Was this translation helpful? Give feedback.
-
Regarding the workshop discussion about EB ordering, I think we should clarify whether we want the following property. Definition Transaction stability.
where a Tx is committed in a chain if it appears before any conflicting Txs in the order used for ledger construction. The intent is that the outputs of a committed Tx are in the ledger state of the tip, or have been consumed by another committed Tx. At the level of RBs, to maintain transaction stability, it's sufficient that any new Txs added by a later block (directly, or by reference) are ordered after the Txs of its previous block. The above is why I framed this discussion as deciding the order of IBs within a single RB. In a chain
and a pair of conflicting txs For Going back to the issue of ledger states for EBs, you could similarly enforce you can't reorder across EBs: if Note that this can be a little awkward because EBs form a DAG. In particular in Full Leios, using
where, assuming It gets worse though, the Tx order given by just the graph of EBs might not agree with the Tx order from the chain of RBs: it can easily be that we have a chain segment
but now the chain for |
Beta Was this translation helpful? Give feedback.
-
I think the transaction stability you define is almost a requirement. Without it, you could imagine an adversary withholding an IB containing a transaction that brings down a long chain of other transactions, forcing recomputation of a lot of state. And, depending on the details of the system, it might be possible to withhold multiple such IBs, revealing an earlier one every time such an upset of the ledger state happens. Not only would that waste a lot of resources, it would also really hurt the confidence in the system. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Currently ledger construction is specified to obey the order in which IB and EB references appear in EBs.
The above allows EB producers to influence how Tx conflicts are resolved, since the conflicting tx that is later in the sequence will be dropped. This kind of discretion raises concerns about the fairness of the system. A more predictable ordering of IBs could also open some preprocessing opportunities.
We could instead specify that to sequence the IBs referenced by an RB we should order them lexicographically on their
slot
,subslot
, andVRF proof
, with the appearance order as a tie breaker for the rare case the above fails.IB producers still have discretion on which Txs to include in which order, which is not uncontroversial, but that's on par with Praos blocks today.
Beta Was this translation helpful? Give feedback.
All reactions