Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
4f132e9
Implement Execution/Consensus interface over RPC
KolbyML Sep 10, 2025
969a1b6
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Sep 15, 2025
8219a5e
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Sep 17, 2025
2a18ad2
update implementation, separate out responsibilities of starting a js…
ganeshvanahalli Sep 17, 2025
eaad44a
fix CI flag
ganeshvanahalli Sep 17, 2025
901dbea
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Sep 18, 2025
18097ee
bug fix
ganeshvanahalli Sep 18, 2025
f54a0f0
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Sep 18, 2025
eeb55d3
fix failing tests and refactor code to not use executionClient before…
ganeshvanahalli Sep 18, 2025
f35e01b
merge master and resolve conflicts
ganeshvanahalli Sep 25, 2025
acb0165
address PR comments
ganeshvanahalli Sep 26, 2025
baca94a
address PR comment
ganeshvanahalli Sep 26, 2025
61b8b17
fix challenge tests
ganeshvanahalli Sep 26, 2025
55e3d05
merge upstream master
ganeshvanahalli Oct 8, 2025
7c9c449
minor fix
ganeshvanahalli Oct 8, 2025
e9b35e3
bugfix
ganeshvanahalli Oct 8, 2025
6894bbe
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Oct 9, 2025
b71389d
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Oct 15, 2025
f793c62
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Oct 21, 2025
c65f6bf
merge master and resolve conflicts
ganeshvanahalli Oct 22, 2025
25c70bd
fix failing CI
ganeshvanahalli Oct 22, 2025
6dac9b1
move MessageResult from consensus to execution package
ganeshvanahalli Oct 23, 2025
130a5ab
merge master and resolve conflicts
ganeshvanahalli Oct 23, 2025
c2f6ebd
fix CI
ganeshvanahalli Oct 23, 2025
94aa08c
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Oct 24, 2025
ac38683
address PR comments
ganeshvanahalli Nov 4, 2025
75f885c
address PR comment
ganeshvanahalli Nov 4, 2025
1f8c7c2
merge master and resolve conflicts
ganeshvanahalli Nov 4, 2025
ffe9416
fix lint error
ganeshvanahalli Nov 4, 2025
04b166e
address review
ganeshvanahalli Nov 6, 2025
5201dda
remove import aliases
ganeshvanahalli Nov 6, 2025
61a4017
fix CI
ganeshvanahalli Nov 7, 2025
2df87bc
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Nov 7, 2025
cb34614
resolve PR comments
ganeshvanahalli Nov 7, 2025
3b5fa3b
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Nov 7, 2025
0acc651
fix typo
ganeshvanahalli Nov 7, 2025
f8b8f60
address PR comments
ganeshvanahalli Nov 13, 2025
b71cb29
merge master and resolve conflict
ganeshvanahalli Nov 13, 2025
72458ac
address PR comments
ganeshvanahalli Nov 14, 2025
4501faf
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Nov 14, 2025
cd5bd77
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Dec 4, 2025
3d7a2c5
address PR comments
ganeshvanahalli Dec 4, 2025
6ce9b5b
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Dec 5, 2025
cce9ac7
address PR comments
ganeshvanahalli Dec 6, 2025
ceef817
fix CI
ganeshvanahalli Dec 6, 2025
ac94517
attempt: fix challenge tests CI
ganeshvanahalli Dec 9, 2025
144c44e
address PR comments
ganeshvanahalli Dec 9, 2025
c556785
Merge branch 'master' into Execution/Consensus-interface-over-RPC
ganeshvanahalli Dec 9, 2025
310a61a
ensure correct cleanup in retryableSetup system tests
ganeshvanahalli Dec 9, 2025
667db30
only enable ConsensusExecutionInSameProcessUseRPC over websocket
ganeshvanahalli Dec 10, 2025
3f1cdd1
address PR comments
ganeshvanahalli Dec 10, 2025
b584553
address PR comments
ganeshvanahalli Dec 10, 2025
690b8e7
address PR comments
ganeshvanahalli Dec 12, 2025
219dd11
undo change of default for ConsensusExecutionInSameProcessUseRPC
ganeshvanahalli Dec 12, 2025
04cdeb3
update CI workflow
ganeshvanahalli Dec 12, 2025
20e5888
merge master and resolve conflicts
ganeshvanahalli Dec 15, 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
17 changes: 16 additions & 1 deletion .github/workflows/_go-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,21 @@ jobs:
${{ github.workspace }}/.github/workflows/gotestsum.sh
--tags cionly --timeout 60m --test_state_scheme hash
--junitfile test-results/junit-b.xml --skip '^Test[A-L]'


