Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: add documentation on how to build rollups on Celestia with blobstream #1489

Merged
merged 104 commits into from
Apr 18, 2024
Merged
Changes from 1 commit
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
1c5a92a
docs: add documentation on how to build rollups on Celestia
rach-id Mar 20, 2024
97100a4
docs: remove question
rach-id Mar 22, 2024
5be6627
docs: one -> value
rach-id Mar 22, 2024
2699984
docs: explain more the proofs + reformating
rach-id Mar 25, 2024
3c24433
docs: set ETA
rach-id Mar 25, 2024
a7ba582
docs: expand on protobuf deserialisation
rach-id Mar 27, 2024
506c577
docs: expand on protobuf deserialisation
rach-id Mar 27, 2024
0584795
docs: rewrite, reorganise, explain
rach-id Mar 29, 2024
eb6bf2c
docs: review feedback
rach-id Mar 29, 2024
650d66c
docs: grammar
rach-id Mar 29, 2024
923a283
docs: remove new lines
rach-id Apr 8, 2024
0545d7f
docs: add links to inclusion proofs
rach-id Apr 8, 2024
be6a496
docs: update blobstream contract addresses (#1485)
jcstein Mar 21, 2024
5850557
ci: test removing the CNAME file for clean up of previews. (#1493)
MSevey Mar 21, 2024
343d1e5
docs: update blobstream (#1495)
jcstein Mar 25, 2024
2dc8a49
docs: update bubs-testnet.md with new URIs
jcstein Mar 25, 2024
37b3663
docs: add status page and bridge
jcstein Mar 25, 2024
a1f1ad0
docs: comment out thirdweb bc chain is different now
jcstein Mar 25, 2024
dd56943
docs: update gm portal and contract guides for bubs
jcstein Mar 25, 2024
130300b
docs: add mocha and namespace
jcstein Mar 25, 2024
9e12771
docs: add bridging context
jcstein Mar 25, 2024
d51be00
[GH Action] Update release tags and commit SHAs for arabica (#1497)
celestia-bot Mar 27, 2024
a454afc
[GH Action] Update release tags and commit SHAs for mocha (#1498)
celestia-bot Mar 27, 2024
8631812
docs: update go constants for arabiac and mocha
jcstein Mar 27, 2024
e6772ab
docs: update to make install for all types of machines (#1502)
jcstein Mar 28, 2024
539db7a
feat: Update node-tutorial.md (#1478)
jcstein Mar 28, 2024
53b93f7
feat: split consensus node page (#1472)
Mackenzie-OO7 Mar 29, 2024
796fc55
docs: rollup available link Vitalik (#1505)
guspan-tanadi Apr 1, 2024
b19524b
docs: Fix proof query example errors (#1504)
CryptoKass Apr 1, 2024
c320138
docs: fix blobstream proof queries code (#1506)
rach-id Apr 2, 2024
43a5255
docs: initial commit, needs revision
jcstein Mar 20, 2024
1099a50
docs: remove old light node config
jcstein Mar 20, 2024
2e467f5
docs: edits and refactor page
jcstein Mar 21, 2024
d84a924
docs: minor copy edit
jcstein Mar 22, 2024
afa46f2
docs: cleanup for new deployment guide
jcstein Mar 23, 2024
b0300ac
docs: todos for deployment guide
jcstein Mar 23, 2024
a2df218
docs: edit intro
jcstein Mar 25, 2024
0b97a0f
docs: step 1-2
jcstein Mar 25, 2024
3b6bde6
docs: deploy steps and table
jcstein Mar 25, 2024
ec78c72
docs: remainder of deploy steps draft
jcstein Mar 26, 2024
13869a3
docs: change style of quickstart to Quickstart: Deploy an Orbit rollup
jcstein Mar 26, 2024
2cbee8f
docs: add todos
jcstein Mar 26, 2024
b5903b3
docs: update contract addresses
jcstein Mar 26, 2024
de36597
docs: using light node, namespace, auth token
jcstein Mar 27, 2024
61b1857
docs: add link to arb doc
jcstein Mar 27, 2024
cd7065f
docs: add todo
jcstein Mar 27, 2024
c380363
docs: resolve build errs
jcstein Mar 27, 2024
a1596ce
docs: add bridging guide
jcstein Mar 27, 2024
e8c0598
docs: small revisions
jcstein Mar 27, 2024
59d228b
docs: copy edits
jcstein Mar 27, 2024
5b8a305
docs: deploy revision
jcstein Mar 27, 2024
6d18651
docs: fix blobstream address
jcstein Mar 27, 2024
8fbb2eb
docs: add alchemy rpc section
jcstein Mar 28, 2024
384d1a3
docs: note about opening ports in docker
jcstein Mar 29, 2024
7d39adb
docs: bump celestia-node version
jcstein Mar 29, 2024
b931b6f
docs: edit l1 to l2
jcstein Mar 29, 2024
a469762
docs: add newer success logs
jcstein Mar 29, 2024
5c2f64a
feat: add full node page to docs for orbit
jcstein Apr 1, 2024
cb257f2
feat: write out full node page
jcstein Apr 1, 2024
8e2c7af
docs: more info on validatorfn page
jcstein Apr 1, 2024
ecebd6e
docs: update wasm root
jcstein Apr 2, 2024
a5e4dd4
docs: update nitro release
jcstein Apr 2, 2024
cff4a4c
docs: use v2.3.1-rc.1 everywhere for nitro
jcstein Apr 2, 2024
7aead02
docs: edit out 'click heres'
jcstein Apr 2, 2024
f771a5b
fix: links
jcstein Apr 2, 2024
77fceac
docs: add eth-rpc variable
jcstein Apr 2, 2024
e9630c1
docs: coderabbit suggestions
jcstein Apr 2, 2024
db04878
docs: clarify wss
jcstein Apr 2, 2024
afae4b0
docs: swap steps 6 and 7 for deploy doc
jcstein Apr 2, 2024
2e06a85
docs: edit wss section
jcstein Apr 2, 2024
4d927bd
docs: add more context for wss
jcstein Apr 2, 2024
bff52be
docs: improve md readabliity in table
jcstein Apr 2, 2024
18c76a4
docs: update deployui url
jcstein Apr 2, 2024
ed29ef6
docs: update ui url
jcstein Apr 2, 2024
ab9f5da
docs: we'll use in next step
jcstein Apr 2, 2024
6a7443a
docs: updates
jcstein Apr 2, 2024
f3f8a7c
docs: add fn
jcstein Apr 2, 2024
e816da2
[GH Action] Update release tags and commit SHAs for mainnet (#1507)
celestia-bot Apr 3, 2024
e88755e
docs: update newmetric endpoints
jcstein Mar 29, 2024
d0acdce
docs: update orbit URL
jcstein Apr 3, 2024
672d4de
docs: coderabbit suggestions
jcstein Apr 4, 2024
56d5ba1
docs: add op raspberry testnet
jcstein Apr 4, 2024
4cb7a5e
[GH Action] Update release tags and commit SHAs for arabica (#1511)
celestia-bot Apr 8, 2024
1363605
docs: add sepolia -> mocha (#1512)
ratankaliani Apr 9, 2024
3c29401
fix typo in arabica-devnet page (#1513)
cmwaters Apr 9, 2024
d8af130
[WIP] docs: add audits for blobstream x (#1491)
jcstein Apr 10, 2024
6154045
Update rollup-overview.md (#1516)
alex-beckett Apr 11, 2024
6084132
feat: restructure developers category (#1515)
jcstein Apr 11, 2024
9e1f2da
feat: add celestia-node.sh script
jcstein Apr 12, 2024
d8cb216
fix: clarify section vs. tutorial
jcstein Apr 12, 2024
4a99bc8
feat: exit if dir change fails
jcstein Apr 12, 2024
a57d5c9
Update mocha_versions.js (#1529)
mindstyle85 Apr 15, 2024
f5b9dc1
Add Grove archival endpoints to `nodes/mainnet.md` (#1525)
Olshansk Apr 15, 2024
c3b95f1
docs: fix typos (#1526)
omahs Apr 15, 2024
3cef7b5
Update mainnet.md (#1527)
AlexMoskaleu Apr 15, 2024
52fb028
Update mocha-testnet.md (#1528)
AlexMoskaleu Apr 15, 2024
0c64f5a
fix: veridise path
jcstein Apr 15, 2024
87ee6d1
feat: add to menu
jcstein Apr 16, 2024
d465fc4
Merge branch 'main' into blobstream-rollups
jcstein Apr 16, 2024
e9ac101
docs: begin lint
jcstein Apr 16, 2024
89b78bf
docs: remove duplicate headings
jcstein Apr 16, 2024
bf2bf7b
docs: clarify duplicate headings
jcstein Apr 16, 2024
1161297
docs: better headings
rach-id Apr 17, 2024
0bb52ba
docs: mention blobstream rollups docs in the blobstream overview
rach-id Apr 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions developers/blobstream-rollups.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
description: Learn how to build rollups that use Blobstream
---

## Optimistic rollups

The easiest to build with Blobstream are optimistic rollups. An optimistic rollup is a rollup that commits optimistically to a set of blocks, and allows the other parties to verify that the blocks are valid, and if they're not, they can create fraud proofs to signal that.

Through the use of Blobstream, Celestia allows optimistic rollups to use Celestia as a DA layer, i.e. posting all the rollup data to Celestia, and only send commitments to the settlement contract. Then, users can use Blobstream as a source of truth to verify the rollup data and create fraud proofs in case of a misbehavior.

To build an optimistic rollup that uses Celestia as a DA layer, the following constructions can be inspired by.

### Optimistic rollups that uses a sequence of spans

One way to construct an optimistic rollup that uses Celestia as a DA layer is to post the rollup data in Celestia. Then in the rollup header, use the following information to reference a sequence of spans, aka a data pointer:

- Height: the height of the Celestia block containing the rollup data
- Start share: which is the index of the first share containing the rollup data
- Data length: which is the number of shares that the rollup data occupies

Note: If the rollup data is submitted in multiple blocks, the above sequence of spans can be generalized to include multiple blocks. For simplicity, we will stick with the data only submitted to a single Celestia block.

Now that this information is saved in the rollup header/settlement contract, users/rollup full nodes will be able to query for the rollup data from Celestia and verify that it's valid. And if it's not, fraud proofs can be generated.

The fraud proofs in this setup are discussed in the [inclusion proofs](https://github.com/celestiaorg/blobstream-contracts/blob/master/docs/inclusion-proofs.md) documentation.

### Optimistic rollups that use the data commitment

Another way to build a rollup is to replace the sequence of spans with a height and a share commitment. Then, users/rollup full nodes will be able to query that data, and in case of a dispute, they can create a fraud proof.

The difference between the above construction and this one is that the proofs used will be different: when using a sequence of spans, the inclusion proofs will be straight from the rollup data up to the [data root tuple root](https://github.com/celestiaorg/blobstream-contracts/blob/master/README.md#how-it-works). However, in the case of the use of the height and the share commitment, an extra step would need to be done when posting the header to the settlement contract, which is proving that the provided commitment is part of the Celestia block (referenced by its height). Then, fraud proofs will need to prove the following:

- share inclusion to the share commitment
- share commitment inclusion to the data root tuple root

Once these are valid, the rollup contract can proceed to parse the share and verify the contested claim.
rach-id marked this conversation as resolved.
Show resolved Hide resolved

Note: **Generating/verifying share commitment proofs is still not supported. Thus, the [sequence of spans](#optimistic-rollups-that-uses-a-sequence-of-spans) approach is preferable at the moment.**
rach-id marked this conversation as resolved.
Show resolved Hide resolved

## Zk-Rollups

Zk-rollups, aka validity rollups, can also use Celestia as a DA and Blobstream to verify that the data was posted. However, the submission process is different from the above constructions, since there are no fraud proofs, and everything should be verified when submitting the headers.

So, when posting to the settlement contract, the rollup data in Celestia can be referenced either using a share commitment or a sequence of spans, and a height. However, as explained above, the share commitment proofs generation/verification is still not supported. Thus, we will focus on the case where we use a sequence of spans. Check the [Optimistic rollups that uses a sequence of spans](#optimistic-rollups-that-uses-a-sequence-of-spans) for more information.

So, when submitting the headers to the rollup settlement contract, the settlement contract will need to verify the following:

- Zk-proof of the state transitions, as traditional zk-rollups do
- Zk-proof of the rollup data to the data root tuple root
- Verify that the sequence of spans is valid, i.e., is part of the Celestia block referenced by its height.

Once these are valid, the settlement contract can be sure that the state transitions are valid, and the data was posted to Celestia.

rach-id marked this conversation as resolved.
Show resolved Hide resolved
Asking inputs from reviewers: when verifying that the sequence of spans exists, and the rollup data to the data root tuple root, how would we know that we're talking about the same data? I could create a zk-proof of a bunch of data to the data root tuple root, then provide an invalid sequence of spans, how would this be detected?
rach-id marked this conversation as resolved.
Show resolved Hide resolved
rach-id marked this conversation as resolved.
Show resolved Hide resolved
Loading