You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Aug 7, 2025. It is now read-only.
Copy file name to clipboardExpand all lines: learn/stack.md
+19-19Lines changed: 19 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
This page will cover the main components of Rollkit.
4
4
5
-
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.
5
+
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.
6
6
7
7
## Application structure
8
8
@@ -22,28 +22,28 @@ Rollkit's execution API is simple and allows developers to bring their own execu
22
22
23
23
#### Cosmos SDK
24
24
25
-
Would you like to change your Cosmos SDK application to a Rollkit rollup?
25
+
Would you like to change your Cosmos SDK application to a Rollkit chain?
26
26
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)
27
27
28
28
### Data availability
29
29
30
30
[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).
31
31
32
32
The `BlockRetriever` interface serves to enable syncing of full nodes from the data availability layer.
33
-
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.
33
+
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.
34
34
35
35
#### Celestia
36
36
37
37
Celestia is a prominent example of a data availability integration implemented for Rollkit.
38
38
It's using the [Celestia Node API](https://node-rpc-docs.celestia.org)
39
39
via the [`rollkit/da`](https://github.com/rollkit/rollkit/tree/main/da) package.
40
-
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).
40
+
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).
41
41
42
42
## Node components
43
43
44
44
### Block manager
45
45
46
-
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`.
46
+
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`.
47
47
48
48
All nodes run `SyncLoop` which looks for the following operations:
49
49
@@ -52,16 +52,16 @@ All nodes run `SyncLoop` which looks for the following operations:
52
52
<!-- - **Receive state fraud proofs**: state fraud proofs are received through a channel `FraudProofInCh` and Rollkit nodes attempt to verify them. Note that we plan to make this configurable for full nodes since full nodes also produce state fraud proofs on their own. -->
53
53
- Signal `RetrieveLoop` with timer as per the `DABlockTime` in `BlockManager`.
54
54
55
-
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`.
55
+
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`.
56
56
57
-
### Comet RPC
57
+
### Comet RPC
58
58
59
59
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:
60
60
61
-
-**Information about the rollup node**: information such as node's health, status, and network info.
62
-
-**The rollup blockchain**: getting information about the rollup blockchain such as blocks and block headers.
63
-
-**The rollup transactions**: getting transaction information and broadcasting raw transactions, with search capabilities.
64
-
-**ABCI**: rollup application information.
61
+
-**Information about the node**: information such as node's health, status, and network info.
62
+
-**The blockchain**: getting information about the blockchain such as blocks and block headers.
63
+
-**The transactions**: getting transaction information and broadcasting raw transactions, with search capabilities.
64
+
-**ABCI**: application information.
65
65
66
66
The following RPC protocols are currently supported:
It's used to gossip transactions, headers of newly created blocks, and state fraud proofs.
89
89
The P2P layer is implemented using [libp2p](https://github.com/libp2p).
90
90
91
91
Rollkit uses [DHT-based active peer discovery](https://curriculum.pl-launchpad.io/curriculum/libp2p/dht/).
92
92
Starting a node connects to pre-configured bootstrap peers, and advertises its namespace ID in the DHT.
93
-
This solution is flexible, because multiple rollup networks may reuse the same DHT/bootstrap nodes,
94
-
but specific rollup network might decide to use dedicated nodes as well.
93
+
This solution is flexible, because multiple networks may reuse the same DHT/bootstrap nodes,
94
+
but specific network might decide to use dedicated nodes as well.
95
95
96
96
## Rollkit node types
97
97
98
98
Rollkit nodes are implemented in the [`node`](https://github.com/rollkit/rollkit/tree/main/node) package.
99
99
100
100
### Full node
101
101
102
-
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.
102
+
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.
103
103
104
104
### Sequencer node
105
105
106
-
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.
106
+
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.
107
107
108
108
Rollkit plans to support multiple different pluggable sequencer schemes:
109
109
110
-
|| Deploy in one-click | Faster soft-confirmations than L1 | Control over rollup's transaction ordering | Atomic composability with other rollups| Censorship resistance | Implementation Status |
110
+
|| 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! |
113
113
| 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:
116
116
117
117
### Pessimistic (full nodes only)
118
118
119
-
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.
119
+
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.
120
120
121
-
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).
121
+
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).
RollupChain->>RollupChain: Halt & Decide to Fork (if invalid)
64
-
RollupChain->>DALayer: Submit New Block (after fork)
63
+
Chain->>Chain: Halt & Decide to Fork (if invalid)
64
+
Chain->>DALayer: Submit New Block (after fork)
65
65
```
66
66
67
67
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.
68
68
69
-
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.
69
+
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.
70
70
71
71
<!--
72
72
TODO: need to update design and docs
73
73
After the block is submitted to the DA layer, the full nodes download and validate the block.
74
-
However, there is a possibility that the sequencer may maliciously submit a block to the DA layer with invalid transactions or state. In such cases, the full nodes of the rollup chain will consider the block invalid. In the case of an optimistic rollup, if they find the block invalid, they generate fraud proofs and gossip them in the P2P network among other full and light nodes.
74
+
However, there is a possibility that the sequencer may maliciously submit a block to the DA layer with invalid transactions or state. In such cases, the full nodes of the chain will consider the block invalid. In the case of an optimistic system, if they find the block invalid, they generate fraud proofs and gossip them in the P2P network among other full and light nodes.
75
75
76
-
As a result, the rollup 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). -->
76
+
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). -->
Copy file name to clipboardExpand all lines: tutorials/bitcoin.md
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,22 +1,22 @@
1
-
# Bitcoin rollup tutorial
1
+
# Bitcoin integration tutorial
2
2
3
3
## ☀️Introduction
4
4
5
-
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.
5
+
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.
6
6
7
-
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.
7
+
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.
8
8
9
9
Read more in our [blog post](../../../blog/sovereign-rollups-on-bitcoin).
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.
15
+
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.
16
16
17
-
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.
17
+
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.
18
18
19
-
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.
19
+
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.
20
20
21
21
## 💻 Prerequisites
22
22
@@ -143,7 +143,7 @@ apt install gcc -y
143
143
144
144
### 🪙 Install Bitcoin
145
145
146
-
Running the rollup requires a local regtest Bitcoin node. You can set this up by running the following commands.
146
+
Running the system requires a local regtest Bitcoin node. You can set this up by running the following commands.
147
147
148
148
Install Bitcoin Core:
149
149
@@ -305,7 +305,7 @@ In the case that you are starting your regtest network again, you can use the fo
305
305
rm -rf ${LOCATION OF .bitcoin folder}
306
306
```
307
307
308
-
## 🏃♀️ Running the Ethermint rollup
308
+
## 🏃♀️ Running the Ethermint application
309
309
310
310
:::danger
311
311
The Ethermint tutorial is currently not supported.
0 commit comments