- name: run tests with consensus and execution nodes connected over json rpc (A-batch)
if: inputs.run-defaults-a
continue-on-error: true
run: >-
${{ github.workspace }}/.github/workflows/gotestsum.sh
--tags cionly --timeout 60m --test_state_scheme hash --consensus_execution_in_same_process_use_rpc --run '^Test[A-L]'

- name: run tests with consensus and execution nodes connected over json rpc (B-batch)
if: inputs.run-defaults-b
continue-on-error: true
run: >-
${{ github.workspace }}/.github/workflows/gotestsum.sh
--tags cionly --timeout 60m --test_state_scheme hash --consensus_execution_in_same_process_use_rpc --skip '^Test[A-L]'

- name: Process JUnit XML logs
if: (inputs.run-defaults-a || inputs.run-defaults-b) && always()
run: python3 ${{ github.workspace }}/.github/workflows/process_junit.py test-results/
Expand All @@ -122,6 +136,7 @@ jobs:
echo "One or more tests failed."
exit 1


- name: run redis tests
if: inputs.run-defaults-a
run: >-
Expand Down
9 changes: 9 additions & 0 deletions .github/workflows/gotestsum.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ junitfile=""
log=true
race=false
cover=false
consensus_execution_in_same_process_use_rpc=false
flaky=false
while [[ $# -gt 0 ]]; do
case $1 in
Expand Down Expand Up @@ -64,6 +65,10 @@ while [[ $# -gt 0 ]]; do
cover=true
shift
;;
--consensus_execution_in_same_process_use_rpc)
consensus_execution_in_same_process_use_rpc=true
shift
;;
--nolog)
log=false
shift
Expand Down Expand Up @@ -137,6 +142,10 @@ else
cmd="$cmd -args -- --test_loglevel=8" # Use error log level, which is the value 8 in the slog level enum for tests.
fi

if [ "$consensus_execution_in_same_process_use_rpc" == true ]; then
cmd="$cmd --consensus_execution_in_same_process_use_rpc=true"
fi

if [ "$test_database_engine" != "" ]; then
cmd="$cmd --test_database_engine=$test_database_engine"
fi
Expand Down
60 changes: 32 additions & 28 deletions arbnode/blockmetadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,10 @@ type BlockMetadataFetcher struct {
stopwaiter.StopWaiter
config BlockMetadataFetcherConfig
db ethdb.Database
genesisBlockNum uint64
client *rpcclient.RpcClient
exec execution.ExecutionClient
startBlockNum uint64
trackBlockMetadataFrom arbutil.MessageIndex
expectedChainId uint64

Expand All @@ -83,18 +85,12 @@ func NewBlockMetadataFetcher(
ctx context.Context,
c BlockMetadataFetcherConfig,
db ethdb.Database,
genesisBlockNum uint64,
exec execution.ExecutionClient,
startPos uint64,
startBlockNum uint64,
expectedChainId uint64,
) (*BlockMetadataFetcher, error) {
var trackBlockMetadataFrom arbutil.MessageIndex
var err error
if startPos != 0 {
trackBlockMetadataFrom, err = exec.BlockNumberToMessageIndex(startPos).Await(ctx)
if err != nil {
return nil, err
}
}
client := rpcclient.NewRpcClient(func() *rpcclient.ClientConfig { return &c.Source }, nil)
if err = client.Start(ctx); err != nil {
return nil, err
Expand All @@ -110,14 +106,15 @@ func NewBlockMetadataFetcher(
}

fetcher := &BlockMetadataFetcher{
config: c,
db: db,
client: client,
exec: exec,
trackBlockMetadataFrom: trackBlockMetadataFrom,
expectedChainId: expectedChainId,
chainIdChecked: chainIdChecked,
currentSyncInterval: c.SyncInterval,
config: c,
db: db,
genesisBlockNum: genesisBlockNum,
client: client,
exec: exec,
startBlockNum: startBlockNum,
expectedChainId: expectedChainId,
chainIdChecked: chainIdChecked,
currentSyncInterval: c.SyncInterval,
}
return fetcher, nil
}
Expand Down Expand Up @@ -151,7 +148,7 @@ func (b *BlockMetadataFetcher) persistBlockMetadata(ctx context.Context, query [
batch := b.db.NewBatch()
queryMap := util.ArrayToSet(query)
for _, elem := range result {
pos, err := b.exec.BlockNumberToMessageIndex(elem.BlockNumber).Await(ctx)
pos, err := arbutil.BlockNumberToMessageIndex(elem.BlockNumber, b.genesisBlockNum)
if err != nil {
return err
}
Expand Down Expand Up @@ -184,16 +181,8 @@ func (b *BlockMetadataFetcher) Update(ctx context.Context) time.Duration {
}

handleQuery := func(query []uint64) bool {
fromBlock, err := b.exec.MessageIndexToBlockNumber(arbutil.MessageIndex(query[0])).Await(ctx)
if err != nil {
log.Error("Error getting fromBlock", "err", err)
return false
}
toBlock, err := b.exec.MessageIndexToBlockNumber(arbutil.MessageIndex(query[len(query)-1])).Await(ctx)
if err != nil {
log.Error("Error getting toBlock", "err", err)
return false
}
fromBlock := arbutil.MessageIndexToBlockNumber(arbutil.MessageIndex(query[0]), b.genesisBlockNum)
toBlock := arbutil.MessageIndexToBlockNumber(arbutil.MessageIndex(query[len(query)-1]), b.genesisBlockNum)

result, err := b.fetch(
ctx,
Expand Down Expand Up @@ -247,9 +236,24 @@ func (b *BlockMetadataFetcher) Update(ctx context.Context) time.Duration {
return b.config.SyncInterval
}

func (b *BlockMetadataFetcher) Start(ctx context.Context) {
func (b *BlockMetadataFetcher) InitializeTrackBlockMetadataFrom() error {
var err error
if b.startBlockNum != 0 {
b.trackBlockMetadataFrom, err = arbutil.BlockNumberToMessageIndex(b.startBlockNum, b.genesisBlockNum)
if err != nil {
return err
}
}
return nil
}

func (b *BlockMetadataFetcher) Start(ctx context.Context) error {
b.StopWaiter.Start(ctx, b)
if err := b.InitializeTrackBlockMetadataFrom(); err != nil {
return err
}
b.CallIteratively(b.Update)
return nil
}

func (b *BlockMetadataFetcher) StopAndWait() {
Expand Down
8 changes: 0 additions & 8 deletions arbnode/inbox_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,14 +111,6 @@ func (w *execClientWrapper) Start(ctx context.Context) error {
return nil
}

func (w *execClientWrapper) MessageIndexToBlockNumber(messageNum arbutil.MessageIndex) containers.PromiseInterface[uint64] {
return containers.NewReadyPromise(w.ExecutionEngine.MessageIndexToBlockNumber(messageNum), nil)
}

func (w *execClientWrapper) BlockNumberToMessageIndex(blockNum uint64) containers.PromiseInterface[arbutil.MessageIndex] {
return containers.NewReadyPromise(w.ExecutionEngine.BlockNumberToMessageIndex(blockNum))
}

func (w *execClientWrapper) ArbOSVersionForMessageIndex(msgIdx arbutil.MessageIndex) containers.PromiseInterface[uint64] {
return w.ExecutionEngine.ArbOSVersionForMessageIndex(msgIdx)
}
Expand Down
Loading
Loading