Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
584b187
feat: go-execution - proof of concept
tzdybal Nov 17, 2024
d06c288
WIP on node interface seggregation
yarikbratashchuk Nov 27, 2024
3fce7ae
Fix compile errors
yarikbratashchuk Dec 3, 2024
fb1e4ec
Remove rpc server from rollkit
yarikbratashchuk Dec 10, 2024
12f7e65
Fix lint errors
yarikbratashchuk Dec 12, 2024
d3df482
Fix some more lint issues
yarikbratashchuk Dec 12, 2024
1704717
Comment out unreachable code
yarikbratashchuk Dec 12, 2024
75872c2
Handle CI mode for node
yarikbratashchuk Dec 12, 2024
13cc399
Fix full node
yarikbratashchuk Dec 16, 2024
503c98b
Docs gen
yarikbratashchuk Dec 16, 2024
0fb08e1
Fix lint errors
yarikbratashchuk Dec 17, 2024
00ad30d
Fix vulns found by dependabot
yarikbratashchuk Dec 17, 2024
b7d5ec0
Fix markdown lint
yarikbratashchuk Dec 17, 2024
a2c4b28
Fixes for lint fixes
yarikbratashchuk Dec 17, 2024
975a289
Remove rpc-equivalency-coverage
yarikbratashchuk Dec 17, 2024
0abc30d
Fix serialization tests
yarikbratashchuk Dec 17, 2024
590b8a6
Remove proxy client creator
yarikbratashchuk Jan 7, 2025
a8529b5
Fix linting issues
yarikbratashchuk Jan 7, 2025
6468fc5
Fix tests, typos
yarikbratashchuk Jan 9, 2025
5bb907a
Start mock executor on rollkit start
yarikbratashchuk Jan 9, 2025
efa6ad2
Comment out publish block test
yarikbratashchuk Jan 9, 2025
5a9cb2d
Comment out node failing tests for now, will uncomment and fix them o…
yarikbratashchuk Jan 9, 2025
f6b391d
Revorking tests, commenting out execution bits
yarikbratashchuk Jan 15, 2025
c93989b
WIP: revorking tests
yarikbratashchuk Jan 16, 2025
fa42d1a
Remove tendermint types from state proto to make restarting work
yarikbratashchuk Jan 17, 2025
ca9bcfe
Fix linting issues
yarikbratashchuk Jan 21, 2025
5d72b03
refactor: Node interface, FullNode, LightNode, FullClient, LightClien…
yarikbratashchuk Jan 21, 2025
843ff3d
disabled extended commit and mock exec server
gupadhyaya Feb 17, 2025
4b06c4a
Work on node tests
yarikbratashchuk Feb 20, 2025
03d091d
Some more fixes
yarikbratashchuk Feb 20, 2025
dbd5e85
Fix yamllint
yarikbratashchuk Feb 20, 2025
11b9bd2
Bump go-execution version
yarikbratashchuk Feb 20, 2025
5bfd758
Checking for len of batch transactions
yarikbratashchuk Feb 21, 2025
e0a0812
Respect centralized service flags for DA and Sequencer so mocks aren’…
yarikbratashchuk Feb 23, 2025
148144f
Comments, test flag parsing
yarikbratashchuk Feb 23, 2025
ee6612d
start mock Executor
yarikbratashchuk Feb 23, 2025
7e475c8
Merge branch 'main' into fix/centralized-service-flags
yarikbratashchuk Feb 23, 2025
2ee60f9
feat: basic node integration tests for execution api transition (#1958)
yarikbratashchuk Feb 24, 2025
f7bf1bd
Merge branch 'feature/exec_api' into fix/centralized-service-flags
yarikbratashchuk Feb 24, 2025
f31cd14
Fix ci lints
yarikbratashchuk Feb 24, 2025
ec4c6eb
fix: respect centralized service flags for DA and Sequencer so mocks …
yarikbratashchuk Feb 24, 2025
44507f0
fix: some integration tests
facundomedica Feb 26, 2025
6840bec
small fix
facundomedica Feb 26, 2025
dc7f85f
fix: some integration tests (#2001)
facundomedica Feb 26, 2025
382454f
feat: clean executor and indexer. (#2004)
randygrok Feb 26, 2025
3c577bf
chore: remove mempool and tx gossipping (#2002)
facundomedica Feb 26, 2025
bc62d28
chore: merge main into feature branch (#2007)
facundomedica Feb 26, 2025
6e6d303
feat: add service (#2006)
tac0turtle Feb 26, 2025
1ab5efb
feat: remove event bus (#2011)
randygrok Feb 27, 2025
e56e821
feat: create core pkg (#2012)
tac0turtle Feb 28, 2025
cd60d76
feat: use interfaces to compose a rollup (#2013)
tac0turtle Mar 2, 2025
438bf45
chore: add timestamps to dummy da (#2020)
tac0turtle Mar 3, 2025
4e71351
move dummies to core
Mar 3, 2025
f52b14b
chore: propose different service design (#2019)
tac0turtle Mar 4, 2025
11ec5fb
Move config default log level from comet to rollkit
randygrok Mar 4, 2025
7ab7387
Use instrumentation config from rollkit
randygrok Mar 4, 2025
4e1628d
Implement in-memory KVExecutor for testing
yarikbratashchuk Mar 4, 2025
7cab9e5
refactor: Migrate instrumentation config from CometBFT to Rollkit
randygrok Mar 4, 2025
7745a79
feat: part 1 remove dependency cometbft config (#2034)
randygrok Mar 4, 2025
98072d7
Move kvexecutor from core and remove main.go
yarikbratashchuk Mar 4, 2025
726e153
refactor: Update node configuration to use Viper and remove CometBFT …
randygrok Mar 4, 2025
d01c738
Merge remote-tracking branch 'origin/feature/exec_api' into feature/c…
randygrok Mar 4, 2025
a0819f9
refactor: Remove proxy_app configuration in node commands
randygrok Mar 4, 2025
ede2690
refactor: Remove ABCI transport configuration flags
randygrok Mar 4, 2025
90096e7
refactor: Update P2P configuration to use 'p2p.laddr' instead of 'p2p…
randygrok Mar 4, 2025
d719600
refactor: Remove commented-out code and unused configurations in run_…
randygrok Mar 4, 2025
551a40f
move to 1sec
Mar 4, 2025
5fa72f2
refactor: Remove P2P external address configuration
randygrok Mar 4, 2025
3b97a57
Merge branch 'feature/exec_api' into feature/config-comet
randygrok Mar 5, 2025
31007ea
remove duplicated rollkit config
randygrok Mar 5, 2025
ec9add9
Merge branch 'feature/config-comet' of github.com-randy:rollkit/rollk…
randygrok Mar 5, 2025
2d99233
remove duplicate
randygrok Mar 5, 2025
2e53815
Markdown lint
randygrok Mar 5, 2025
08746a5
use default nodeRollkit
randygrok Mar 5, 2025
01f5412
Add conditionals to viper load
randygrok Mar 5, 2025
9892f0e
fix default url
randygrok Mar 5, 2025
7f57d49
fix units
randygrok Mar 5, 2025
b2fca53
update code
randygrok Mar 5, 2025
1feddf3
update docs
randygrok Mar 5, 2025
dfd8f01
remove links
randygrok Mar 5, 2025
48aaf04
fix files mdbook
randygrok Mar 5, 2025
2af5c65
fix dockerfile
randygrok Mar 5, 2025
75efbc8
add test coverage
randygrok Mar 5, 2025
7e1b2b9
fix lint errors
randygrok Mar 5, 2025
6319f6e
remove old comment
randygrok Mar 5, 2025
a9f3391
refactor: remove dependency to cometbft (#2035)
randygrok Mar 5, 2025
f8591ac
Basic tests and binding kvexecutor directly to the node
yarikbratashchuk Mar 4, 2025
0f5c6a3
Merge branch 'feature/exec_api' into feat/kvexecutor
yarikbratashchuk Mar 5, 2025
bc5999a
Fix tests and lints
yarikbratashchuk Mar 5, 2025
255e604
Add http server for kv executor
yarikbratashchuk Mar 6, 2025
74a2dc8
Add cli client for kvexecutor
yarikbratashchuk Mar 6, 2025
e107d48
Add tests for http server
yarikbratashchuk Mar 6, 2025
d119af4
fix lint issues
yarikbratashchuk Mar 6, 2025
3734edc
Graceful shutdown
yarikbratashchuk Mar 6, 2025
2262207
Some more lint fixes
yarikbratashchuk Mar 6, 2025
e74563f
feat: kvexecutor (#2033)
yarikbratashchuk Mar 6, 2025
104787b
feat: pull go-da into rollkit (#2031)
tac0turtle Mar 12, 2025
1ea4930
feat: improve config and use toml (#2047)
randygrok Mar 13, 2025
75e8333
chore: further remove comet (#2074)
tac0turtle Mar 13, 2025
6976cc4
chore: remove comet deps (#2076)
tac0turtle Mar 13, 2025
e9e0a1b
docs: add ADR for remote signing (#2081)
tac0turtle Mar 17, 2025
8374715
feat: use yaml for config (#2082)
randygrok Mar 18, 2025
97e8b1d
chore: buf linting fixes (#2088)
tac0turtle Mar 19, 2025
6d38cb3
feat: add single sequencer (#2016)
tac0turtle Mar 20, 2025
f418236
chore: cleanup state proto (#2095)
tac0turtle Mar 20, 2025
027e75c
docs: Minimal Rollkit Header ADR (#2069)
Manav-Aggarwal Mar 20, 2025
664a35a
chore: cleanup state (#2096)
tac0turtle Mar 20, 2025
bced847
docs: Header and data separation ADR (#2061)
Manav-Aggarwal Mar 20, 2025
8aa1cf9
chore: remove abci (#2008)
facundomedica Mar 20, 2025
56d9c8b
chore: consolidate cache implementations (#2101)
tac0turtle Mar 20, 2025
35dc9f8
docs: Consolidate Specs in one place (#2100)
Manav-Aggarwal Mar 21, 2025
f488b8d
chore: README for p2p and move to pkg (#2102)
tac0turtle Mar 21, 2025
c7ee8f6
feat: remove cometbft dependency to GenesisDoc (#2091)
randygrok Mar 25, 2025
94e358e
docs: Create Genesis File ADR (#2106)
Manav-Aggarwal Mar 25, 2025
1c3fd54
move pkgs into pkg split up manager (#2108)
tac0turtle Mar 25, 2025
a7d8cbc
chore: remove validator set from signed header (#2099)
tac0turtle Mar 25, 2025
6285377
chore: remove mocks and p2p comet deps (#2119)
tac0turtle Mar 25, 2025
224f89a
docs: add simple ADR for rpc (#2120)
tac0turtle Mar 25, 2025
a312168
docs: Create Node Pruning ADR (#2107)
Manav-Aggarwal Mar 26, 2025
a8c67e2
[feature]: add simple rpc (#2122)
tac0turtle Mar 26, 2025
7025bf9
chore: merge interfaces (#2128)
tac0turtle Mar 27, 2025
317d7aa
chore: migrate scripts to go (#2130)
tac0turtle Mar 27, 2025
4591957
Merge branch 'main' into feature/exec_api
Mar 27, 2025
9185d0e
fix
Mar 27, 2025
ea4a66c
lint and test fix
Mar 27, 2025
e9d9cc2
feat: create testapp (#2123)
randygrok Mar 28, 2025
ea82341
go mod fix
Mar 28, 2025
1ed8707
fix: misc improvements
facundomedica Mar 28, 2025
c1eb6dc
fix example app
facundomedica Mar 28, 2025
c4cfcf0
fix conflicts
facundomedica Mar 28, 2025
a8df966
fix conflicts and lint
facundomedica Mar 28, 2025
ead4dec
fix tests
facundomedica Mar 28, 2025
20fb173
revert golangci lint version
Mar 31, 2025
550bb03
fix: fill Signer field during block creation (#2114)
tzdybal Mar 31, 2025
b151c8b
feat: remote signing (#2078)
tac0turtle Mar 31, 2025
501dbb2
fix height
facundomedica Apr 1, 2025
70f70b7
chore: port jsonrpc proxy (#2136)
twizzl-w Apr 1, 2025
bb1d7c8
wip, unit tests are very very broken
facundomedica Apr 1, 2025
a634e2c
fix: proposer address in genesis (#2138)
tac0turtle Apr 2, 2025
5b66ea7
unit tests
facundomedica Apr 2, 2025
1fcf5f5
hopefully done
facundomedica Apr 2, 2025
2fb2529
fix path
facundomedica Apr 2, 2025
ef20348
lint
facundomedica Apr 2, 2025
1116acf
fix: misc improvements (#2133)
facundomedica Apr 2, 2025
8d637bb
fix: fix start command generation (#2143)
tac0turtle Apr 2, 2025
8e7a7af
fix: e2e test fixes (#2146)
tac0turtle Apr 4, 2025
571291c
fix: add test case for zero out of priv key (#2150)
tac0turtle Apr 4, 2025
21f7406
fix: sign genesis header (#2151)
tzdybal Apr 4, 2025
019de5e
chore: wire testapp with single sequencer (#2153)
tac0turtle Apr 8, 2025
c553e20
docs: Create Forced Inclusion Mechanism ADR (#2109)
Manav-Aggarwal Apr 9, 2025
0018222
docs: validation adr (#2163)
gupadhyaya Apr 10, 2025
a45bb29
test: add local DA (#2158)
tac0turtle Apr 11, 2025
845a307
fix: header signature cleanup (#2164)
facundomedica Apr 11, 2025
de183ff
refactor: simplify config handling (#2165)
julienrbrt Apr 11, 2025
49b86f7
refactor: remove batch queue (#2173)
tzdybal Apr 15, 2025
e320b1e
feat: add load from viper (#2176)
julienrbrt Apr 16, 2025
4fed1e6
fix: return soft-confirmed batches (#2180)
tzdybal Apr 16, 2025
4df8705
feat: add single-sequencer, EVM rollup (#2085)
tzdybal Apr 16, 2025
5035cd2
chore: a few fixes (#2169)
tac0turtle Apr 16, 2025
0d3b03a
chore: add test script to run tests for all go.mods (#2183)
tac0turtle Apr 16, 2025
440e370
refactor: move init to testapp (#2184)
julienrbrt Apr 17, 2025
6b8fd4f
chore: build all apps with ci (#2188)
tac0turtle Apr 17, 2025
e823326
chore: based sequencer implementation (#2161)
gupadhyaya Apr 18, 2025
6b5a666
go mod tidy
Apr 18, 2025
a8c6e53
bump golangci version (#2190)
tac0turtle Apr 18, 2025
455e945
prevent empty block creation (#2189)
tac0turtle Apr 18, 2025
30343a3
remove entire build
Apr 20, 2025
18960df
remove todo
Apr 21, 2025
27d0737
refactor(genesis): simplify genesis apis (#2203)
julienrbrt Apr 22, 2025
1541dd2
feature: add health endpoint (#2194)
tac0turtle Apr 22, 2025
6eefc3f
Merge branch 'main' into feature/exec_api
tac0turtle Apr 22, 2025
fec350b
fix yamllint
Apr 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
WIP: revorking tests
  • Loading branch information
yarikbratashchuk committed Jan 16, 2025
commit c93989bee5560aa5778ec2857889e112de19364a
8 changes: 8 additions & 0 deletions block/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,14 @@ func (m *Manager) getRemainingSleep(start time.Time) time.Duration {
return 0
}

// GetExecutor returns the executor used by the manager.
//
// Note: this is a temporary method to allow testing the manager.
// It will be removed once the manager is fully integrated with the execution client.
func (m *Manager) GetExecutor() execution.Executor {
return m.exec
}

// BatchRetrieveLoop is responsible for retrieving batches from the sequencer.
func (m *Manager) BatchRetrieveLoop(ctx context.Context) {
// Initialize batchTimer to fire immediately on start
Expand Down
79 changes: 79 additions & 0 deletions node/execution_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
package node

import (
"context"
"testing"
"time"

"github.com/stretchr/testify/require"
)

func TestBasicExecutionFlow(t *testing.T) {
require := require.New(t)

// Setup node
node, cleanup := setupTestNodeWithCleanup(t)
defer cleanup()
Comment on lines +20 to +21

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Reference to undefined test setup function

The setupTestNodeWithCleanup function is called but not defined in this file. This might be confusing for new developers.

Check if this function is defined in another test file, and consider either adding a comment pointing to its location or moving the function definition to this file.


🏁 Script executed:

#!/bin/bash
# Search for the setupTestNodeWithCleanup function definition
rg "func setupTestNodeWithCleanup" --type go

Length of output: 133


Action: Clarify the External Test Helper Location

The function setupTestNodeWithCleanup(t) is indeed defined—in node/helpers_test.go. However, its external location might still confuse new contributors. To address this:

  • In node/execution_test.go (lines 20-21) where the function is called, add a brief comment noting that its definition lives in node/helpers_test.go.
  • Alternatively, if appropriate for the project’s organization, consider moving the function definition into this file to maintain locality.


//startNodeWithCleanup(t, node)

ctx := context.Background()

// Give node time to initialize
time.Sleep(100 * time.Millisecond)

// Test InitChain - we don't need to call this explicitly as it's done during node start
executor := node.blockManager.GetExecutor()
require.NotNil(executor)

// Test GetTxs
txs, err := executor.GetTxs(ctx)
require.NoError(err)

lastState, err := node.Store.GetState(ctx)
require.NoError(err)

// Test ExecuteTxs
newStateRoot, newMaxBytes, err := executor.ExecuteTxs(ctx, txs, 1, time.Now(), lastState.LastResultsHash)
require.NoError(err)
require.Greater(newMaxBytes, uint64(0))
t.Logf("newStateRoot: %s %d", newStateRoot, newMaxBytes)
require.NotEmpty(newStateRoot)

// Test SetFinal
err = executor.SetFinal(ctx, 1)
require.NoError(err)
}

func TestExecutionWithDASync(t *testing.T) {
t.Run("basic DA sync", func(t *testing.T) {
require := require.New(t)

// Setup node with mock DA
node, cleanup := setupTestNodeWithCleanup(t)
defer cleanup()

// Start node
err := node.Start()
require.NoError(err)
defer func() {
err := node.Stop()
require.NoError(err)
}()
Comment on lines +109 to +121

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Potential race condition in error handling

The error channel has a buffer size of 1, but there's no guarantee it won't fill up if multiple errors occur.

Consider using a context with cancel or a done channel to signal test failure immediately:

-		errCh := make(chan error, 1)
+		errCh := make(chan error)
 
 		wg.Add(1)
 		go func() {
 			defer wg.Done()
 			err := node.Run(ctx)
-			select {
-			case errCh <- err:
-			default:
-				t.Logf("Error channel full, discarding error: %v", err)
-			}
+			if err != nil && !errors.Is(err, context.Canceled) {
+				errCh <- err
+			}
 		}()
+
+		// Use a separate goroutine to monitor for errors
+		go func() {
+			select {
+			case err := <-errCh:
+				t.Errorf("Node stopped unexpectedly: %v", err)
+				cancel() // Stop the test
+			case <-ctx.Done():
+				// Test is ending normally
+			}
+		}()
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
var wg sync.WaitGroup
errCh := make(chan error, 1)
wg.Add(1)
go func() {
defer wg.Done()
err := node.Run(ctx)
select {
case errCh <- err:
default:
t.Logf("Error channel full, discarding error: %v", err)
}
}()
var wg sync.WaitGroup
errCh := make(chan error)
wg.Add(1)
go func() {
defer wg.Done()
err := node.Run(ctx)
if err != nil && !errors.Is(err, context.Canceled) {
errCh <- err
}
}()
// Use a separate goroutine to monitor for errors
go func() {
select {
case err := <-errCh:
t.Errorf("Node stopped unexpectedly: %v", err)
cancel() // Stop the test
case <-ctx.Done():
// Test is ending normally
}
}()


// Give node time to initialize
time.Sleep(100 * time.Millisecond)

// Verify DA client is working
require.NotNil(node.dalc)

// Wait for first block to be produced
err = waitForFirstBlock(node, Header)
require.NoError(err)
Comment on lines +143 to +144

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Undefined function and variable

The waitForFirstBlock function is called with an undefined variable Header. This will cause a compilation error.

-		err = waitForFirstBlock(node, Header)
+		err = waitForFirstBlock(node)

You need to either:

  1. Define the Header variable, or
  2. Modify the waitForFirstBlock function to not require this parameter
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
err = waitForFirstBlock(node, Header)
require.NoError(err)
err = waitForFirstBlock(node)
require.NoError(err)


// Get height and verify it's greater than 0
height, err := getNodeHeight(node, Header)
require.NoError(err)
Comment on lines +147 to +148

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Undefined function and variable

Similar to the previous issue, getNodeHeight is called with an undefined variable Header.

-		height, err := getNodeHeight(node, Header)
+		height, err := getNodeHeight(node)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
height, err := getNodeHeight(node, Header)
require.NoError(err)
height, err := getNodeHeight(node)
require.NoError(err)

require.Greater(height, uint64(0))
})
}
1 change: 1 addition & 0 deletions node/full.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@ func newFullNode(
seqClient := seqGRPC.NewClient()

store := store.New(mainKV)

blockManager, err := initBlockManager(signingKey, nodeConfig, genesis, store, seqClient, dalc, eventBus, logger, headerSyncService, dataSyncService, seqMetrics, smMetrics)
if err != nil {
return nil, err
Expand Down
27 changes: 10 additions & 17 deletions node/full_node.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ Note that unlike a light node which only syncs and stores block headers seen on

The Full Node mainly encapsulates and initializes/manages the following components:

### proxyApp

The Cosmos SDK start script passes a client creator constructed using the relevant Cosmos SDK application to the Full Node's constructor which is then used to create the proxy app interface. When the proxy app is started, it establishes different [ABCI app connections] including Mempool, Consensus, Query, and Snapshot. The full node uses this interface to interact with the application.

### genesisDoc

The [genesis] document contains information about the initial state of the rollup chain, in particular its validator set.
Expand Down Expand Up @@ -70,30 +66,27 @@ See [full node]

[1] [Full Node][full node]

[2] [ABCI Methods][ABCI app connections]

[3] [Genesis Document][genesis]
[2] [Genesis Document][genesis]

[4] [Node Configuration][node configuration]
[3] [Node Configuration][node configuration]

[5] [Peer to Peer Client][peer-to-peer client]
[4] [Peer to Peer Client][peer-to-peer client]

[6] [Mempool][Mempool]
[5] [Mempool][Mempool]

[7] [Store][Store]
[6] [Store][Store]

[8] [Store Interface][store interface]
[7] [Store Interface][store interface]

[9] [Block Manager][block manager]
[8] [Block Manager][block manager]

[10] [Data Availability Layer Client][dalc]
[9] [Data Availability Layer Client][dalc]

[11] [Header Sync Service][Header Sync Service]
[10] [Header Sync Service][Header Sync Service]

[12] [Block Sync Service][Block Sync Service]
[11] [Block Sync Service][Block Sync Service]

[full node]: https://github.com/rollkit/rollkit/blob/main/node/full.go
[ABCI app connections]: https://github.com/cometbft/cometbft/blob/main/spec/abci/abci%2B%2B_basic_concepts.md
[genesis]: https://github.com/cometbft/cometbft/blob/main/spec/core/genesis.md
[node configuration]: https://github.com/rollkit/rollkit/blob/main/config/config.go
[peer-to-peer client]: https://github.com/rollkit/rollkit/blob/main/p2p/client.go
Expand Down
Loading