Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 6 additions & 0 deletions apps/evm/cmd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,12 @@ func createSequencer(
daClient block.FullDAClient,
executor execution.Executor,
) (coresequencer.Sequencer, error) {
// Only aggregators and promotable nodes need a sequencer; promotable
// followers must have one ready before they are promoted to proposer.
if !nodeConfig.Node.Aggregator && !nodeConfig.Node.Promotable {
return nil, nil
}

if nodeConfig.Node.BasedSequencer {
// Based sequencer mode - fetch transactions only from DA
if !nodeConfig.Node.Aggregator {
Expand Down
4 changes: 3 additions & 1 deletion apps/testapp/cmd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,9 @@ func createSequencer(
genesis genesis.Genesis,
executor execution.Executor,
) (coresequencer.Sequencer, error) {
if !nodeConfig.Node.Aggregator {
// Only aggregators and promotable nodes need a sequencer; promotable
// followers must have one ready before they are promoted to proposer.
if !nodeConfig.Node.Aggregator && !nodeConfig.Node.Promotable {
return nil, nil
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/run_node.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ func ParseStartConfig(cmd *cobra.Command) (rollconf.Config, error) {
if err != nil {
return rollconf.Config{}, err
}
if nodeConfig.Node.Aggregator && nodeConfig.GetDAAddress() == "" {
return rollconf.Config{}, fmt.Errorf("DA address is required when aggregator mode is enabled")
if (nodeConfig.Node.Aggregator || nodeConfig.Node.Promotable) && nodeConfig.GetDAAddress() == "" {
return rollconf.Config{}, fmt.Errorf("DA address is required when aggregator or promotable mode is enabled")
}

return nodeConfig, nil
Expand Down
22 changes: 12 additions & 10 deletions pkg/cmd/run_node_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,20 +175,22 @@ func TestAggregatorFlagInvariants(t *testing.T) {
}

func TestParseStartConfig_AggregatorRequiresDAAddress(t *testing.T) {
executor, sequencer, keyProvider, nodeKey, ds, stopDAHeightTicker := createTestComponents(context.Background(), t)
defer stopDAHeightTicker()
for _, flag := range []string{"--rollkit.node.aggregator", "--rollkit.node.promotable"} {
executor, sequencer, keyProvider, nodeKey, ds, stopDAHeightTicker := createTestComponents(context.Background(), t)
defer stopDAHeightTicker()

nodeConfig := rollconf.DefaultConfig()
nodeConfig.RootDir = t.TempDir()
nodeConfig := rollconf.DefaultConfig()
nodeConfig.RootDir = t.TempDir()

cmd := newRunNodeCmd(t.Context(), executor, sequencer, keyProvider, nodeKey, ds, nodeConfig)
require.NoError(t, cmd.ParseFlags([]string{"start", "--rollkit.node.aggregator"}))
cmd := newRunNodeCmd(t.Context(), executor, sequencer, keyProvider, nodeKey, ds, nodeConfig)
require.NoError(t, cmd.ParseFlags([]string{"start", flag}))

_, err := ParseConfig(cmd)
require.NoError(t, err)
_, err := ParseConfig(cmd)
require.NoError(t, err)

_, err = ParseStartConfig(cmd)
require.EqualError(t, err, "DA address is required when aggregator mode is enabled")
_, err = ParseStartConfig(cmd)
require.EqualError(t, err, "DA address is required when aggregator or promotable mode is enabled")
}
}

func TestPromotableFlagInvariants(t *testing.T) {
Expand Down
4 changes: 4 additions & 0 deletions pkg/sequencers/single/sequencer.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ func NewSequencer(
genesis genesis.Genesis,
executor execution.Executor,
) (*Sequencer, error) {
if daClient == nil {
return nil, errors.New("single sequencer requires a DA client")
}

s := &Sequencer{
db: db,
logger: logger,
Expand Down
7 changes: 7 additions & 0 deletions pkg/sequencers/single/sequencer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,13 @@ func newTestSequencer(t *testing.T, db ds.Batching, daClient block.FullDAClient)
return seq
}

func TestNewSequencer_NilDAClient(t *testing.T) {
mockExec := createDefaultMockExecutor(t)
seq, err := NewSequencer(zerolog.Nop(), ds.NewMapDatastore(), nil, config.DefaultConfig(), []byte("test"), 1000, genesis.Genesis{}, mockExec)
require.Error(t, err)
require.Nil(t, seq)
}

func TestSequencer_SubmitBatchTxs(t *testing.T) {
dummyDA := newDummyDA(100_000_000)
db := ds.NewMapDatastore()
Expand Down
Loading