From 45394613fa3a6c37e1d5df876b78b9d6e9f4b5d3 Mon Sep 17 00:00:00 2001 From: tac0turtle Date: Fri, 23 May 2025 12:02:54 +0200 Subject: [PATCH 1/2] remove the mention of rollup --- blog/overview.md | 2 +- guides/cometbft-to-rollkit.md | 2 +- guides/config.md | 4 +-- guides/create-genesis.md | 58 +++++++++-------------------------- guides/full-node.md | 10 +++--- guides/ignite-rollkit.md | 5 ++- guides/overview.md | 17 +++++----- guides/restart-rollup.md | 38 +++++++++-------------- index.md | 2 +- testnets/cosmwasm-testnet.md | 16 +++++++--- 10 files changed, 60 insertions(+), 94 deletions(-) diff --git a/blog/overview.md b/blog/overview.md index eec1e3e35..9d2f0bd5d 100644 --- a/blog/overview.md +++ b/blog/overview.md @@ -8,7 +8,7 @@ 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) +- [Sovereign Applications 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/guides/cometbft-to-rollkit.md b/guides/cometbft-to-rollkit.md index a65085832..25f190afb 100644 --- a/guides/cometbft-to-rollkit.md +++ b/guides/cometbft-to-rollkit.md @@ -38,7 +38,7 @@ ignite rollkit init ## Initialize Rollkit CLI Configuration {#initialize-rollkit-cli-configuration} -Next, you'll need to initialize the Rollkit CLI configuration by generating the `rollkit.toml` file. This file is crucial for Rollkit to understand the structure of your rollup. +Next, you'll need to initialize the Rollkit CLI configuration by generating the `rollkit.toml` file. This file is crucial for Rollkit to understand the structure of your chain. To create the `rollkit.toml` configuration, use this command: diff --git a/guides/config.md b/guides/config.md index 434084137..a4e84b399 100644 --- a/guides/config.md +++ b/guides/config.md @@ -98,7 +98,7 @@ db_path: "data" ### Chain ID **Description:** -The unique identifier for your rollup chain. This ID is used to differentiate your network from others and is crucial for network communication and transaction validation. +The unique identifier for your chain. This ID is used to differentiate your network from others and is crucial for network communication and transaction validation. **YAML:** Set this in your configuration file at the top level: @@ -109,7 +109,7 @@ chain_id: "my-rollkit-chain" **Command-line Flag:** `--chain_id ` -*Example:* `--chain_id "super_rollup_testnet_v1"` +*Example:* `--chain_id "super_testnet_v1"` *Default:* `"rollkit"` *Constant:* `FlagChainID` diff --git a/guides/create-genesis.md b/guides/create-genesis.md index 9cf71a948..d6f8da458 100644 --- a/guides/create-genesis.md +++ b/guides/create-genesis.md @@ -1,8 +1,8 @@ -# How to create a genesis for your rollup +# How to create a genesis -This guide will walk you through the process of setting up a genesis for your rollup. Follow the steps below to initialize your rollup chain, add a genesis account, and start the chain. +This guide will walk you through the process of setting up a genesis. Follow the steps below to initialize your chain, add a genesis account, and start the chain. -## 0. Pre-requisities +## Pre-requisities For this guide you need to have a chain directory where you have created and built your chain. @@ -12,48 +12,20 @@ If you don't have a chain directory yet, you can initialize a simple ignite chai This guide will use the simple ignite chain created in linked guide. Make sure to update any relevant variables to match your chain. ::: -## 1. Setting variables +## Setting variables First, set the necessary variables for your chain in the terminal, here is an example: ```sh VALIDATOR_NAME=validator1 CHAIN_ID=gm -KEY_NAME=rollup-key +KEY_NAME=key CHAINFLAG="--chain-id ${CHAIN_ID}" TOKEN_AMOUNT="10000000000000000000000000stake" 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: - -```sh -rollkit rebuild -``` - -This (re)creates an `entrypoint` binary in the root of your rollup directory. which is used to run all the operations on the rollup chain. - -Ensure that the chain configuration directory is set correctly in the `rollkit.toml` file. - -For example: - -```sh -[chain] - config_dir = "/Users/you/.gm" -``` - -:::tip -You can always recreate the `rollkit.toml` file by deleting it and re-running the following command: - -```sh -rollkit toml init -``` - -::: - -## 3. Resetting existing genesis/chain data +## Resetting existing genesis/chain data Reset any existing chain data: @@ -68,7 +40,7 @@ rm -rf $HOME/.$CHAIN_ID/config/gentx rm $HOME/.$CHAIN_ID/config/genesis.json ``` -## 4. Initializing the validator +## Initializing the validator Initialize the validator with the chain ID you set: @@ -76,7 +48,7 @@ Initialize the validator with the chain ID you set: rollkit init $VALIDATOR_NAME --chain-id $CHAIN_ID ``` -## 5. Adding a key to keyring backend +## Adding a key to keyring backend Add a key to the keyring-backend: @@ -84,7 +56,7 @@ Add a key to the keyring-backend: rollkit keys add $KEY_NAME --keyring-backend test ``` -## 6. Adding a genesis account +## Adding a genesis account Add a genesis account with the specified token amount: @@ -92,7 +64,7 @@ Add a genesis account with the specified token amount: rollkit genesis add-genesis-account $KEY_NAME $TOKEN_AMOUNT --keyring-backend test ``` -## 7. Setting the staking amount in the genesis transaction +## Setting the staking amount in the genesis transaction Set the staking amount in the genesis transaction: @@ -100,7 +72,7 @@ Set the staking amount in the genesis transaction: rollkit genesis gentx $KEY_NAME $STAKING_AMOUNT --chain-id $CHAIN_ID --keyring-backend test ``` -## 8. Collecting genesis transactions +## Collecting genesis transactions Collect the genesis transactions: @@ -108,7 +80,7 @@ Collect the genesis transactions: rollkit genesis collect-gentxs ``` -## 9. Configuring the genesis file +## Configuring the genesis file Copy the centralized sequencer address into `genesis.json`: @@ -118,16 +90,16 @@ PUB_KEY=$(jq -r '.pub_key' ~/.$CHAIN_ID/config/priv_validator_key.json) jq --argjson pubKey "$PUB_KEY" '.consensus["validators"]=[{"address": "'$ADDRESS'", "pub_key": $pubKey, "power": "1000", "name": "Rollkit Sequencer"}]' ~/.$CHAIN_ID/config/genesis.json > temp.json && mv temp.json ~/.$CHAIN_ID/config/genesis.json ``` -## 10. Starting the chain +## Starting the chain Finally, start the chain with your start command. For example, start the simple ignite chain with the following command: ```sh -rollkit start --rollkit.aggregator --rollkit.sequencer_rollup_id $CHAIN_ID +rollkit start --rollkit.aggregator ``` ## Summary -By following these steps, you will set up the genesis for your rollup, initialize the validator, add a genesis account, and started the chain. This guide provides a basic framework for configuring and starting your rollup using the Rollkit CLI. Make sure `rollkit.toml` is present in the root of your rollup directory, and use the `rollkit` command for all operations. +By following these steps, you will set up the genesis, initialize the validator, add a genesis account, and started the chain. This guide provides a basic framework for configuring and starting your chain using your binary. Make sure `rollkit.toml` is present in the root of your chain directory, and use the `rollkit` command for all operations. diff --git a/guides/full-node.md b/guides/full-node.md index 690a16830..ec5e5299e 100644 --- a/guides/full-node.md +++ b/guides/full-node.md @@ -1,4 +1,4 @@ -# Rollup Full Node Setup Guide +# Full Node Setup Guide ## Introduction @@ -22,7 +22,7 @@ Let's set a terminal variable for the chain ID. CHAIN_ID=gm ``` -Initialize the chain config for the full node, lets call it `FullNode` and set the chain ID to your rollup chain ID: +Initialize the chain config for the full node, lets call it `FullNode` and set the chain ID to your chain ID: ```bash {BINARY} init FullNode --chain-id=$CHAIN_ID @@ -38,7 +38,7 @@ cp $HOME/.$CHAIN_ID/config/genesis.json $HOME/.${CHAIN_ID}_fn/config/genesis.jso Identify the sequencer node's P2P address from its logs. It will look similar to: -``` +```bash 1:55PM INF listening on address=/ip4/127.0.0.1/tcp/36656/p2p/12D3KooWJbD9TQoMSSSUyfhHMmgVY3LqCjxYFz8wQ92Qa6DAqtmh ``` @@ -72,12 +72,10 @@ rollkit start \ --grpc.address 127.0.0.1:9390 \ --p2p.laddr "0.0.0.0:46656" \ --api.address tcp://localhost:1318 \ - --rollkit.sequencer_rollup_id gm ``` Key points about this command: -- `rollkit.sequencer_rollup_id` is generally the `$CHAIN_ID`, which is `gm` in this case. - The ports and addresses are different from the sequencer node to avoid conflicts. Not everything may be necessary for your setup. - We use the `P2P_ID` environment variable to set the seed node. @@ -93,7 +91,7 @@ After starting your full node, you should see output similar to: This output indicates that your full node is successfully connecting to the network and processing blocks. :::tip -If your rollup uses EVM as an execution layar and you see an error like `datadir already used by another process`, it means you have to remove all the state from rollup data directory (`/root/.yourrollup_fn/data/`) and specify a different data directory for the EVM client. +If your chain uses EVM as an execution layer and you see an error like `datadir already used by another process`, it means you have to remove all the state from the data directory (`/root/.{binary_home}/data/`) and specify a different data directory for the EVM client. ::: ## Conclusion diff --git a/guides/ignite-rollkit.md b/guides/ignite-rollkit.md index 275b497d5..7d6fb2047 100644 --- a/guides/ignite-rollkit.md +++ b/guides/ignite-rollkit.md @@ -71,7 +71,7 @@ ignite rollkit init To initialize the Rollkit CLI configuration, generate the `rollkit.toml` file by running the following command: ```bash -rollkit toml init +{APP_BINARY} init ``` This will set up the Rollkit configuration file rollkit.toml, allowing you to use the Rollkit CLI for managing and running your blockchain. @@ -81,12 +81,11 @@ This will set up the Rollkit configuration file rollkit.toml, allowing you to us Now you are ready to start your chain. We need to include 2 flags: 1. `--rollkit.aggregator` to signal that this node is the block producer -2. `--rollkit.sequencer_rollup_id gm` to share the chain ID with the sequencer. Start your chain using the following command: ```bash -rollkit start --rollkit.aggregator --rollkit.sequencer_rollup_id gm +{APP_BINARY} start --rollkit.aggregator ``` Your rollkit chain is now up and running. diff --git a/guides/overview.md b/guides/overview.md index d44ff94fa..983cc4924 100644 --- a/guides/overview.md +++ b/guides/overview.md @@ -5,8 +5,7 @@ description: This page provides a comprehensive overview of the how to guides av # How To Guides Welcome to the Rollkit guides section! Here, you'll find a wide range of guides -designed to help you understand and effectively use Rollkit, the first sovereign -rollup framework. +designed to help you understand and effectively use Rollkit. Hopefully you've gone through some of the tutorials and are ready to dive deeper. These guides will go into detail on some specific topics that will make @@ -14,22 +13,22 @@ your life easier when developing with Rollkit. In this section, you'll find: -* [Create genesis for your rollup](/guides/create-genesis) -* [Restart your rollup](/guides/restart-rollup) +* [Create genesis](/guides/create-genesis) +* [Restart your chain](/guides/restart-rollup) * [Reset your chain's state](/guides/reset-state) * [Turn your CometBFT app into a Rollkit app](/guides/cometbft-to-rollkit) * [Use Ignite to create a Rollkit app](/guides/ignite-rollkit) -* EVM Rollups +* EVM Applications * [EVM Based Sequencer Setup](/guides/evm-based) * [EVM Single Sequencer Setup](/guides/evm-single-guide) * Configuration * [Config Settings](/guides/config) * Integrations * [Test and deploy cosmwasm smart-contracts](/guides/cw-orch) - * [Add zkML to your EVM rollup](/guides/zkml) - * [Add an IBC connection to your rollup](/guides/ibc-connection) - * [Integrate Range with your rollup](/guides/rollkit-monitoring) - * [Use IBC token (TIA) as gas token in your rollup](/guides/use-tia-for-gas) + * [Add zkML to your EVM](/guides/zkml) + * [Add an IBC connection](/guides/ibc-connection) + * [Integrate Range](/guides/rollkit-monitoring) + * [Use IBC token (TIA) as gas token](/guides/use-tia-for-gas) ## πŸ’» Support {#support} diff --git a/guides/restart-rollup.md b/guides/restart-rollup.md index 2633c2724..0ead9b4be 100644 --- a/guides/restart-rollup.md +++ b/guides/restart-rollup.md @@ -1,18 +1,18 @@ -# πŸ”„ How to restart your rollup +# πŸ”„ How to restart your Application -This guide will teach you how to restart your Rollkit rollup. +This guide will teach you how to restart your Application. -## Restart rollup +## Restart -This section covers the case where you need to restart your rollup. +This section covers the case where you need to restart your chain. -In order to restart your rollup, you simply need to run the `d start [...args]` -command for your rollup. +In order to restart your chain, you simply need to run the `d start [...args]` +command. -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 chain with: ```bash -rollkit start +{APP_BINARY} start ``` You would have see output similar to: @@ -24,10 +24,10 @@ I[2024-10-17|14:52:12.845] executed block module=B I[2024-10-17|14:52:12.846] indexed block events module=txindex height=7 ``` -If you need to restart your rollup, you can run the same command again: +If you need to restart your chain, you can run the same command again: ```bash -rollkit start +{APP_BINARY} start ``` You will see that the block height will continue from where it left off: @@ -39,13 +39,13 @@ I[2024-10-17|14:52:13.845] executed block module=B I[2024-10-17|14:52:13.845] indexed block events module=txindex height=8 ``` -It is important to include any additional flags that you used when you first started your rollup. For example, if you used the `--rollkit.da_namespace` flag, you will need to include that flag when restarting your rollup to ensure your rollup continues to publish blobs to the same namespace. +It is important to include any additional flags that you used when you first started your chain. For example, if you used the `--rollkit.da.namespace` flag, you will need to include that flag when restarting your chain to ensure your chain continues to publish blobs to the same namespace. -## Restart rollup after running out of funds +## Restart after running out of funds 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. +and you need to restart. 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 @@ -58,7 +58,7 @@ error. This error is defined by Cosmos SDK as: ErrTxInMempoolCache = Register(RootCodespace, 19, "tx already in mempool") ``` -In order to get around this error, and the same error on other Rollkit rollups, you will need to re-fund your Celestia account and increase the gas fee. This will override the transaction that is stuck in the mempool. +In order to get around this error, and the same error on other applications, you will need to re-fund your Celestia account and increase the gas fee. This will override the transaction that is stuck in the mempool. If you top up the balance of your node and don't increase the gas fee, you will still encounter the `Code: 19` error because there is a transaction (posting block to DA) that is duplicate to one that already exists. In order to get around this, you'll need to increase the gas fee and restart the chain. @@ -82,20 +82,12 @@ cd $HOME && cd celestia-node ./cel-key list --keyring-backend test --node.type light --p2p.network ``` -### πŸ›‘ Stopping your rollup {#stopping-your-rollup} - -You can stop your rollup by using `Control + C` in your terminal where the node is running. - ### β›½ 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. -### πŸ” Restarting your rollup {#restarting-your-rollup} - -Follow the [restart rollup](#restart-rollup) section above. - ### πŸ›’οΈ Reduce gas fee & restart again {#reduce-gas-fee-restart-again} In order to save your TIA, we also recommend stopping the chain with `Control + C`, changing the gas fee back to the default (in our case, 8000 utia) and restarting the chain: -🎊 Congrats! You've successfully restarted your Rollkit rollup after running out of TIA. +🎊 Congrats! You've successfully restarted your chain after running out of TIA. diff --git a/index.md b/index.md index 583cb0619..514808d03 100644 --- a/index.md +++ b/index.md @@ -24,7 +24,7 @@ features: link: /learn/about#why-rollkit icon: ✨ - title: Optimize for your needs - details: Take full advantage of modularity by optimizing your rollup to your needs. Tailor your block production. Choose your VM. Pick your DA layer. + details: Take full advantage of modularity by optimizing your chain to your needs. Tailor your block production. Choose your VM. Pick your DA layer. link: /learn/stack icon: βš™οΈ - title: Take Control diff --git a/testnets/cosmwasm-testnet.md b/testnets/cosmwasm-testnet.md index ac72412d8..f7386d42f 100644 --- a/testnets/cosmwasm-testnet.md +++ b/testnets/cosmwasm-testnet.md @@ -10,10 +10,10 @@ Our CosmWasm testnet is deployed by following the [cosmwasm tutorial](/tutorials - Chain ID: `rosm` - Address Prefix: `wasm` - - e.g., `wasm1lysztpn74kl40w6ghfhy7xr0v44r658szuysl5` + - e.g., `wasm1lysztpn74kl40w6ghfhy7xr0v44r658szuysl5` - Rollkit version: `v0.13.1` - RPC: `https://rpc.rosm.rollkit.dev/` - - Example: `https://rpc.rosm.rollkit.dev/block?height=1` + - Example: `https://rpc.rosm.rollkit.dev/block?height=1` ```json { @@ -81,8 +81,10 @@ Our CosmWasm testnet is deployed by following the [cosmwasm tutorial](/tutorials "id": -1 } ``` + - Tendermint API endpoint (uses default 1317 port): `https://api.rosm.rollkit.dev` - - Example: `https://api.rosm.rollkit.dev/cosmos/auth/v1beta1/accounts/wasm1lysztpn74kl40w6ghfhy7xr0v44r658szuysl5` + - Example: `https://api.rosm.rollkit.dev/cosmos/auth/v1beta1/accounts/wasm1lysztpn74kl40w6ghfhy7xr0v44r658szuysl5` + ```json { "account": { @@ -94,16 +96,20 @@ Our CosmWasm testnet is deployed by following the [cosmwasm tutorial](/tutorials } } ``` + - Block Explorer: [https://canary.modular.cloud/rollkit-cosmwasm](https://canary.modular.cloud/rollkit-cosmwasm) ::: warning The modular.cloud explorer is work in progress. In the meanwhile, the wasm CLI can be used to query the accounts. For example: to collect the transactions for any account, following command can be used. -``` + +```bash wasmd query txs --query "message.sender='wasm1lysztpn74kl40w6ghfhy7xr0v44r658szuysl5'" --node https://rpc.rosm.rollkit.dev ``` + ::: + - Faucet: [https://faucet.rosm.rollkit.dev/](https://faucet.rosm.rollkit.dev/) - - You can request 1 rosm (or 1000000urosm) every 24 hours. + - You can request 1 rosm (or 1000000urosm) every 24 hours. ![Faucet](/testnets/faucet.png) - Mocha Namespace: `000000000000000000000000000000000000b7b24d9321578eb83626`, [view it on Celenium](https://mocha.celenium.io/namespace/000000000000000000000000000000000000b7b24d9321578eb83626) - DA Block Time: `15s` From 99c649c35710a06b653ca3eca0cdbcd2467f5ca7 Mon Sep 17 00:00:00 2001 From: tac0turtle Date: Fri, 23 May 2025 14:28:19 +0200 Subject: [PATCH 2/2] remove rollup from tutorials --- learn/stack.md | 38 ++++++++++++++--------------- learn/transaction-flow.md | 20 ++++++++-------- tutorials/bitcoin.md | 22 ++++++++--------- tutorials/da/celestia-da.md | 16 ++++++------- tutorials/da/local-da.md | 13 +++++----- tutorials/da/overview.md | 2 +- tutorials/deploy-overview.md | 14 +++++------ tutorials/execution/cosmwasm.md | 20 ++++++++-------- tutorials/gm-world.md | 41 +++++++++++++------------------- tutorials/quick-start.md | 26 ++++++++++++++++---- tutorials/sequencing/based.md | 24 +++++++++---------- tutorials/sequencing/overview.md | 13 +++++----- tutorials/sequencing/single.md | 14 +++++------ 13 files changed, 135 insertions(+), 128 deletions(-) diff --git a/learn/stack.md b/learn/stack.md index 44cfe0269..dfb9ca593 100644 --- a/learn/stack.md +++ b/learn/stack.md @@ -2,7 +2,7 @@ This page will cover the main components of Rollkit. -Rollup sequencer nodes collect transactions from users, aggregate them into blocks, and post the blocks onto a data availability (DA) layer (such as Celestia) to be ordered and finalized. Full nodes execute and verify rollup blocks, and in the case of an optimistic rollup, propagate fraud proofs when needed. Light clients will receive headers, verify proofs (fraud, zk, etc), and authenticate trust-minimized queries about the state. +Sequencer nodes collect transactions from users, aggregate them into blocks, and post the blocks onto a data availability (DA) layer (such as Celestia) to be ordered and finalized. Full nodes execute and verify blocks, and in the case of an optimistic system, propagate fraud proofs when needed. Light clients will receive headers, verify proofs (fraud, zk, etc), and authenticate trust-minimized queries about the state. ## Application structure @@ -22,7 +22,7 @@ Rollkit's execution API is simple and allows developers to bring their own execu #### Cosmos SDK -Would you like to change your Cosmos SDK application to a Rollkit rollup? +Would you like to change your Cosmos SDK application to a Rollkit chain? No problem! All you need to do is use the start function we provide in the ABCI Folder, [see here on what changes are needed](TODO) ### Data availability @@ -30,20 +30,20 @@ No problem! All you need to do is use the start function we provide in the ABCI [Data availability (DA)](https://github.com/rollkit/rollkit/tree/main/da) can be accessed using generic [interfaces](https://github.com/rollkit/rollkit/blob/main/core/da/da.go). The `BlockRetriever` interface serves to enable syncing of full nodes from the data availability layer. -It's important to keep in mind that there is no direct correlation between the DA layer block height and the rollup height. Each DA layer block may contain an arbitrary number of rollup blocks. +It's important to keep in mind that there is no direct correlation between the DA layer block height and the chain height. Each DA layer block may contain an arbitrary number of blocks. #### Celestia 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/da`](https://github.com/rollkit/rollkit/tree/main/da) package. -To deploy a Rollkit rollup on Celestia you also have to [run a Celestia light node](https://docs.celestia.org/how-to-guides/celestia-node). +To deploy a Rollkit chain on Celestia you also have to [run a Celestia light node](https://docs.celestia.org/how-to-guides/celestia-node). ## Node components ### 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/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 chain with a timer as per the `BlockTime` in `BlockManager`. All nodes run `SyncLoop` which looks for the following operations: @@ -52,16 +52,16 @@ All nodes run `SyncLoop` which looks for the following operations: - Signal `RetrieveLoop` with timer as per the `DABlockTime` in `BlockManager`. -All nodes also run `RetrieveLoop` which is responsible for interacting with the data availability layer. It checks the last updated `DAHeight` to retrieve a block with timer `DABlockTime` signaled by `SyncLoop`. Note that the start height of the DA layer for the rollup, `DAStartHeight`, is configurable in `BlockManager`. +All nodes also run `RetrieveLoop` which is responsible for interacting with the data availability layer. It checks the last updated `DAHeight` to retrieve a block with timer `DABlockTime` signaled by `SyncLoop`. Note that the start height of the DA layer for the chain, `DAStartHeight`, is configurable in `BlockManager`. -### Comet RPC +### Comet RPC Rollkit's ABCI [RPC](https://github.com/rollkit/go-execution-abci/tree/main/pkg/rpc) 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. -- **The rollup transactions**: getting transaction information and broadcasting raw transactions, with search capabilities. -- **ABCI**: rollup application information. +- **Information about the node**: information such as node's health, status, and network info. +- **The blockchain**: getting information about the blockchain such as blocks and block headers. +- **The transactions**: getting transaction information and broadcasting raw transactions, with search capabilities. +- **ABCI**: application information. The following RPC protocols are currently supported: @@ -84,14 +84,14 @@ 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 -direct communication between rollup nodes. +direct communication between 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/). 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. +This solution is flexible, because multiple networks may reuse the same DHT/bootstrap nodes, +but specific network might decide to use dedicated nodes as well. ## Rollkit node types @@ -99,15 +99,15 @@ Rollkit nodes are implemented in the [`node`](https://github.com/rollkit/rollkit ### Full node -Full nodes verify all blocks, and produce fraud proofs for optimistic rollups. Since they fully verify all rollup blocks, they don't rely on fraud or validity proofs for security. +Full nodes verify all blocks, and produce fraud proofs for optimistic systems. Since they fully verify all blocks, they don't rely on fraud or validity proofs for security. ### Sequencer node -Rollups can utilize sequencer nodes. Sequencers are block producers for rollups, responsible for aggregating transactions into blocks, and typically executing transactions to produce a state root, used by the rollup's light clients. +Sequencer nodes can be utilized. Sequencers are block producers, responsible for aggregating transactions into blocks, and typically executing transactions to produce a state root, used by the light clients. Rollkit plans to support multiple different pluggable sequencer schemes: -| | Deploy in one-click | Faster soft-confirmations than L1 | Control over rollup's transaction ordering | Atomic composability with other rollups | Censorship resistance | Implementation Status | +| | Deploy in one-click | Faster soft-confirmations than L1 | Control over transaction ordering | Atomic composability with other chains | Censorship resistance | Implementation Status | |:---------------------:|:--------------------------------:|:---------------------------------:|:------------------------------------------:|:---------------------------------------:|:---------------------:|:---------------------:| | Single sequencer | Requires spinning up a sequencer | Yes βœ… | Yes βœ… | No ❌ | Eventual ⏳* | βœ… Implemented! | | Based sequencer | Requires spinning up a gateway | No ❌ | Yes βœ… | No ❌ | Yes βœ… | Planned | @@ -116,6 +116,6 @@ Rollkit plans to support multiple different pluggable sequencer schemes: ### Pessimistic (full nodes only) -A pessimistic rollup is a rollup that only supports full nodes that replay all the transactions in the rollup in order to check its validity. Rollkit supports pessimistic rollups by default. +A pessimistic system is one that only supports full nodes that replay all the transactions in the system in order to check its validity. Rollkit supports pessimistic operation by default. -Pessimistic rollups are similar to how Tether uses Bitcoin as a data availability layer via [OmniLayer](https://github.com/OmniLayer/spec/blob/master/OmniSpecification-v0.6.adoc#summary). +This pessimistic mode of operation is similar to how Tether uses Bitcoin as a data availability layer via [OmniLayer](https://github.com/OmniLayer/spec/blob/master/OmniSpecification-v0.6.adoc#summary). diff --git a/learn/transaction-flow.md b/learn/transaction-flow.md index 29545cdba..92e8447c5 100644 --- a/learn/transaction-flow.md +++ b/learn/transaction-flow.md @@ -1,6 +1,6 @@ # Transaction flow -Rollup users use a light node to communicate with the rollup P2P network for two primary reasons: +Users use a light node to communicate with the P2P network for two primary reasons: - submitting transactions - gossipping headers and fraud proofs @@ -35,7 +35,7 @@ sequenceDiagram FullNode->>FullNode: Add to Mempool (if valid) FullNode-->>User: Transaction Processed (if valid) FullNode->>Sequencer: Inform about Valid Transaction - Sequencer->>DALayer: Add to Rollup Block + Sequencer->>DALayer: Add to Block ``` ## Block processing @@ -44,9 +44,9 @@ sequenceDiagram sequenceDiagram participant DALayer participant FullNode - participant RollupChain + participant Chain - DALayer->>RollupChain: Update State + DALayer->>Chain: Update State DALayer->>FullNode: Download & Validate Block FullNode->>FullNode: Generate Fraud Proofs (if invalid) ``` @@ -57,20 +57,20 @@ sequenceDiagram sequenceDiagram participant FullNode participant LightNode - participant RollupChain + participant Chain FullNode->>LightNode: Gossip Fraud Proofs (if invalid) - RollupChain->>RollupChain: Halt & Decide to Fork (if invalid) - RollupChain->>DALayer: Submit New Block (after fork) + Chain->>Chain: Halt & Decide to Fork (if invalid) + Chain->>DALayer: Submit New Block (after fork) ``` To transact, users submit a transaction to their light node, which gossips the transaction to a full node. Before adding the transaction to their mempool, the full node checks its validity. Valid transactions are included in the mempool, while invalid ones are refused, and the user's transaction will not be processed. -If the transaction is valid and has been included in the mempool, the sequencer can add it to a rollup block, which is then submitted to the data availability (DA) layer. This results in a successful transaction flow for the user, and the state of the rollup is updated accordingly. +If the transaction is valid and has been included in the mempool, the sequencer can add it to a block, which is then submitted to the data availability (DA) layer. This results in a successful transaction flow for the user, and the state of the system is updated accordingly. +As a result, the chain will halt, and the network will decide to fork the chain through social consensus. In the future, when a decentralized sequencer scheme is in place, additional options will be available, such as slashing the sequencer or selecting another full node as the sequencer. However, in any case, a new block must be created and submitted to the DA layer. You can read more about sequencer nodes [here](/learn/stack#sequencer-node). --> diff --git a/tutorials/bitcoin.md b/tutorials/bitcoin.md index 7fc58a05f..412bdafe7 100644 --- a/tutorials/bitcoin.md +++ b/tutorials/bitcoin.md @@ -1,10 +1,10 @@ -# Bitcoin rollup tutorial +# Bitcoin integration tutorial ## β˜€οΈIntroduction -In this tutorial, we will explore how to use Rollkit to create sovereign rollups on Bitcoin. First, we will install Bitcoin Core to run a local testnet. Then, we will install and set up a Rollkit node to work with Bitcoin as a data availability layer. Lastly, we'll look at how to create a custom EVM execution environment and how to deploy a sovereign rollup on Bitcoin using Rollkit. +In this tutorial, we will explore how to use Rollkit to create sovereign systems on Bitcoin. First, we will install Bitcoin Core to run a local testnet. Then, we will install and set up a Rollkit node to work with Bitcoin as a data availability layer. Lastly, we'll look at how to create a custom EVM execution environment and how to deploy a sovereign system on Bitcoin using Rollkit. -By the end of this tutorial, you will have a good understanding of how Rollkit works and how to create sovereign rollups on Bitcoin using Rollkit. You will also have the knowledge and skills needed to customize Rollkit with different execution environments and data availability layers, opening up new possibilities for creating scalable and efficient blockchain applications. +By the end of this tutorial, you will have a good understanding of how Rollkit works and how to create sovereign systems on Bitcoin using Rollkit. You will also have the knowledge and skills needed to customize Rollkit with different execution environments and data availability layers, opening up new possibilities for creating scalable and efficient blockchain applications. Read more in our [blog post](../../../blog/sovereign-rollups-on-bitcoin). @@ -12,11 +12,11 @@ Read more in our [blog post](../../../blog/sovereign-rollups-on-bitcoin). ### πŸ“– The stack -Sovereign rollups on Bitcoin are made possible through a module that allows Rollkit rollups to use Bitcoin for data availability. This integration opens up possibilities for developers to create rollups with arbitrary execution environments that inherit Bitcoin’s data availability guarantees and security guarantees. +Sovereign systems on Bitcoin are made possible through a module that allows Rollkit instances to use Bitcoin for data availability. This integration opens up possibilities for developers to create systems with arbitrary execution environments that inherit Bitcoin’s data availability guarantees and security guarantees. -The Taproot upgrade and [Ordinals](https://ordinals.com/) usage of Bitcoin for publishing arbitrary data made it possible to integrate Bitcoin as a data availability layer into Rollkit. The modular design of Rollkit allows for easy integration of new data availability layers, making it possible to deploy sovereign rollups on Bitcoin. +The Taproot upgrade and [Ordinals](https://ordinals.com/) usage of Bitcoin for publishing arbitrary data made it possible to integrate Bitcoin as a data availability layer into Rollkit. The modular design of Rollkit allows for easy integration of new data availability layers, making it possible to deploy sovereign systems on Bitcoin. -The goal of Rollkit is to make it easy to build and customize rollups, enabling developers to build sovereign rollups on Bitcoin or customize Rollkit with different execution environments and data availability layers. +The goal of Rollkit is to make it easy to build and customize systems, enabling developers to build sovereign systems on Bitcoin or customize Rollkit with different execution environments and data availability layers. ## πŸ’» Prerequisites @@ -143,7 +143,7 @@ apt install gcc -y ### πŸͺ™ Install Bitcoin -Running the rollup requires a local regtest Bitcoin node. You can set this up by running the following commands. +Running the system requires a local regtest Bitcoin node. You can set this up by running the following commands. Install Bitcoin Core: @@ -305,7 +305,7 @@ In the case that you are starting your regtest network again, you can use the fo rm -rf ${LOCATION OF .bitcoin folder} ``` -## πŸƒβ€β™€οΈ Running the Ethermint rollup +## πŸƒβ€β™€οΈ Running the Ethermint application :::danger The Ethermint tutorial is currently not supported. @@ -340,7 +340,7 @@ Start the chain: ethermintd start --rollkit.aggregator --rollkit.da_layer bitcoin --rollkit.da_config='{"host":"127.0.0.1:18332","user":"rpcuser","pass":"rpcpass","http_post_mode":true,"disable_tls":true}' --rollkit.namespace_id $NAMESPACE --rollkit.da_start_height 1 ``` -Congratulations! Now that you have your Ethermint and Bitcoin rollup running, you're ready to deploy some smart contracts to the EVM! +Congratulations! Now that you have your Ethermint and Bitcoin integration running, you're ready to deploy some smart contracts to the EVM! ### ⚑️ Initialize development environment @@ -552,7 +552,7 @@ We can then perform read operations with `cast call`: cast call $CONTRACT_ADDRESS "getCount()(int)" --rpc-url $RPC_URL ``` -### πŸ§ͺ Deploying to the Ethermint sovereign rollup +### πŸ§ͺ Deploying to the Ethermint sovereign application Now that we've deployed and tested locally, we can deploy to our Ethermint chain. @@ -582,7 +582,7 @@ Set the contract address in the output as the `CONTRACT_ADDRESS` variable: export CONTRACT_ADDRESS= ``` -Once the contract has been deployed to the Ethermint rollup, we can +Once the contract has been deployed to the Ethermint application, we can use `cast send` to test sending transactions to it: ```bash diff --git a/tutorials/da/celestia-da.md b/tutorials/da/celestia-da.md index f0df82a03..5543b119a 100644 --- a/tutorials/da/celestia-da.md +++ b/tutorials/da/celestia-da.md @@ -7,13 +7,13 @@ import constants from '../../.vitepress/constants/constants.js' ## 🌞 Introduction {#introduction} -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. +This tutorial serves as a comprehensive guide for deploying your system 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 [quick start](/tutorials/quick-start) tutorial, which covers installing the rollkit CLI and running a rollup against a local DA network. +Before proceeding, ensure that you have completed the [quick start](/tutorials/quick-start) tutorial, which covers installing the rollkit CLI and running a system against a local DA network. ## πŸͺΆ Running a Celestia light node -Before you can start your rollup node, you need to initiate, sync, and fund a light node on one of Celestia's networks on a compatible version: +Before you can start your system node, you need to initiate, sync, and fund a light node on one of Celestia's networks on a compatible version: ::: code-group @@ -40,7 +40,7 @@ Celestia Node Version: {{constants.celestiaNodeMainnetTag}} 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. -After successfully starting a light node, it's time to start posting the batches of blocks of data that your rollup generates to Celestia. +After successfully starting a light node, it's time to start posting the batches of blocks of data that your system generates to Celestia. ## πŸ—οΈ Prerequisites {#prerequisites} @@ -125,9 +125,9 @@ port 26658: DA_ADDRESS=http://localhost:26658 ``` -## πŸ”₯ Running your rollup connected to Celestia light node +## πŸ”₯ Running your system connected to Celestia light node -Finally, let's initiate the rollup node with all the flags: +Finally, let's initiate the system node with all the flags: ```bash rollkit start \ @@ -138,7 +138,7 @@ rollkit start \ --rollkit.da_address $DA_ADDRESS ``` -Now, the rollup is running and posting blocks (aggregated in batches) to Celestia. You can view your rollup by using your namespace or account on one of Celestia's block explorers. +Now, the system is running and posting blocks (aggregated in batches) to Celestia. You can view your system by using your namespace or account on one of Celestia's block explorers. For example, [here on Celenium for Arabica](https://arabica.celenium.io/). @@ -150,4 +150,4 @@ Other explorers: ## πŸŽ‰ Next steps -Congratulations! You've built a local rollup that posts data to Celestia's DA layer. Well done! Now, go forth and build something great! Good luck! +Congratulations! You've built a local system that posts data to Celestia's DA layer. Well done! Now, go forth and build something great! Good luck! diff --git a/tutorials/da/local-da.md b/tutorials/da/local-da.md index 1ccabbc45..b39a5ad0b 100644 --- a/tutorials/da/local-da.md +++ b/tutorials/da/local-da.md @@ -21,13 +21,13 @@ curl -sSL https://rollkit.dev/install-local-da.sh | bash -s {{constants.localDAL This script will build and run the node, which will then listen on port `7980`. -## Configuring your rollup to connect to the local DA network +## Configuring your system to connect to the local DA network -To connect your rollup to the local DA network, you need to pass the `--rollkit.da.address` flag with the local DA node address. +To connect your system to the local DA network, you need to pass the `--rollkit.da.address` flag with the local DA node address. -## Run your rollup +## Run your system -Start your rollup node with the following command, ensuring to include the DA address flag: +Start your system node with the following command, ensuring to include the DA address flag: ::: code-group @@ -39,12 +39,11 @@ Start your rollup node with the following command, ensuring to include the DA ad {BINARY} start \ --rollkit.aggregator \ --rollkit.da_address http://localhost:7980 \ - --rollkit.sequencer_rollup_id wordle ``` ::: -You should see the following log message indicating that your rollup is connected to the local DA network: +You should see the following log message indicating that your system is connected to the local DA network: ```shell 11:07AM INF NewLocalDA: initialized LocalDA module=local-da @@ -54,4 +53,4 @@ You should see the following log message indicating that your rollup is connecte ## Summary -By following these steps, you will set up a local DA network node and configure your rollup to post data to it. This setup is useful for testing and development in a controlled environment. You can find more information on running the local-da binary [here](https://github.com/rollkit/rollkit/blob/main/da/cmd/local-da/README.md) +By following these steps, you will set up a local DA network node and configure your system to post data to it. This setup is useful for testing and development in a controlled environment. You can find more information on running the local-da binary [here](https://github.com/rollkit/rollkit/blob/main/da/cmd/local-da/README.md) diff --git a/tutorials/da/overview.md b/tutorials/da/overview.md index cf254bfda..577004352 100644 --- a/tutorials/da/overview.md +++ b/tutorials/da/overview.md @@ -6,7 +6,7 @@ description: This page provides an overview of how rollkit integrates with DA. # 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. +Now that you have the foundations of running and building a system 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. diff --git a/tutorials/deploy-overview.md b/tutorials/deploy-overview.md index f275003eb..5619d3cb5 100644 --- a/tutorials/deploy-overview.md +++ b/tutorials/deploy-overview.md @@ -1,19 +1,19 @@ --- -description: This page provides an overview of some common ways to deploy rollups. +description: This page provides an overview of some common ways to deploy applications. --- -# Deploying Your Rollup +# Deploying Your Application -One of the benefits of building rollups with Rollkit is the flexibility you have as a developer to choose things like the DA layer, the settlement scheme, and the execution environment. +One of the benefits of building applications with Rollkit is the flexibility you have as a developer to choose things like the DA layer, the settlement scheme, and the execution environment. -The challenge that comes with this flexibility is that there are more services that now need to be deployed and managed while running your rollup. +The challenge that comes with this flexibility is that there are more services that now need to be deployed and managed while running your application. -In the tutorials so far, you've seen various helper scripts used to make things easier. While great for tutorials, there are better ways to deploy and manage rollups than using various bash scripts. +In the tutorials so far, you've seen various helper scripts used to make things easier. While great for tutorials, there are better ways to deploy and manage applications than using various bash scripts. -In this section, you'll see a few examples of how you can deploy your rollup environment with all your services running in a more production-ready way. +In this section, you'll see a few examples of how you can deploy your application environment with all your services running in a more production-ready way. :::warning Disclaimer -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. +These examples are for educational purposes only. Before deploying your application 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) diff --git a/tutorials/execution/cosmwasm.md b/tutorials/execution/cosmwasm.md index 16a958bc4..bd808c572 100644 --- a/tutorials/execution/cosmwasm.md +++ b/tutorials/execution/cosmwasm.md @@ -1,4 +1,4 @@ -# πŸ—žοΈ CosmWasm rollup +# πŸ—žοΈ CosmWasm application +Sovereign applications are made possible through a module that allows Rollkit instances to use a data availability layer. This integration opens up possibilities for developers to create applications with arbitrary execution environments that inherit the data availability layer's guarantees and security guarantees. -:::tip - -::: - +The modular design of Rollkit allows for easy integration of new data availability layers, making it possible to deploy sovereign applications. + +The goal of Rollkit is to make it easy to build and customize applications, enabling developers to build sovereign applications or customize Rollkit with different execution environments and data availability layers. ## πŸ› οΈ Dependencies {#dependencies} @@ -71,9 +64,9 @@ Install your app locally: make install ``` -## πŸš€ Starting your rollup {#start-your-rollup} +## πŸš€ Starting your application {#start-your-rollup} -Now that we have our gm app generated and installed, we can launch our GM rollup along with the local DA by running the following command: +Now that we have our gm app generated and installed, we can launch our GM application along with the local DA by running the following command: First lets start the local DA network: @@ -124,9 +117,9 @@ You should see an output like this: 5:02PM INF Block executed successfully appHash=CACB5B55477E8813D93A29CF25BA5DB8AD4A51992D96A72CF9A4E83D47F4FAAA height=2 module=rollkit ``` -Ignite has successfully launched the GM rollup and the local DA network. The GM rollup is running on port `7331` and the local DA network is running on port `7980`. +Ignite has successfully launched the GM application and the local DA network. The GM application is running on port `7331` and the local DA network is running on port `7980`. -Good work so far, we have a Rollup node, DA network node, now we can start submitting transactions. +Good work so far, we have a Rollkit node, DA network node, now we can start submitting transactions. ## πŸ’Έ Transactions {#transactions} diff --git a/tutorials/quick-start.md b/tutorials/quick-start.md index 32f6cdb7b..22f42feee 100644 --- a/tutorials/quick-start.md +++ b/tutorials/quick-start.md @@ -1,5 +1,5 @@ --- -description: Quickly start a rollup node using the Rollkit CLI. +description: Quickly start a node using the Rollkit CLI. ---