diff --git a/.github/workflows/external-link-check.yml b/.github/workflows/external-link-check.yml
new file mode 100644
index 000000000..cf14ed309
--- /dev/null
+++ b/.github/workflows/external-link-check.yml
@@ -0,0 +1,40 @@
+name: Link Checker
+
+on:
+ # This workflow requires pull_request and won't work with pull_request_target
+ # due to github permissions
+ pull_request:
+ types:
+ - opened
+ - reopened
+ - synchronize
+ - closed
+ # Uncomment the following lines to have the cronjob running daily
+ #repository_dispatch:
+ #workflow_dispatch:
+ #schedule:
+ #- cron: "00 18 * * *"
+
+jobs:
+ link-check:
+ runs-on: ubuntu-latest
+ permissions:
+ issues: write # required for peter-evans/create-issue-from-file
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Link Checker
+ id: lychee
+ uses: lycheeverse/lychee-action@v2
+ with:
+ args: -b . --verbose --no-progress --exclude '%23.*' './**/*.md'
+ fail: true
+
+ # Uncomment this if you want issues to be created for every dead link
+ #- name: Create Issue From File
+ #if: steps.lychee.outputs.exit_code != 0
+ #uses: peter-evans/create-issue-from-file@v5
+ #with:
+ #title: Link Checker Report
+ #content-filepath: ./lychee/out.md
+ #labels: report, automated issue
\ No newline at end of file
diff --git a/.vitepress/config.ts b/.vitepress/config.ts
index 0087099cc..d463d06f4 100644
--- a/.vitepress/config.ts
+++ b/.vitepress/config.ts
@@ -354,10 +354,6 @@ function sidebarHome() {
collapsed: true,
items: [
{ text: "Overview", link: "/blog/overview" },
- {
- text: "Sovereign rollups on Bitcoin with Rollkit",
- link: "/blog/sovereign-rollups-on-bitcoin",
- },
{
text: "Rollkit: The First Sovereign Rollup Framework",
link: "/blog/rollkit-the-first-sovereign-rollup-framework",
diff --git a/blog/overview.md b/blog/overview.md
index eec1e3e35..fa7da7809 100644
--- a/blog/overview.md
+++ b/blog/overview.md
@@ -8,7 +8,6 @@ Welcome to our blog! Here, you'll find a variety of articles on a range of topic
## Table of contents
-- [Sovereign rollups on Bitcoin with Rollkit](/blog/sovereign-rollups-on-bitcoin)
- [Rollkit: The First Sovereign Rollup Framework](/blog/rollkit-the-first-sovereign-rollup-framework.md)
Stay tuned for more exciting content!
diff --git a/blog/rollkit-the-first-sovereign-rollup-framework.md b/blog/rollkit-the-first-sovereign-rollup-framework.md
index a2014ec4b..5db8f61c1 100644
--- a/blog/rollkit-the-first-sovereign-rollup-framework.md
+++ b/blog/rollkit-the-first-sovereign-rollup-framework.md
@@ -19,7 +19,7 @@ import Twitter from '../.vitepress/components/twitter.vue'
By Rollkit
-
+
Bitcoin to Ethereum took 7 years. Ethereum to more scalable alt-L1s took 1–2 years. And then Cosmos SDK and CometBFT brought down time-to-launch a sovereign L1 to months.
@@ -33,7 +33,7 @@ Sovereign rollups combine the self-governance of a Layer 1 with the ease of depl
Without the overhead of a settlement layer, sovereign rollups can directly interoperate with shared security when using the same DA layer.
-By using a generic application interface like [ABCI++](https://docs.cometbft.com/v0.38/spec/abci/), Rollkit is compatible with the Cosmos SDK, the leading framework for building sovereign blockchains. This enables all Cosmos SDK developers to build a sovereign rollup and tap into all the powerful cosmos ecosystem tooling they’re used to including [IBC](https://www.ibcprotocol.dev/), [ABCI++](https://docs.cometbft.com/v0.38/spec/abci/), and Skip Protocol's [Slinky](https://docs.skip.money/slinky/overview/) and [BlockSDK](https://skip-protocol-docs.netlify.app/blocksdk/overview).
+By using a generic application interface like [ABCI++](https://docs.cometbft.com/v0.38/spec/abci/), Rollkit is compatible with the Cosmos SDK, the leading framework for building sovereign blockchains. This enables all Cosmos SDK developers to build a sovereign rollup and tap into all the powerful cosmos ecosystem tooling they’re used to including [IBC](https://www.ibcprotocol.dev/), [ABCI++](https://docs.cometbft.com/v0.38/spec/abci/), and Skip Protocol's [Slinky](https://docs.skip.money/slinky/overview/) and BlockSDK.
Developers have full-freedom to deploy a VM or define their own execution environment, unconstrained by the overhead of an enshrined settlement layer that must process fraud or ZK proofs for their rollups. This means that instead of a canonical on-chain light client that comes with an enshrined settlement layer, sovereign rollups can define how they interoperate with other blockchains by having on-chain light clients of each other as needed.
diff --git a/blog/sovereign-rollups-on-bitcoin.md b/blog/sovereign-rollups-on-bitcoin.md
deleted file mode 100644
index 33bd15d2a..000000000
--- a/blog/sovereign-rollups-on-bitcoin.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-head:
- - - meta
- - name: title
- content: "Sovereign rollups on Bitcoin with Rollkit"
- - - meta
- - name: description
- content: Today, we are proud to announce that Rollkit is the first rollup framework to support sovereign rollups on Bitcoin. This allows Rollkit rollups to use Bitcoin for data availability. The implementation is in alpha, but we invite curious developers to experiment with it.
- - - meta
- - name: keywords
- content: Rollkit, Celestia
- - - meta
- - name: og:image
- content: /img/Rollkit-cover.jpg
----
-
-# Sovereign rollups on Bitcoin with Rollkit
-
-By Rollkit
-
-
-_Originally published on 5 March 2023_
-
-Today, we are proud to announce that Rollkit is the first rollup framework to support sovereign rollups on Bitcoin. An early research implementation allows Rollkit rollups to use Bitcoin for data availability.
-
-Rollkit is opening the door for developers to create rollups with arbitrary execution environments that inherit Bitcoin’s data availability guarantees and re-org resistance. With the new integration it is now possible to run the [EVM on Bitcoin as a Rollkit sovereign rollup](/docs/tutorials/bitcoin). Sovereign rollups on Bitcoin not only expand the possibilities for rollups, but also have the potential to help bootstrap a healthy blockspace fee market on Bitcoin, enabling a more sustainable security budget.
-
-## Tl;dr
-
-- Sovereign rollups using Bitcoin for data availability are now a reality with Rollkit’s new early research integration.
-- Follow along with a [demo](#evm-on-bitcoin-demo) of the EVM running on Bitcoin as a sovereign Rollkit rollup.
-- The implementation was possible due to Bitcoin's Taproot upgrade and Ordinals' usage of Bitcoin for publishing arbitrary data.
-
-## Posting data on Bitcoin with Taproot
-
-On Feb. 1, 2023, the Luxor mining pool mined the largest Bitcoin block (#774628) ever, approximately 4 MB. Most of the blockspace was used to inscribe a Taproot Wizards NFT with [Ordinals](https://ordinals.com/), a project that implements NFTs on Bitcoin by publishing the image data on-chain.
-
-Bitcoin NFTs use Taproot witnesses to inscribe arbitrary data, enabled by Bitcoin's Taproot upgrade. Taproot witnesses provide a slightly better payload-to-data ratio than SegWit transactions. A standard transaction can include up to around 390kB of arbitrary data while still passing through the public mempool. A non-standard transaction, included by a miner directly without passing through the mempool, can include close to 4MB of arbitrary data. In short, with SegWit, it became viable to post big blobs of data to the Bitcoin blockchain.
-
-Since then, the usage of Ordinals for NFT inscriptions and Taproot utilization has [kicked off](https://dune.com/dataalways/ordinals). Eric Wall found that at the time of [his tweet](https://twitter.com/ercwl/status/1619671451417862145), posting data on Bitcoin was 7x cheaper than Ethereum. Now that there are thousands of inscriptions on Bitcoin, it has become clear that sovereign rollups and an ecosystem of dapps on Bitcoin could become a reality. The missing piece: a rollup framework for easily integrating Bitcoin as a data availability layer.
-
-## Integrating Bitcoin as a data availability layer into Rollkit
-
-Rollkit is a modular framework for rollups, where developers can plug-in custom execution layers and data availability layers. Initially, Rollkit only supported Celestia as an option for data availability and consensus. Now, Bitcoin is an option, thanks to an early research implementation of a Bitcoin data availability module for Rollkit. In this case, sovereign rollups manage their own execution and settlement while offloading consensus and data availability to Bitcoin.
-
-
-
-## How Rollkit posts data to Bitcoin
-
-To write and read data on Bitcoin, we make use of Taproot transactions. To facilitate this, we implemented [a Go package called `bitcoin-da`](https://github.com/rollkit/bitcoin-da) that provides a reader/writer interface to Bitcoin. For details of how the interface works and how it uses Taproot, see [the specs](https://github.com/rollkit/rollkit-btc/blob/main/spec.md). The package can be re-used by any project that wants to read or write data on Bitcoin.
-
-Rollkit was built with modularity at its core. It has a data availability interface so that developers can simply implement specific methods to add a new data availability layer. To add a data availability layer, implementers need to satisfy the `DataAvailabilityLayerClient` interface which defines the behavior of the data availability client, and the `BlockRetriever` interface which defines how blocks can be synced. These interfaces live in the [da package](https://github.com/rollkit/rollkit/tree/main/da). The most important methods in these interfaces are `SubmitBlock` and `RetrieveBlock` for reading and writing the blocks.
-
-After implementing the Taproot reader/writer interface for Bitcoin (`bitcoin-da`), adding it as a data availability module for Rollkit took less than a day. We mostly only had to implement the `SubmitBlock` and `RetrieveBlocks` functions for Rollkit to call the `Read` and `Write` methods in `bitcoin-da`.
-
-
-
-## EVM on Bitcoin demo
-
-Rollkit supports custom execution layers, including EVM, CosmWasm, or the Cosmos SDK. To test the integration, we used Rollkit to run the EVM (using Ethermint) as a sovereign rollup on a local Bitcoin test network. See below for a demo.
-
-
-
-## Conclusion
-
-As we move towards a future where sovereign communities will form around different applications, asking them to incur the high cost and overhead of deploying a layer 1 blockchain to be sovereign is not sustainable. [Sovereign rollups](https://blog.celestia.org/sovereign-rollup-chains/) fix this by making it possible to deploy a sovereign chain that inherits the data availability and consensus of another layer 1 chain such as Bitcoin.
-
-Our goal with Rollkit is to make it easy to build and customize rollups. We invite you to play around Rollkit and build sovereign rollups on Bitcoin, or customize Rollkit with different execution environments and data availability layers. For details on how to run Rollkit with the Bitcoin data availability module, see the instructions [here](/docs/tutorials/bitcoin). Keep in mind that the integration is an early research implementation and it is not yet production-ready!
-
-Modularism, not maximalism.
diff --git a/guides/config.md b/guides/config.md
index 434084137..920bd3aa3 100644
--- a/guides/config.md
+++ b/guides/config.md
@@ -573,7 +573,7 @@ instrumentation:
**Description:**
The network address (host:port) where the Prometheus metrics server will listen for scraping requests.
-See [Metrics](./metrics.md) for more details on what metrics are exposed.
+See [Metrics](/guides/metrics.md) for more details on what metrics are exposed.
**YAML:**
diff --git a/guides/create-genesis.md b/guides/create-genesis.md
index 9cf71a948..d7eb46ff9 100644
--- a/guides/create-genesis.md
+++ b/guides/create-genesis.md
@@ -6,7 +6,7 @@ This guide will walk you through the process of setting up a genesis for your ro
For this guide you need to have a chain directory where you have created and built your chain.
-If you don't have a chain directory yet, you can initialize a simple ignite chain by following [this guide](./ignite-rollkit.md)
+If you don't have a chain directory yet, you can initialize a simple ignite chain by following [this tutorial](/tutorials/gm-world.md)
:::tip
This guide will use the simple ignite chain created in linked guide. Make sure to update any relevant variables to match your chain.
@@ -27,7 +27,7 @@ STAKING_AMOUNT="1000000000stake"
## 2. Rebuild your chain
-Ensure that `rollkit.toml` is present in the root of your rollup directory (if not, follow a [Guide](/guides/use-rollkit-cli) to set it up) and run the following command to (re)generate an entrypoint binary out of the code:
+Ensure that `rollkit.toml` is present in the root of your rollup directory (if not, follow a [Guide](/tutorials/gm-world.md) to set it up) and run the following command to (re)generate an entrypoint binary out of the code:
```sh
rollkit rebuild
diff --git a/guides/cw-orch.md b/guides/cw-orch.md
index a50d67547..896a967ba 100644
--- a/guides/cw-orch.md
+++ b/guides/cw-orch.md
@@ -245,7 +245,7 @@ Now that you workspace is setup, you can [integrate with single contracts](#sing
You can find more example interactions on the `counter-contract` example directly in the `cw-orchestrator` repo:
-- Some examples showcase interacting with live chains.
-- Some other examples show how to use the library for testing your contracts.
+- Some examples showcase interacting with live chains.
+- Some other examples show how to use the library for testing your contracts.
> **FINAL ADVICE**: Learn more and explore our full `cw-orch` documentation !.
\ No newline at end of file
diff --git a/guides/ibc-connection.md b/guides/ibc-connection.md
index a575f5964..1bc832b72 100644
--- a/guides/ibc-connection.md
+++ b/guides/ibc-connection.md
@@ -1,7 +1,7 @@
# IBC connection tutorial
In this tutorial, we'll learn how to use [an Inter-Blockchain Communication (IBC) Protocol relayer](https://github.com/cosmos/relayer) to
-create an IBC connection between a [GM world](./gm-world) rollup and an Osmosis local testnet.
+create an IBC connection between a [GM world](/tutorials/gm-world.md) rollup and an Osmosis local testnet.
:::warning Disclaimer
This initial version of IBC has high trust assumptions where receiving chains
@@ -66,7 +66,7 @@ bash init-local.sh
```
:::tip
-[See the guidelines in GM world rollup for environment setup](/tutorials/gm-world#building-your-sovereign-rollup).
+[See the guidelines in GM world rollup for environment setup](/tutorials/gm-world.md).
:::
## Run your local-osmosis-testnet
diff --git a/guides/restart-rollup.md b/guides/restart-rollup.md
index 2633c2724..04175ade9 100644
--- a/guides/restart-rollup.md
+++ b/guides/restart-rollup.md
@@ -9,7 +9,7 @@ This section covers the case where you need to restart your rollup.
In order to restart your rollup, you simply need to run the `d start [...args]`
command for your rollup.
-For example, if you ran the [quick start](../tutorials/quick-start.md) tutorial, you started your rollup with:
+For example, if you ran the [quick start](/tutorials/quick-start.md) tutorial, you started your rollup with:
```bash
rollkit start
@@ -47,8 +47,8 @@ This section covers the case that the node that
you are using to post blocks to your DA and consensus layer runs out of funds (tokens),
and you need to restart your rollup.
-In this example, we're using Celestia's [Mocha testnet](https://docs.celestia.org/nodes/mocha-testnet/)
-and running the [quick start](../tutorials/quick-start.md). In this example, our Celestia DA light node
+In this example, we're using Celestia's [Mocha testnet](https://docs.celestia.org/how-to-guides/mocha-testnet/)
+and running the [quick start](/tutorials/quick-start.md). In this example, our Celestia DA light node
ran out of Mocha testnet TIA and we are unable to post new blocks to Celestia due to a
[`Code: 19`](https://github.com/cosmos/cosmos-sdk/blob/main/types/errors/errors.go#L95)
error. This error is defined by Cosmos SDK as:
@@ -88,7 +88,7 @@ You can stop your rollup by using `Control + C` in your terminal where the node
### ⛽ Increase the gas fee {#increase-gas-fee}
-To reiterate, before restarting the chain, you will need to increase the gas fee in order to avoid a `Code: 19` error. See the [How to configure gas price](./gas-price.md) guide for more information.
+To reiterate, before restarting the chain, you will need to increase the gas fee in order to avoid a `Code: 19` error. See the [How to configure gas price](/guides/config.md#da-gas-price) guide for more information.
### 🔁 Restarting your rollup {#restarting-your-rollup}
diff --git a/guides/use-tia-for-gas.md b/guides/use-tia-for-gas.md
index 5696cf23b..a12b71e23 100644
--- a/guides/use-tia-for-gas.md
+++ b/guides/use-tia-for-gas.md
@@ -261,7 +261,7 @@ rollkit tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000
Fund the relayer on the Celestia Mocha testnet:
-[Mocha Testnet Faucet Instructions](https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet).
+[Mocha Testnet Faucet Instructions](https://docs.celestia.org/how-to-guides/mocha-testnet#mocha-testnet-faucet).
Verify the relayer is funded:
diff --git a/guides/zkml.md b/guides/zkml.md
index 6225e080d..aeae0678f 100644
--- a/guides/zkml.md
+++ b/guides/zkml.md
@@ -12,13 +12,13 @@ This approach not only secures the verification process of machine learning mode
## Prerequisites
-- An operational [EVM](/tutorials/beaconkit.md) using Rollkit (see next step)
+- An operational EVM using Rollkit (see next step)
- A [Sindri](https://sindri.app) API key, which can be obtained [here](https://hen4zp9gxq3.typeform.com/to/hJHlUF8c?typeform-source=sindri.app)
- Python 3.10+ installed as well as the [Sindri Python SDK](https://sindri.app/docs/reference/sdk/python/) (more information below)
### Setting Up the Polaris EVM using Rollkit
-This walkthrough assumes you started the Polaris EVM using Rollkit and should be interpreted as a direct continuation of this [Polaris EVM and Rollkit guide](https://rollkit.dev/tutorials/polaris-evm).
+This walkthrough assumes you started the Polaris EVM using Rollkit and should be interpreted as a direct continuation of this Polaris EVM and Rollkit guide.
### Installing the Sindri Python SDK
diff --git a/learn/about.md b/learn/about.md
index e2b051914..81794c492 100644
--- a/learn/about.md
+++ b/learn/about.md
@@ -14,7 +14,7 @@ Our mission is to allow anyone to launch their own sovereign, customizable block
::: tip
In order to use Rollkit, it's important to have some familiarity with Cosmos SDK. You can get up to speed on Cosmos SDK by visiting their [official documentation page](https://docs.cosmos.network/main).
-If you're familiar with Rollkit, you may want to skip to the [tutorials section](/tutorials/gm-world).
+If you're familiar with Rollkit, you may want to skip to the [tutorials section](/tutorials/gm-world.md).
:::
## What is Rollkit?
@@ -60,7 +60,7 @@ Rollups inherit security from a data availability layer, by posting blocks to it
Rollkit rollups are deployed on specialized data availability layers like Celestia, which directly leverages the scalability of the DA layer. Additionally, rollup transactions are executed off-chain rather than the data availability layer. This means rollups have their own dedicated computational resources, rather than sharing computational resources with other applications.
- **Customizability:**
-Rollkit is built as an open source modular framework, to make it easier for developers to reuse the four main components and customize their rollups. These components are data availability layers, execution environments, proof systems, and sequencer schemes. The components used by the [Rollkit stack](/learn/stack) are customizable.
+Rollkit is built as an open source modular framework, to make it easier for developers to reuse the four main components and customize their rollups. These components are data availability layers, execution environments, proof systems, and sequencer schemes. The components used by the [Rollkit stack](/learn/stack.md) are customizable.
- **Faster time to market:**
Rollkit eliminates the need to bootstrap a validator set, manage a consensus network, incur high economic costs, and face other trade-offs that come with deploying a new layer 1. Rollkit's goal is to make deploying a rollup as easy as it is to deploy a smart contract, cutting the time it takes to bring blockchain products to market from months or even years to just minutes.
@@ -94,6 +94,6 @@ As of today, Rollkit is still in the alpha stage. The framework currently provid
We're currently working on implementing many new and exciting features such as light nodes and state fraud proofs.
-Head down to the next section to learn more about what's coming for Rollkit. If you're ready to start building, you can skip to the [Tutorials](/tutorials/gm-world) section.
+Head down to the next section to learn more about what's coming for Rollkit. If you're ready to start building, you can skip to the [Tutorials](/tutorials/gm-world.md) section.
Spoiler alert, whichever you choose, it's going to be a great rabbit hole!
diff --git a/learn/stack.md b/learn/stack.md
index 5cd35ef06..31fdfed3f 100644
--- a/learn/stack.md
+++ b/learn/stack.md
@@ -50,19 +50,19 @@ It's important to keep in mind that there is no direct correlation between the D
Celestia is a prominent example of a data availability integration implemented for Rollkit.
It's using the [Celestia Node API](https://node-rpc-docs.celestia.org)
via the [`rollkit/celestia-da`](https://github.com/rollkit/celestia-da) package.
-To deploy a Rollkit rollup on Celestia you also have to [run a Celestia light node](https://docs.celestia.org/developers/node-tutorial/).
+To deploy a Rollkit rollup on Celestia you also have to [run a Celestia light node](https://docs.celestia.org/tutorials/node-tutorial/).
-New DA layer integrations can be added by using the [DA interface](https://github.com/rollkit/rollkit/blob/main/core/da/da.go#L11).
+New DA layer integrations can be added by using the [DA interface](https://github.com/rollkit/rollkit/blob/main/core/da/da.go).
## Node components
### Mempool
-The [mempool](https://github.com/rollkit/rollkit/tree/main/mempool) is inspired by the CometBFT mempool. By default, transactions are handled in a First Come, First Served (FCFS) manner. Ordering of transactions can be implemented on the application level; currently this is possible by returning a priority on `CheckTx`, and once we support ABCI++ it is also possible via `PrepareProposal` and the [application mempool](https://docs.cosmos.network/v0.47/building-apps/app-mempool).
+The [mempool](https://github.com/rollkit/go-execution-abci/blob/marko/vn/pkg/rpc/core/mempool.go) is inspired by the CometBFT mempool. By default, transactions are handled in a First Come, First Served (FCFS) manner. Ordering of transactions can be implemented on the application level; currently this is possible by returning a priority on `CheckTx`, and once we support ABCI++ it is also possible via `PrepareProposal` and the [application mempool](https://docs.cosmos.network/v0.53/build/building-apps/app-mempool).
### Block manager
-The [block manager](https://github.com/rollkit/rollkit/tree/main/block) contains routines `AggregationLoop`, `RetrieveLoop`, and `SyncLoop` that communicate through Go channels. These Go routines are run when a Rollkit node starts up (`OnStart`). Only the sequencer nodes run `AggregationLoop` which controls the frequency of block production for a rollup with a timer as per the `BlockTime` in `BlockManager`.
+The [block manager](https://github.com/rollkit/rollkit/blob/main/block/manager.go#L101) contains routines `AggregationLoop`, `RetrieveLoop`, and `SyncLoop` that communicate through Go channels. These Go routines are run when a Rollkit node starts up (`OnStart`). Only the sequencer nodes run `AggregationLoop` which controls the frequency of block production for a rollup with a timer as per the `BlockTime` in `BlockManager`.
All nodes run `SyncLoop` which looks for the following operations:
@@ -75,7 +75,7 @@ All nodes also run `RetrieveLoop` which is responsible for interacting with the
### RPC
-Rollkit's [RPC](https://github.com/rollkit/rollkit/tree/main/rpc) fully implements the [CometBFT RPC](https://docs.cometbft.com/v0.37/spec/rpc/) interfaces and APIs for querying:
+Rollkit's [RPC](https://github.com/rollkit/rollkit/tree/main/pkg/rpc) fully implements the [CometBFT RPC](https://docs.cometbft.com/v0.37/spec/rpc/) interfaces and APIs for querying:
- **Information about the rollup node**: information such as node's health, status, and network info.
- **The rollup blockchain**: getting information about the rollup blockchain such as blocks and block headers.
@@ -102,12 +102,12 @@ curl http://127.0.0.1:26657/block?height=included
### P2P layer
-Rollkit's [P2P layer](https://github.com/rollkit/rollkit/tree/main/p2p) enables
+Rollkit's [P2P layer](https://github.com/rollkit/rollkit/tree/main/pkg/p2p) enables
direct communication between rollup nodes.
It's used to gossip transactions, headers of newly created blocks, and state fraud proofs.
The P2P layer is implemented using [libp2p](https://github.com/libp2p).
-Rollkit uses [DHT-based active peer discovery](https://curriculum.pl-launchpad.io/curriculum/libp2p/dht/).
+Rollkit uses [DHT-based active peer discovery](https://pl-launchpad.io/curriculum/libp2p/dht/).
Starting a node connects to pre-configured bootstrap peers, and advertises its namespace ID in the DHT.
This solution is flexible, because multiple rollup networks may reuse the same DHT/bootstrap nodes,
but specific rollup network might decide to use dedicated nodes as well.
diff --git a/public/bitcoin-rollkit/rollkit-bitcoin-1.png b/public/bitcoin-rollkit/rollkit-bitcoin-1.png
deleted file mode 100644
index a6e6635f2..000000000
Binary files a/public/bitcoin-rollkit/rollkit-bitcoin-1.png and /dev/null differ
diff --git a/public/bitcoin-rollkit/rollkit-bitcoin-2.png b/public/bitcoin-rollkit/rollkit-bitcoin-2.png
deleted file mode 100644
index 15302188e..000000000
Binary files a/public/bitcoin-rollkit/rollkit-bitcoin-2.png and /dev/null differ
diff --git a/public/bitcoin-rollkit/rollkit-bitcoin.png b/public/bitcoin-rollkit/rollkit-bitcoin.png
deleted file mode 100644
index 115d5f50d..000000000
Binary files a/public/bitcoin-rollkit/rollkit-bitcoin.png and /dev/null differ
diff --git a/tutorials/da/celestia-da.md b/tutorials/da/celestia-da.md
index 4c8a0d3cb..49624cf65 100644
--- a/tutorials/da/celestia-da.md
+++ b/tutorials/da/celestia-da.md
@@ -9,7 +9,7 @@ import constants from '../../.vitepress/constants/constants.js'
This tutorial serves as a comprehensive guide for deploying your rollup on Celestia's data availability (DA) network. From the Rollkit perspective, there's no difference in posting blocks to Celestia's testnets or Mainnet Beta.
-Before proceeding, ensure that you have completed the [gm-world](/tutorials/gm-world) tutorial, which covers installing the Testapp CLI and running a rollup against a local DA network.
+Before proceeding, ensure that you have completed the [gm-world](/tutorials/gm-world.md) tutorial, which covers installing the Testapp CLI and running a rollup against a local DA network.
## 🪶 Running a Celestia light node
@@ -36,9 +36,9 @@ Celestia Node Version: {{constants.celestiaNodeMainnetTag}}
:::
-- [Arabica Devnet](https://docs.celestia.org/nodes/arabica-devnet)
-- [Mocha Testnet](https://docs.celestia.org/nodes/mocha-testnet)
-- [Mainnet Beta](https://docs.celestia.org/nodes/mainnet)
+- [Arabica Devnet](https://docs.celestia.org/how-to-guides/arabica-devnet)
+- [Mocha Testnet](https://docs.celestia.org/how-to-guides/mocha-testnet)
+- [Mainnet Beta](https://docs.celestia.org/how-to-guides/mainnet)
The main difference lies in how you fund your wallet address: using testnet TIA or [TIA](https://docs.celestia.org/learn/tia#overview-of-tia) for Mainnet Beta.
@@ -46,7 +46,7 @@ After successfully starting a light node, it's time to start posting the batches
## 🏗️ Prerequisites {#prerequisites}
-- `gmd` CLI installed from the [gm-world](/tutorials/gm-world) tutorial.
+- `gmd` CLI installed from the [gm-world](/tutorials/gm-world.md) tutorial.
## 🛠️ Configuring flags for DA
@@ -117,7 +117,7 @@ openssl rand -hex 10
Replace the last 20 characters (10 bytes) in `00000000000000000000000000000000000000000008e5f679bf7116cb` with the newly generated 10 bytes.
-[Learn more about namespaces](https://docs.celestia.org/developers/node-tutorial#namespaces).
+[Learn more about namespaces](https://docs.celestia.org/tutorials/node-tutorial#namespaces).
:::
Lastly, set your DA address for your light node, which by default runs at
@@ -146,9 +146,9 @@ For example, [here on Celenium for Arabica](https://arabica.celenium.io/).
Other explorers:
-- [Arabica testnet](https://docs.celestia.org/nodes/arabica-testnet#explorers)
-- [Mocha testnet](https://docs.celestia.org/nodes/mocha-testnet#explorers)
-- [Mainnet Beta](https://docs.celestia.org/nodes/mainnet#explorers)
+- [Arabica testnet](https://docs.celestia.org/how-to-guides/arabica-devnet#explorers)
+- [Mocha testnet](https://docs.celestia.org/how-to-guides/mocha-testnet#explorers)
+- [Mainnet Beta](https://docs.celestia.org/how-to-guides/mainnet#explorers)
## 🎉 Next steps
diff --git a/tutorials/da/local-da.md b/tutorials/da/local-da.md
index 88964cc1f..48728aefa 100644
--- a/tutorials/da/local-da.md
+++ b/tutorials/da/local-da.md
@@ -9,7 +9,7 @@ import constants from '../../.vitepress/constants/constants.js'
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/gm-world.md) tutorial, which covers installing the rollkit CLI, building your chain, and running your chain.
+Before proceeding, ensure that you have completed the [quick start](/tutorials/quick-start.md) or [build a chain](/tutorials/gm-world.md) tutorial, which covers installing the rollkit CLI, building your chain, and running your chain.
## Setting Up a Local DA Network
diff --git a/tutorials/da/overview.md b/tutorials/da/overview.md
index 3c433053c..9b69704cf 100644
--- a/tutorials/da/overview.md
+++ b/tutorials/da/overview.md
@@ -58,7 +58,7 @@ type DA interface {
## 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](/tutorials/gm-world.md) tutorials. This is because we used a mock DA layer that is built into Rollkit.
+You might have noticed that we did not define any DA layer during the [quick start](/tutorials/quick-start.md) or [build a chain](/tutorials/gm-world.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:
@@ -72,5 +72,5 @@ The mock DA layer is a simple in-memory DA layer that is great for testing and d
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)
+* [Local DA](/tutorials/da/local-da.md)
+* [Celestia DA](/tutorials/da/celestia-da.md)
diff --git a/tutorials/deploy-overview.md b/tutorials/deploy-overview.md
index f275003eb..49be96a39 100644
--- a/tutorials/deploy-overview.md
+++ b/tutorials/deploy-overview.md
@@ -16,5 +16,5 @@ In this section, you'll see a few examples of how you can deploy your rollup env
These examples are for educational purposes only. Before deploying your rollup for production use you should fully understand the services you are deploying and your choice in deployment method.
:::
-* [Deploy with Docker Compose](/tutorials/docker-compose)
+* [Deploy with Docker Compose](/tutorials/docker-compose.md)
diff --git a/tutorials/execution/cosmwasm.md b/tutorials/execution/cosmwasm.md
index 16a958bc4..8b0d67f38 100644
--- a/tutorials/execution/cosmwasm.md
+++ b/tutorials/execution/cosmwasm.md
@@ -23,14 +23,12 @@ exploring how to integrate CosmWasm with local DA layer using Rollkit.
The smart contract we will use for this tutorial is one provided by
the CosmWasm team for Nameservice purchasing.
-You can check out the contract [here](https://github.com/InterWasm/cw-contracts/tree/main/contracts/nameservice).
-
How to write the Rust smart contract for Nameservice is outside the scope of
this tutorial.
## 💻 CosmWasm dependency {#dependencies}
-As with the [GM Rollup](https://rollkit.dev/tutorials/gm-world), we use [kurtosis](https://docs.kurtosis.com/) to help with managing all the services we need to run. You can [install kurtosis here](https://docs.kurtosis.com/install).
+As with the [GM Rollup](/tutorials/gm-world.md), we use [kurtosis](https://docs.kurtosis.com/) to help with managing all the services we need to run. You can [install kurtosis here](https://docs.kurtosis.com/install).
Once installed, you can verify the installation by running:
diff --git a/tutorials/sequencing/overview.md b/tutorials/sequencing/overview.md
index 544e12bce..28501f1e7 100644
--- a/tutorials/sequencing/overview.md
+++ b/tutorials/sequencing/overview.md
@@ -1,4 +1,3 @@
-
# Sequencing
Sequencing is the essential first step for handling your transactions. Think of it as an organizer that takes all incoming transactions, puts them in a clear order, and then groups them into batches. This process is vital for keeping everything consistent and making the rollup run. Rollkit uses a "Sequencing Interface" with key functions like submitting, retrieving, and verifying these transaction batches, ensuring smooth communication between the rollup and the sequencing mechanism, which often acts as a bridge to the underlying network.
@@ -27,5 +26,5 @@ An implementation of the sequencing interface mainly acts as a middleware that c
The sequencing implementations that are currently work in progress:
-* [based-sequencer](based)
-* [forced-inclusion-sequencer](forced-inclusion)
+* [based-sequencer](/tutorials/sequencing/based.md)
+* [forced-inclusion-sequencer](/tutorials/sequencing/forced-inclusion.md)