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
<!--
Please read and fill out this form before submitting your PR.
Please make sure you have reviewed our contributors guide before
submitting your
first PR.
NOTE: PR titles should follow semantic commits:
https://www.conventionalcommits.org/en/v1.0.0/
-->
## Overview
This pr updates specs with the changes from v1 refactor
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Documentation**
* Expanded and restructured documentation for block manager, block
validity, full node, header sync, and store components.
* Added detailed architectural diagrams and descriptions of new internal
components and services.
* Clarified header/data separation, block production modes,
synchronization processes, and storage prefixes.
* Updated validation rules and data structures to reflect a single
signer model and independent header/data validation.
* Introduced comprehensive metrics and configuration options in the
documentation.
* Refined release order numbering in package release documentation.
* Updated changelog baseline comparison to reflect new version
reference.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: tac0turtle <you@example.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy file name to clipboardExpand all lines: specs/src/specs/block-validity.md
+75-60Lines changed: 75 additions & 60 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,83 +12,96 @@ Verifying a block/header is done in 3 parts:
12
12
13
13
3. Perform verification of the new block against the previously accepted block
14
14
15
+
Rollkit uses a header/data separation architecture where headers and data can be validated independently. The system has moved from a multi-validator model to a single signer model for simplified sequencer management.
16
+
15
17
## Basic Validation
16
18
17
-
Each type contains a `.ValidateBasic()` method, which verifies that certain basic invariants hold. The `ValidateBasic()` calls are nested, starting from the `Block` struct, all the way down to each subfield.
19
+
Each type contains a `.ValidateBasic()` method, which verifies that certain basic invariants hold. The `ValidateBasic()` calls are nested for each structure.
20
+
21
+
### SignedHeader Validation
22
+
23
+
```go
24
+
SignedHeader.ValidateBasic()
25
+
// Make sure the SignedHeader's Header passes basic validation
26
+
Header.ValidateBasic()
27
+
verify ProposerAddress not nil
28
+
// Make sure the SignedHeader's signature passes basic validation
29
+
Signature.ValidateBasic()
30
+
// Ensure that someone signed the header
31
+
verify len(c.Signatures) not 0
32
+
// For based rollups (sh.Signer.IsEmpty()), pass validation
33
+
If !sh.Signer.IsEmpty():
34
+
// Verify the signer matches the proposer address
35
+
verify sh.Signer.Address == sh.ProposerAddress
36
+
// Verify signature using custom verifier if set, otherwise use default
| Header | Valid header for the block |`Header` passes `ValidateBasic()` and `Verify()`|
86
-
| Signature | 1 valid signature from the single sequencer |`Signature` passes `ValidateBasic()`, with additional checks in `SignedHeader.ValidateBasic()`|
87
-
| Validators | Array of Aggregators, must have length exactly 1. |`Validators` passes `ValidateBasic()`|
98
+
| Signature | Valid signature from the single sequencer |`Signature` passes `ValidateBasic()`, verified against signer |
99
+
| Signer | Information about who signed the header | Must match ProposerAddress if not empty (based rollup case) |
100
+
| verifier | Optional custom signature verification function | Used instead of default verification if set |
***Note***: The `AggregatorsHash` and `NextAggregatorsHash` fields have been removed. Rollkit vA should ignore all Valset updates from the ABCI app, and always enforce that the proposer is the single sequencer set as the 1 validator in the genesis block.
104
+
***Note***: Rollkit has moved to a single signer model. The multi-validator architecture has been replaced with a simpler single sequencer approach.
Copy file name to clipboardExpand all lines: specs/src/specs/full_node.md
+14-7Lines changed: 14 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,19 +32,26 @@ The [Store] is initialized with `DefaultStore`, an implementation of the [store
32
32
33
33
### blockManager
34
34
35
-
The [Block Manager] is responsible for managing the operations related to blocks such as creating and validating blocks.
35
+
The [Block Manager] is responsible for managing block-related operations including:
36
+
37
+
- Block production (normal and lazy modes)
38
+
- Header and data submission to DA layer
39
+
- Block retrieval and synchronization
40
+
- State updates and finalization
41
+
42
+
It implements a header/data separation architecture where headers and transaction data are handled independently.
36
43
37
44
### dalc
38
45
39
46
The [Data Availability Layer Client][dalc] is used to interact with the data availability layer. It is initialized with the DA Layer and DA Config specified in the node configuration.
40
47
41
-
### hExService
48
+
### hSyncService
42
49
43
-
The [Header Sync Service] is used for syncing block headers between nodes over P2P.
50
+
The [Header Sync Service] is used for syncing signed headers between nodes over P2P. It operates independently from data sync to support light clients.
44
51
45
-
### bSyncService
52
+
### dSyncService
46
53
47
-
The [Block Sync Service] is used for syncing blocks between nodes over P2P.
54
+
The [Data Sync Service] is used for syncing transaction data between nodes over P2P. This service is only used by full nodes, not light nodes.
0 commit comments