Replies: 13 comments
-
I think with the new 16, it could be sufficient. after thinking about it though, what is the benefit of doing this over just using a single, or picking a random, namespace and gossiping the headers after the fact? cc @nashqueue |
Beta Was this translation helpful? Give feedback.
-
Same benefit as picking a random namespace and sending it. The nice feature of this is just that it is self-referencing. Another fact is that you can do very lightweight exclusion proofs, because if the namespace does not exist then the data does not exist as well. |
Beta Was this translation helpful? Give feedback.
-
This kind of defeats the point of a namespace as a way to only need to read your namespace to get your rollup blocks tho, with this you have to scan the whole chain to execute your rollup's fork choice rule |
Beta Was this translation helpful? Give feedback.
-
Why does a roll-up light node need to scan the whole Celestia chain? Instead of scanning the whole chain, can the roll-up light node fetch the relevant namespace IDs and block heights from an honest roll-up full node and then only query for those blobs from Celestia? |
Beta Was this translation helpful? Give feedback.
-
Because they don't know what the namespace IDs as they are not deterministic as they depend on future blobs in that rollup. The rollup light node can fetch from full nodes, but the full nodes executing the fork-choice rule directly can't |
Beta Was this translation helpful? Give feedback.
-
@musalbas, why forward syncing with fork-choice rule is necessary for Rollup FN? Why can't a RFN backward sync over already committed fork choices? |
Beta Was this translation helpful? Give feedback.
-
The rollup may not be fork-free like Tendermint BFT |
Beta Was this translation helpful? Give feedback.
-
You can always choose a tip of the fork of interest and sync backward. Maybe I don't see the use case though. |
Beta Was this translation helpful? Give feedback.
-
If you sync backwards you'd have to trust the tip of the fork as being the correct chain after the execution of the fork-choice rule. It only seems practical to trust a third party to tell you the correct tip if the chain is fork-free (because of double signing evidence) and/or a weak subjectivity assumption. RFNs will need a way to re-execute the fork choice rule from genesis anyways as they may not have a weak subjectivity assumption for the rollup itself And even if they did have a weak subjectivity assumption, they'd need to be able to download all block data when sycning new rollup headers to execute the fork-choice rule in the first place, otherwise there's a "chicken and egg" problem (how do you know what the tip of chain is if no one executed the fork-choice rule?) |
Beta Was this translation helpful? Give feedback.
-
One idea for roll-ups to avoid scanning the whole Celestia chain is for a roll-up to specify some prefix of the namespace ID that all future blocks of the roll-up must be published to. In this way, roll-ups can constrain the domain available from the entire namespace ID space to a subset (i.e. namespace IDs that start with Note: In practice, roll-up sequencers may need need to add a nonce to their blob and perform some amount of PoW to generate a blob that when hashed results in a namespace ID with the prefix described above. Roll-ups that don't need a consistent namespace ID prefix don't need this additional PoW step. |
Beta Was this translation helpful? Give feedback.
-
Yeah that could work. However can't blobs also be content addressable by specifying their index in the tree along with their hash? Or would that not achieve the desired use case (which is what?)?
I don't think they need to do any PoW to choose the namespace ID, they could just reserve [:4] for the nid prefix for example, and then [4:] for the actual truncated hash. |
Beta Was this translation helpful? Give feedback.
-
I should clarify that the proposal for PoW is if namespace ID is entirely deterministic based on blob content. So something like this Go playground. If namespace ID is still exposed as a parameter in PayForBlob then a roll-up could reserve some amount of prefix like you mentioned.
Good question. I like this proposal because it simplifies the public API. Instead of:
users could publish blobs via
which is comparable to @nashqueue mentioned other potential benefits which maybe he can expand upon:
|
Beta Was this translation helpful? Give feedback.
-
Notes from lunch convo with @c-node, @Wondertan, @vgonkivs: If namespace IDs are determinstic:
If namespace IDs are specified by blob submitter:
|
Beta Was this translation helpful? Give feedback.
-
Context
@nashqueue shared an interesting idea over Slack that I wanted to preserve for future consideration
My understanding of this proposal is that blobs would be content addressable. In other words, a user would not submit a namespace along with a PFB and instead the blob content of the PFB would determine the namespace.
In order for this proposal to be considered, the namespace number of bytes may need to increase from
8
=>32
to avoid hash collisions. Additionally, since rollups can no longer rely on a consistent namespace ID, they may need to provide their own block sync/header gossip.Beta Was this translation helpful? Give feedback.
All reactions