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

feat: add DA overview and bring local-da into tutorials #509

Merged
merged 2 commits into from
Nov 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
16 changes: 10 additions & 6 deletions .vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,13 +223,21 @@ function sidebarHome() {
text: "DA",
collapsed: true,
items: [
{
text: "Overview",
link: "/tutorials/da/overview",
},
{
text: "Local DA",
link: "/tutorials/da/local-da",
},
{
text: "Celestia",
link: "/tutorials/celestia-da",
link: "/tutorials/da/celestia-da",
},
{
text: "Avail",
link: "/tutorials/avail-da",
link: "/tutorials/da/avail-da",
},
],
},
Expand Down Expand Up @@ -310,10 +318,6 @@ function sidebarHome() {
text: "Use the Rollkit CLI",
link: "/guides/use-rollkit-cli",
},
{
text: "Connect to a local DA",
link: "/guides/connect-local-da",
},
{
text: "Create genesis for your rollup",
link: "/guides/create-genesis",
Expand Down
2 changes: 1 addition & 1 deletion tutorials/avail-da.md → tutorials/da/avail-da.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Deploying a rollup to Avail
# Using Avail as DA

## 🌞 Introduction {#introduction}

Expand Down
22 changes: 18 additions & 4 deletions tutorials/celestia-da.md → tutorials/da/celestia-da.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Deploying a rollup to Celestia
# Using Celestia as DA

<!-- markdownlint-disable MD033 -->
<script setup>
import constants from '../.vitepress/constants/constants.js'
import constants from '../../.vitepress/constants/constants.js'
</script>

## 🌞 Introduction {#introduction}
Expand Down Expand Up @@ -54,13 +54,27 @@ The output of the command above will look similar to this:
Your DA_BLOCK_HEIGHT is 2127672
```

Now, let's obtain the authentication token of your light node using the following command (omit the --p2p.network flag for Mainnet Beta):
Now, let's obtain the authentication token of your light node using the following command:

```bash
::: code-group

```bash [Arabica Devnet]
AUTH_TOKEN=$(celestia light auth write --p2p.network arabica)
echo -e "\n Your DA AUTH_TOKEN is $AUTH_TOKEN \n"
```

```bash [Mocha Testnet]
AUTH_TOKEN=$(celestia light auth write --p2p.network mocha)
echo -e "\n Your DA AUTH_TOKEN is $AUTH_TOKEN \n"
```

```bash [Mainnet Beta]
AUTH_TOKEN=$(celestia light auth write)
echo -e "\n Your DA AUTH_TOKEN is $AUTH_TOKEN \n"
```

:::

The output of the command above will look similar to this:

```bash
Expand Down
29 changes: 24 additions & 5 deletions guides/connect-local-da.md → tutorials/da/local-da.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
# How to connect a rollup to a local DA network
# Using Local DA

<!-- markdownlint-disable MD033 -->
<script setup>
import constants from '../.vitepress/constants/constants.js'
import constants from '../../.vitepress/constants/constants.js'
</script>

This guide provides a quick and straightforward method to start a local Data Availability (DA) network and configure your rollup to post data to it.
## Introduction {#introduction}

This tutorial serves as a comprehensive guide for using the [local-da](https://github.com/rollkit/local-da) with your chain.

Before proceeding, ensure that you have completed the [quick start](/tutorials/quick-start) or [build a chain](/tutorials/wordle) tutorial, which covers installing the rollkit CLI, building your chain, and running your chain.

## Setting Up a Local DA Network

Expand All @@ -25,10 +29,25 @@ To connect your rollup to the local DA network, you need to pass the `--rollkit.

Start your rollup node with the following command, ensuring to include the DA address flag:

```bash
::: code-group

```sh [Quick Start]
rollkit start --rollkit.da_address http://localhost:7980
```

```sh [Wordle Chain]
rollkit start \
--rollkit.aggregator \
--rollkit.da_address http://localhost:7980 \
<other-flags>
--rollkit.sequencer_rollup_id wordle
```

:::

You should see the following log message indicating that your rollup is connected to the local DA network:

```shell
I[2024-11-15|14:54:19.842] DA server is already running module=main address=http://localhost:7980
```

## Summary
Expand Down
50 changes: 50 additions & 0 deletions tutorials/da/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
description: This page provides an overview of how rollkit integrates with DA.
---

<!-- markdownlint-disable MD033 -->

# DA

Now that you have the foundations of running and building a rollup with Rollkit, it is time to start customizing it to fit your needs.

The first choice you need to make is which data availability (DA) layer to use. The DA layer is a critical component of a blockchain, as it provides the data availability and finality guarantees that your chain needs to operate securely.

Rollkit uses the [go-da interface](https://github.com/rollkit/go-da) to communicate to DA layers. Any DA layer that implements this interface can be used with Rollkit.

## Go DA {#go-da}

The [go-da interface](https://github.com/rollkit/go-da) defines the core functions required to interact with a DA layer. Probably the two most important functions being `Get` and `Submit`.

```go
// DA defines very generic interface for interaction with Data Availability layers.
type DA interface {
// Get returns Blob for each given ID, or an error.
Get(ctx context.Context, ids []ID, namespace Namespace) ([]Blob, error)

// Submit submits the Blobs to Data Availability layer.
Submit(ctx context.Context, blobs []Blob, gasPrice float64, namespace Namespace) ([]ID, error)
}
```

DA layers can integrate the `go-da` interface directly into their node like [Celestia](celestia-da), or they can define a middleware service like [Avail](avail-da).

## Mock DA {#mock-da}

You might have noticed that we did not define any DA layer during the [quick start](../quick-start.md) or [build a chain](../wordle.md) tutorials. This is because we used a mock DA layer that is built into Rollkit.

If you revisit the logs from those tutorials, you will see one of the first lines being:

```shell
I[2024-11-15|14:09:41.735] Starting mock DA server module=main address=http://localhost:26658
```

The mock DA layer is a simple in-memory DA layer that is great for testing and development. It is not suitable for production use, as it does not provide the data availability and finality guarantees that a real DA layer would.

## DA Layers {#da-layers}

Now that you have a better understanding of what a DA layer is, you can start to explore the different DA layers that are available to use with Rollkit.

* [Local DA](local-da.md)
* [Celestia DA](celestia-da.md)
* [Avail DA](avail-da.md)
Loading