DONOTMERGE full EB diffusion specification - #2093
Conversation
| cert's identity, since a cert binds to its `RbHeader`, not merely the `EbHash` it names). An announcement is | ||
| an `RbHeader` (it announces an EB and declares its body and | ||
| closure sizes); `HeaderHash` is its hash, and the whole header travels on the wire and is validated | ||
| (signature/KES, etc.) on receipt — `ebHash`, `bodySize`, and `closureSize` are read from the validated |
There was a problem hiding this comment.
An announcement is an RbHeader (it announces an EB and declares its body and closure sizes); HeaderHash is its hash, and the whole header travels on the wire and is validated (signature/KES, etc.) on receipt — ebHash, bodySize, and closureSize are read from the validated header.
Would it not make more sense to define an Announcement, along with it's requirements:
- references a Praos block/chain to extend (header hash)
- references an
EBthat aims to extend - references a
slotthat is used to validate the announced closure - is authenticated and bound to an
Election - is small enough to be broadcast (< 1kB encoded)
- is quick to validate (< 1ms)
Then, the extended Praos block header (= RbHeader) is just the realization of an Announcement?
|
|
||
| data Ifaces m = Ifaces { ifDb :: LeiosDb m, ifTxc :: TxCache m, ifMem :: Mempool m } | ||
|
|
||
| -- TODO consider having the decision logic send body requests to |
There was a problem hiding this comment.
Just FYI: this TODO's text is the result of my tightly-timeboxed attempt at considering the trade-off of switching away from "offers" to "pre-requests". @ch1bo reminded me of this alternative during our 1:1 yesterday. (If my recollection is accurate, I think the idea originated from discussions at Buidler Fest in March 2026 (which I didn't attend).)
This PR is the result of my past couple weeks of writing up the full EB diffusion spec now that we sorted out our decision rules earlier this month.
(I fully expect these files to relocate before we merge this; this is just where Claude happened to spawn them.)
Protocol storms are not addressed yet, but Giorgos has a proposal for that I'll finally read Real Soon Now. I'm hoping it won't be too disruptive to integrate it here.
Current status of this PR:
Spec.mdfirst. I recommend reading that first while ignoring §3.RefModel.hsdoesn't do full Skew Fallback (yet).RefModel.hsand Claude and I did a lot of iteration there.SPEC-DRIFT.mdis a (very verbose) TODO list of the changes that need to be folded back intoSpec.md. But I think the key ideas in Spec.md survived.