Skip to content

Commit 8da3fe0

Browse files
Fix deadlinks
1 parent 78baf89 commit 8da3fe0

6 files changed

Lines changed: 19 additions & 16 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ require (
99
github.com/celestiaorg/go-header v0.6.4
1010
github.com/celestiaorg/utils v0.1.0
1111
github.com/cometbft/cometbft v0.38.15
12-
github.com/cosmos/gogoproto v1.7.0
1312
github.com/go-kit/kit v0.13.0
1413
github.com/goccy/go-yaml v1.16.0
1514
github.com/gogo/protobuf v1.3.2
@@ -57,6 +56,7 @@ require (
5756
github.com/cometbft/cometbft-db v0.14.1 // indirect
5857
github.com/containerd/cgroups v1.1.0 // indirect
5958
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
59+
github.com/cosmos/gogoproto v1.7.0 // indirect
6060
github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect
6161
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
6262
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect

specs/src/SUMMARY.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
- [DA](./specs/da.md)
1010
- [Full Node](./specs/full_node.md)
1111
- [Header Sync](./specs/header-sync.md)
12-
- [Header and Data Separation ADR](./specs/header-and-data-separation-adr.md)
13-
- [Rollkit Minimal Header](./specs/rollkit-minimal-header.md)
12+
- [Header and Data Separation ADR](../lazy-adr/adr-014-header-and-data-separation.md)
13+
- [Rollkit Minimal Header](../lazy-adr/adr-015-rollkit-minimal-header.md)
1414
- [P2P](./specs/p2p.md)
1515
- [Store](./specs/store.md)

specs/src/specs/block-manager.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ The block manager of the sequencer full nodes regularly publishes the produced b
9090

9191
### Block Retrieval from DA Network
9292

93-
The block manager of the full nodes regularly pulls blocks from the DA network at `DABlockTime` intervals and starts off with a DA height read from the last state stored in the local store or `DAStartHeight` configuration parameter, whichever is the latest. The block manager also actively maintains and increments the `daHeight` counter after every DA pull. The pull happens by making the `RetrieveBlocks(daHeight)` request using the Data Availability Light Client (DALC) retriever, which can return either `Success`, `NotFound`, or `Error`. In the event of an error, a retry logic kicks in after a delay of 100 milliseconds delay between every retry and after 10 retries, an error is logged and the `daHeight` counter is not incremented, which basically results in the intentional stalling of the block retrieval logic. In the block `NotFound` scenario, there is no error as it is acceptable to have no rollup block at every DA height. The retrieval successfully increments the `daHeight` counter in this case. Finally, for the `Success` scenario, first, blocks that are successfully retrieved are marked as DA included and are sent to be applied (or state update). A successful state update triggers fresh DA and block store pulls without respecting the `DABlockTime` and `BlockTime` intervals.
93+
The block manager of the full nodes regularly pulls blocks from the DA network at `DABlockTime` intervals and starts off with a DA height read from the last state stored in the local store or `DAStartHeight` configuration parameter, whichever is the latest. The block manager also actively maintains and increments the `daHeight` counter after every DA pull. The pull happens by making the `RetrieveBlocks(daHeight)` request using the Data Availability Light Client (DALC) retriever, which can return either `Success`, `NotFound`, or `Error`. In the event of an error, a retry logic kicks in after a delay of 100 milliseconds delay between every retry and after 10 retries, an error is logged and the `daHeight` counter is not incremented, which basically results in the intentional stalling of the block retrieval logic. In the block `NotFound` scenario, there is no error as it is acceptable to have no rollup block at every DA height. The retrieval successfully increments the `daHeight` counter in this case. Finally, for the `Success` scenario, first, blocks that are successfully retrieved are marked as DA included and are sent to be applied (or state update). A successful state update triggers fresh DA and block store pulls without respecting the `DABlockTime` and `BlockTime` intervals. For more details on DA integration, see the [Data Availability specification](./da.md).
9494

9595
#### Out-of-Order Rollup Blocks on DA
9696

@@ -104,7 +104,7 @@ If the sequencer double-signs two blocks at the same height, evidence of the fau
104104

105105
### Block Sync Service
106106

107-
The block sync service is created during full node initialization. After that, during the block manager's initialization, a pointer to the block store inside the block sync service is passed to it. Blocks created in the block manager are then passed to the `BlockCh` channel and then sent to the [go-header] service to be gossiped blocks over the P2P network.
107+
The block sync service is created during full node initialization. After that, during the block manager's initialization, a pointer to the block store inside the block sync service is passed to it. Blocks created in the block manager are then passed to the `BlockCh` channel and then sent to the [go-header][go-header] service to be gossiped blocks over the P2P network.
108108

109109
### Block Publication to P2P network
110110

@@ -157,10 +157,11 @@ The communication between the full node and block manager:
157157
* The block manager uses persistent storage (disk) when the `root_dir` and `db_path` configuration parameters are specified in `config.yaml` file under the app directory. If these configuration parameters are not specified, the in-memory storage is used, which will not be persistent if the node stops.
158158
* The block manager does not re-apply the block again (in other words, create a new updated state and persist it) when a block was initially applied using P2P block sync, but later was DA included during DA retrieval. The block is only marked DA included in this case.
159159
* The data sync store is created by prefixing `dataSync` on the main data store.
160-
* The genesis `ChainID` is used to create the `PubSubTopID` in go-header with the string `-block` appended to it. This append is because the full node also has a P2P header sync running with a different P2P network. Refer to go-header specs for more details.
160+
* The genesis `ChainID` is used to create the `PubSubTopID` in go-header with the string `-block` appended to it. This append is because the full node also has a P2P header sync running with a different P2P network. Refer to [go-header][go-header] specs for more details.
161161
* Block sync over the P2P network works only when a full node is connected to the P2P network by specifying the initial seeds to connect to via `P2PConfig.Seeds` configuration parameter when starting the full node.
162162
* Node's context is passed down to all the components of the P2P block sync to control shutting down the service either abruptly (in case of failure) or gracefully (during successful scenarios).
163-
* The block manager supports the separation of header and data structures in Rollkit. This allows for expanding the sequencing scheme beyond centralized sequencing and enables the use of a decentralized sequencer mode. For detailed information on this architecture, see the [Header and Data Separation ADR](./header-and-data-separation-adr.md).
163+
* The block manager supports the separation of header and data structures in Rollkit. This allows for expanding the sequencing scheme beyond centralized sequencing and enables the use of a decentralized sequencer mode. For detailed information on this architecture, see the [Header and Data Separation ADR](../lazy-adr/adr-014-header-and-data-separation.md).
164+
* The block manager processes blocks with a minimal header format, which is designed to eliminate dependency on CometBFT's header format and can be used to produce an execution layer tailored header if needed. For details on this header structure, see the [Rollkit Minimal Header](../lazy-adr/adr-015-rollkit-minimal-header.md) specification.
164165

165166
## Implementation
166167

@@ -180,9 +181,11 @@ See [tutorial] for running a multi-node network with both sequencer and non-sequ
180181

181182
[5] [Tutorial][tutorial]
182183

183-
[6] [Header and Data Separation ADR](./header-and-data-separation-adr.md)
184+
[6] [Header and Data Separation ADR](../../lazy-adr/adr-014-header-and-data-separation.md)
184185

185-
[7] [Rollkit Minimal Header](./rollkit-minimal-header.md)
186+
[7] [Rollkit Minimal Header](../../lazy-adr/adr-015-rollkit-minimal-header.md)
187+
188+
[8] [Data Availability](./da.md)
186189

187190
[maxSubmitAttempts]: https://github.com/rollkit/rollkit/blob/main/block/manager.go#L50
188191
[defaultBlockTime]: https://github.com/rollkit/rollkit/blob/main/block/manager.go#L36

types/pb/rollkit/v1/batch.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

types/pb/rollkit/v1/rollkit.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

types/pb/rollkit/v1/state.pb.go

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)