diff --git a/apps/evm/single/cmd/init.go b/apps/evm/single/cmd/init.go index 11b7e5750d..7a71fdfcf7 100644 --- a/apps/evm/single/cmd/init.go +++ b/apps/evm/single/cmd/init.go @@ -59,6 +59,9 @@ func InitCmd() *cobra.Command { if err != nil { return fmt.Errorf("error reading chain ID flag: %w", err) } + if chainID == "" { + return fmt.Errorf("chain ID must be set, (example: ev-1, xo-1)") + } // Initialize genesis without app state err = rollgenesis.CreateGenesis(homePath, chainID, 1, proposerAddress) genesisPath := rollgenesis.GenesisPath(homePath) @@ -84,7 +87,8 @@ func InitCmd() *cobra.Command { // Add flags to the command rollconf.AddFlags(initCmd) - initCmd.Flags().String(rollgenesis.ChainIDFlag, "evolve-test", "chain ID") + initCmd.Flags().String(rollgenesis.ChainIDFlag, "", "chain ID must be set. It is used in the genesis file and to identify the network (examples: ev-1. xo-1)") + initCmd.MarkFlagsOneRequired(rollgenesis.ChainIDFlag) return initCmd } diff --git a/apps/testapp/cmd/init.go b/apps/testapp/cmd/init.go index ad24f53fb8..8791897be0 100644 --- a/apps/testapp/cmd/init.go +++ b/apps/testapp/cmd/init.go @@ -59,6 +59,9 @@ func InitCmd() *cobra.Command { if err != nil { return fmt.Errorf("error reading chain ID flag: %w", err) } + if chainID == "" { + return fmt.Errorf("chain ID must be set, (example: ev-1, xo-1)") + } // Initialize genesis without app state err = rollgenesis.CreateGenesis(homePath, chainID, 1, proposerAddress) @@ -85,7 +88,8 @@ func InitCmd() *cobra.Command { // Add flags to the command rollconf.AddFlags(initCmd) - initCmd.Flags().String(rollgenesis.ChainIDFlag, "rollkit-test", "chain ID") + initCmd.Flags().String(rollgenesis.ChainIDFlag, "", "chain ID must be set. It is used in the genesis file and to identify the network (examples: ev-1. xo-1)") + initCmd.MarkFlagsOneRequired(rollgenesis.ChainIDFlag) return initCmd } diff --git a/apps/testapp/cmd/init_test.go b/apps/testapp/cmd/init_test.go index 1a5e31aac2..123f49e2ad 100644 --- a/apps/testapp/cmd/init_test.go +++ b/apps/testapp/cmd/init_test.go @@ -43,7 +43,7 @@ func TestInitCommand(t *testing.T) { rollconf.AddGlobalFlags(cmd, "testapp") // Set home flag to the test directory - cmd.SetArgs([]string{"init", "--home", dir, "--rollkit.node.aggregator", "--rollkit.signer.passphrase", "test"}) + cmd.SetArgs([]string{"init", "--home", dir, "--evnode.node.aggregator", "--evnode.signer.passphrase", "test", "--chain_id", "ev-1", "--evnode.da.namespace", "test-namespace"}) // Execute the command err = cmd.Execute() diff --git a/block/namespace_test.go b/block/namespace_test.go index 3d35b8eabc..0aafb92c17 100644 --- a/block/namespace_test.go +++ b/block/namespace_test.go @@ -225,7 +225,7 @@ func TestLegacyNamespaceDetection(t *testing.T) { if tt.namespace != "" { assert.Equal(t, tt.namespace, headerNS) } else { - assert.Equal(t, "rollkit-headers", headerNS) // Default + assert.Equal(t, "", headerNS) // Default } if tt.dataNamespace != "" { @@ -233,7 +233,7 @@ func TestLegacyNamespaceDetection(t *testing.T) { } else if tt.namespace != "" { assert.Equal(t, tt.namespace, dataNS) } else { - assert.Equal(t, "rollkit-headers", dataNS) // Falls back to default namespace + assert.Equal(t, "", dataNS) } // Test actual behavior in fetchBlobs diff --git a/pkg/cmd/p2p_test.go b/pkg/cmd/p2p_test.go index f75b04208c..5a34959e5f 100644 --- a/pkg/cmd/p2p_test.go +++ b/pkg/cmd/p2p_test.go @@ -96,6 +96,7 @@ func TestNetInfoCmd_Success(t *testing.T) { rootCmd := &cobra.Command{Use: "root"} rootCmd.PersistentFlags().String(config.FlagRootDir, tempDir, "Root directory for config and data") rootCmd.PersistentFlags().String(config.FlagRPCAddress, rpcAddr, "RPC listen address") + rootCmd.PersistentFlags().String(config.FlagDANamespace, "ev-namespace", "DA Namespace") err = v.BindPFlag(config.FlagRootDir, rootCmd.PersistentFlags().Lookup(config.FlagRootDir)) require.NoError(err) @@ -174,6 +175,7 @@ func TestNetInfoCmd_NoPeers(t *testing.T) { rootCmd := &cobra.Command{Use: "root"} rootCmd.PersistentFlags().String(config.FlagRootDir, tempDir, "Root directory for config and data") rootCmd.PersistentFlags().String(config.FlagRPCAddress, rpcAddr, "RPC listen address") + rootCmd.PersistentFlags().String(config.FlagDANamespace, "ev-namespace", "DA Namespace") err = v.BindPFlag(config.FlagRootDir, rootCmd.PersistentFlags().Lookup(config.FlagRootDir)) require.NoError(err) diff --git a/pkg/cmd/run_node.go b/pkg/cmd/run_node.go index 49719bd5e6..9dbea0c334 100644 --- a/pkg/cmd/run_node.go +++ b/pkg/cmd/run_node.go @@ -39,6 +39,27 @@ func ParseConfig(cmd *cobra.Command) (rollconf.Config, error) { return nodeConfig, nil } +// ParseConfigWithDefaults loads the node configuration, merges it with the provided defaults, and validates it. +// The precedence order is: command flags > config file > provided defaults +func ParseConfigWithDefaults(cmd *cobra.Command, defaults rollconf.Config) (rollconf.Config, error) { + // Load config from flags and file + nodeConfig, err := rollconf.Load(cmd) + if err != nil { + return rollconf.Config{}, fmt.Errorf("failed to load node config: %w", err) + } + + // Merge with defaults - only set values that are still at their zero values + // This preserves the precedence: flags > file > defaults + if nodeConfig.DA.Namespace == "" && defaults.DA.Namespace != "" { + nodeConfig.DA.Namespace = defaults.DA.Namespace + } + + if err := nodeConfig.Validate(); err != nil { + return rollconf.Config{}, fmt.Errorf("failed to validate node config: %w", err) + } + return nodeConfig, nil +} + // SetupLogger configures and returns a logger based on the provided configuration. // It applies the following settings from the config: // - Log format (text or JSON) diff --git a/pkg/cmd/run_node_test.go b/pkg/cmd/run_node_test.go index 82c431782c..8ac1e0e246 100644 --- a/pkg/cmd/run_node_test.go +++ b/pkg/cmd/run_node_test.go @@ -150,10 +150,13 @@ func TestParseFlags(t *testing.T) { func TestAggregatorFlagInvariants(t *testing.T) { flagVariants := [][]string{{ "--rollkit.node.aggregator=false", + "--evnode.da.namespace=test-namespace", }, { "--rollkit.node.aggregator=true", + "--evnode.da.namespace=test-namespace", }, { "--rollkit.node.aggregator", + "--evnode.da.namespace=test-namespace", }} validValues := []bool{false, true, true} @@ -166,7 +169,6 @@ func TestAggregatorFlagInvariants(t *testing.T) { nodeConfig := rollconf.DefaultConfig nodeConfig.RootDir = t.TempDir() - newRunNodeCmd := newRunNodeCmd(t.Context(), executor, sequencer, dac, keyProvider, p2pClient, ds, nodeConfig) _ = newRunNodeCmd.Flags().Set(rollconf.FlagRootDir, "custom/root/dir") @@ -174,13 +176,13 @@ func TestAggregatorFlagInvariants(t *testing.T) { t.Errorf("Error: %v", err) } - nodeConfig, err := ParseConfig(newRunNodeCmd) + parsedConfig, err := ParseConfig(newRunNodeCmd) if err != nil { t.Errorf("Error: %v", err) } - if nodeConfig.Node.Aggregator != validValues[i] { - t.Errorf("Expected %v, got %v", validValues[i], nodeConfig.Node.Aggregator) + if parsedConfig.Node.Aggregator != validValues[i] { + t.Errorf("Expected %v, got %v", validValues[i], parsedConfig.Node.Aggregator) } } } @@ -209,9 +211,9 @@ func TestDefaultAggregatorValue(t *testing.T) { // Create a new command without specifying any flags var args []string if tc.expected { - args = []string{"start", "--rollkit.node.aggregator"} + args = []string{"start", "--evnode.node.aggregator", "--evnode.da.namespace=ev-namespace"} } else { - args = []string{"start", "--rollkit.node.aggregator=false"} + args = []string{"start", "--evnode.da.namespace=ev-namespace"} } if err := newRunNodeCmd.ParseFlags(args); err != nil { @@ -277,6 +279,7 @@ func TestCentralizedAddresses(t *testing.T) { args := []string{ "start", "--rollkit.da.address=http://central-da:26657", + "--rollkit.da.namespace=test-namespace", } executor, sequencer, dac, keyProvider, p2pClient, ds, stopDAHeightTicker := createTestComponents(context.Background(), t) @@ -631,6 +634,7 @@ func TestStartNodeErrors(t *testing.T) { t.Run(tc.name, func(t *testing.T) { nodeConfig := rollconf.DefaultConfig nodeConfig.RootDir = tmpDir + nodeConfig.DA.Namespace = "test-namespace" // Set namespace in config if tc.configModifier != nil { tc.configModifier(&nodeConfig) diff --git a/pkg/cmd/store_test.go b/pkg/cmd/store_test.go index d97b255c6a..ac7b2c689a 100644 --- a/pkg/cmd/store_test.go +++ b/pkg/cmd/store_test.go @@ -7,6 +7,7 @@ import ( "path/filepath" "testing" + "github.com/evstack/ev-node/pkg/config" "github.com/spf13/cobra" "github.com/stretchr/testify/require" ) @@ -60,7 +61,8 @@ func TestStoreUnsafeCleanCmd(t *testing.T) { // Create a root command and add the subcommand rootCmd := &cobra.Command{Use: "root"} - rootCmd.PersistentFlags().String("home", tempDir, "root directory") + rootCmd.PersistentFlags().String(config.FlagRootDir, tempDir, "root directory") + rootCmd.PersistentFlags().String(config.FlagDANamespace, "ev-namespace", "DA Namespace") rootCmd.AddCommand(StoreUnsafeCleanCmd) // Capture output diff --git a/pkg/config/config.go b/pkg/config/config.go index 35451e9a1e..5ec0f645b0 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -165,10 +165,7 @@ type DAConfig struct { // GetNamespace returns the namespace for header submittions. func (d *DAConfig) GetNamespace() string { - if d.Namespace != "" { - return d.Namespace - } - return "rollkit-headers" // Default value + return d.Namespace } // GetDataNamespace returns the namespace for data submissions, falling back to the header namespace if not set @@ -227,7 +224,7 @@ type RPCConfig struct { // It creates the directory if it does not exist. func (c *Config) Validate() error { if c.RootDir == "" { - return fmt.Errorf("root directory cannot be empty") + return errors.New("root directory cannot be empty") } fullDir := filepath.Dir(c.ConfigPath()) @@ -235,6 +232,10 @@ func (c *Config) Validate() error { return fmt.Errorf("could not create directory %q: %w", fullDir, err) } + if c.DA.Namespace == "" { + return errors.New("namespace cannot be empty") + } + return nil } diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index f1f13f5894..56bd31215a 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -27,7 +27,7 @@ func TestDefaultConfig(t *testing.T) { assert.Equal(t, float64(-1), def.DA.GasPrice) assert.Equal(t, float64(0), def.DA.GasMultiplier) assert.Equal(t, "", def.DA.SubmitOptions) - assert.Equal(t, "rollkit-headers", def.DA.Namespace) + assert.Equal(t, "", def.DA.Namespace) assert.Equal(t, 1*time.Second, def.Node.BlockTime.Duration) assert.Equal(t, 6*time.Second, def.DA.BlockTime.Duration) assert.Equal(t, uint64(0), def.DA.StartHeight) @@ -39,6 +39,8 @@ func TestDefaultConfig(t *testing.T) { assert.Equal(t, "file", def.Signer.SignerType) assert.Equal(t, "config", def.Signer.SignerPath) assert.Equal(t, "127.0.0.1:7331", def.RPC.Address) + + def.DA.Namespace = "test" assert.NoError(t, def.Validate()) } @@ -136,6 +138,7 @@ node: da: address: "http://yaml-da:26657" + namespace: "test" signer: signer_type: "file" @@ -300,10 +303,10 @@ func TestDAConfig_GetDataNamespace(t *testing.T) { expectedNamespace: "namespace", }, { - name: "Both empty, use default value from default namespace", + name: "Both empty, return empty string", dataNamespace: "", defaultNamespace: "", - expectedNamespace: "rollkit-headers", + expectedNamespace: "", }, } diff --git a/pkg/config/defaults.go b/pkg/config/defaults.go index 03321c5730..24341c3f15 100644 --- a/pkg/config/defaults.go +++ b/pkg/config/defaults.go @@ -57,7 +57,7 @@ var DefaultConfig = Config{ GasPrice: -1, GasMultiplier: 0, MaxSubmitAttempts: 30, - Namespace: "rollkit-headers", + Namespace: "", DataNamespace: "", }, Instrumentation: DefaultInstrumentationConfig(), diff --git a/pkg/config/yaml_test.go b/pkg/config/yaml_test.go index 59acf82018..616e0a3e7e 100644 --- a/pkg/config/yaml_test.go +++ b/pkg/config/yaml_test.go @@ -64,6 +64,7 @@ func TestYamlConfigOperations(t *testing.T) { cfg, err := Load(cmd) require.NoError(t, err) + cfg.DA.Namespace = "test" require.NoError(t, cfg.Validate()) // Validate the config diff --git a/test/docker-e2e/docker_test.go b/test/docker-e2e/docker_test.go index 64b43f557e..38b08ff9a4 100644 --- a/test/docker-e2e/docker_test.go +++ b/test/docker-e2e/docker_test.go @@ -205,7 +205,8 @@ func (s *DockerTestSuite) FundWallet(ctx context.Context, wallet tastoratypes.Wa // StartEvNode initializes and starts an Ev node. func (s *DockerTestSuite) StartEvNode(ctx context.Context, bridgeNode tastoratypes.DANode, evNode tastoratypes.RollkitNode) { - err := evNode.Init(ctx) + namespace := "test" + err := evNode.Init(ctx, "--evnode.da.namespace", namespace) s.Require().NoError(err) bridgeNodeHostName, err := bridgeNode.GetInternalHostName() @@ -216,19 +217,19 @@ func (s *DockerTestSuite) StartEvNode(ctx context.Context, bridgeNode tastoratyp daAddress := fmt.Sprintf("http://%s:26658", bridgeNodeHostName) err = evNode.Start(ctx, - "--rollkit.da.address", daAddress, - "--rollkit.da.gas_price", "0.025", - "--rollkit.da.auth_token", authToken, - "--rollkit.rpc.address", "0.0.0.0:7331", // bind to 0.0.0.0 so rpc is reachable from test host. - "--rollkit.da.namespace", generateValidNamespaceHex(), + "--evnode.da.address", daAddress, + "--evnode.da.gas_price", "0.025", + "--evnode.da.auth_token", authToken, + "--evnode.da.namespace", namespace, + "--evnode.rpc.address", "0.0.0.0:7331", // bind to 0.0.0.0 so rpc is reachable from test host. "--kv-endpoint", "0.0.0.0:8080", ) s.Require().NoError(err) } // StartRollkitNodeWithNamespace initializes and starts a Rollkit node with a specific namespace. -func (s *DockerTestSuite) StartRollkitNodeWithNamespace(ctx context.Context, bridgeNode tastoratypes.DANode, rollkitNode tastoratypes.RollkitNode, namespace string) { - err := rollkitNode.Init(ctx) +func (s *DockerTestSuite) StartEvNodeWithNamespace(ctx context.Context, bridgeNode tastoratypes.DANode, rollkitNode tastoratypes.RollkitNode, namespace string) { + err := rollkitNode.Init(ctx, "--evnode.da.namespace", namespace) s.Require().NoError(err) bridgeNodeHostName, err := bridgeNode.GetInternalHostName() @@ -240,10 +241,10 @@ func (s *DockerTestSuite) StartRollkitNodeWithNamespace(ctx context.Context, bri daAddress := fmt.Sprintf("http://%s:26658", bridgeNodeHostName) err = rollkitNode.Start(ctx, "--rollkit.da.address", daAddress, - "--rollkit.da.gas_price", "0.025", - "--rollkit.da.auth_token", authToken, - "--rollkit.rpc.address", "0.0.0.0:7331", // bind to 0.0.0.0 so rpc is reachable from test host. - "--rollkit.da.namespace", namespace, + "--evnode.da.gas_price", "0.025", + "--evnode.da.auth_token", authToken, + "--evnode.rpc.address", "0.0.0.0:7331", // bind to 0.0.0.0 so rpc is reachable from test host. + "--evnode.da.namespace", namespace, "--kv-endpoint", "0.0.0.0:8080", ) s.Require().NoError(err) diff --git a/test/docker-e2e/resiliency_test.go b/test/docker-e2e/resiliency_test.go index 04ec65f066..0969c22d7a 100644 --- a/test/docker-e2e/resiliency_test.go +++ b/test/docker-e2e/resiliency_test.go @@ -52,7 +52,7 @@ func (s *DockerTestSuite) TestRollkitNodeRestart() { // Start rollkit node with stored namespace rollkitNode = s.evNodeChain.GetNodes()[0] - s.StartRollkitNodeWithNamespace(ctx, bridgeNode, rollkitNode, namespace) + s.StartEvNodeWithNamespace(ctx, bridgeNode, rollkitNode, namespace) // Create HTTP client for testing httpPortStr := rollkitNode.GetHostHTTPPort() @@ -205,7 +205,7 @@ func (s *DockerTestSuite) TestCelestiaDANetworkPartitionE2E() { // Start rollkit node with stored namespace rollkitNode = s.evNodeChain.GetNodes()[0] - s.StartRollkitNodeWithNamespace(ctx, bridgeNode, rollkitNode, namespace) + s.StartEvNodeWithNamespace(ctx, bridgeNode, rollkitNode, namespace) t.Log("✅ Rollkit node started") // Create HTTP client for testing @@ -487,7 +487,7 @@ func (s *DockerTestSuite) TestDataCorruptionRecovery() { // Start rollkit node rollkitNode = s.evNodeChain.GetNodes()[0] - s.StartRollkitNodeWithNamespace(ctx, bridgeNode, rollkitNode, namespace) + s.StartEvNodeWithNamespace(ctx, bridgeNode, rollkitNode, namespace) t.Log("✅ Rollkit node started") // Create HTTP client diff --git a/test/e2e/base_test.go b/test/e2e/base_test.go index 688ededdcd..d62fec339c 100644 --- a/test/e2e/base_test.go +++ b/test/e2e/base_test.go @@ -51,8 +51,9 @@ func TestBasic(t *testing.T) { "init", "--home="+node1Home, "--chain_id=testing", - "--rollkit.node.aggregator", - "--rollkit.signer.passphrase="+aggregatorPass, + "--evnode.da.namespace=evnode", + "--evnode.node.aggregator", + "--evnode.signer.passphrase="+aggregatorPass, ) require.NoError(t, err, "failed to init aggregator", output) @@ -60,10 +61,10 @@ func TestBasic(t *testing.T) { sut.ExecCmd(binaryPath, "start", "--home="+node1Home, - "--rollkit.node.aggregator", - "--rollkit.signer.passphrase="+aggregatorPass, - "--rollkit.node.block_time=5ms", - "--rollkit.da.block_time=15ms", + "--evnode.node.aggregator", + "--evnode.signer.passphrase="+aggregatorPass, + "--evnode.node.block_time=5ms", + "--evnode.da.block_time=15ms", "--kv-endpoint=127.0.0.1:9090", ) @@ -76,6 +77,7 @@ func TestBasic(t *testing.T) { output, err = sut.RunCmd(binaryPath, "init", "--chain_id=testing", + "--evnode.da.namespace=evnode", "--home="+node2Home, ) require.NoError(t, err, "failed to init fullnode", output) @@ -90,9 +92,9 @@ func TestBasic(t *testing.T) { binaryPath, "start", "--home="+node2Home, - "--rollkit.log.level=debug", - "--rollkit.p2p.listen_address="+node2P2P, - fmt.Sprintf("--rollkit.rpc.address=%s", node2RPC), + "--evnode.log.level=debug", + "--evnode.p2p.listen_address="+node2P2P, + fmt.Sprintf("--evnode.rpc.address=%s", node2RPC), ) sut.AwaitNodeUp(t, "http://"+node2RPC, 2*time.Second) @@ -146,8 +148,9 @@ func TestNodeRestartPersistence(t *testing.T) { "init", "--home="+nodeHome, "--chain_id=testing", - "--rollkit.node.aggregator", - "--rollkit.signer.passphrase=12345678", + "--evnode.da.namespace=evnode", + "--evnode.node.aggregator", + "--evnode.signer.passphrase=12345678", ) require.NoError(t, err, "failed to init node", output) @@ -155,10 +158,10 @@ func TestNodeRestartPersistence(t *testing.T) { sut.ExecCmd(binaryPath, "start", "--home="+nodeHome, - "--rollkit.node.aggregator", - "--rollkit.signer.passphrase=12345678", - "--rollkit.node.block_time=5ms", - "--rollkit.da.block_time=15ms", + "--evnode.node.aggregator", + "--evnode.signer.passphrase=12345678", + "--evnode.node.block_time=5ms", + "--evnode.da.block_time=15ms", "--kv-endpoint=127.0.0.1:9090", ) sut.AwaitNodeUp(t, "http://127.0.0.1:7331", 2*time.Second) @@ -191,10 +194,11 @@ func TestNodeRestartPersistence(t *testing.T) { sut.ExecCmd(binaryPath, "start", "--home="+nodeHome, - "--rollkit.node.aggregator", - "--rollkit.signer.passphrase=12345678", - "--rollkit.node.block_time=5ms", - "--rollkit.da.block_time=15ms", + "--evnode.da.namespace=evnode", + "--evnode.node.aggregator", + "--evnode.signer.passphrase=12345678", + "--evnode.node.block_time=5ms", + "--evnode.da.block_time=15ms", "--kv-endpoint=127.0.0.1:9090", ) sut.AwaitNodeUp(t, "http://127.0.0.1:7331", 2*time.Second) diff --git a/test/e2e/evm_test_common.go b/test/e2e/evm_test_common.go index 556894c879..d11acafca0 100644 --- a/test/e2e/evm_test_common.go +++ b/test/e2e/evm_test_common.go @@ -143,6 +143,9 @@ const ( TestPrivateKey = "cece4f25ac74deb1468965160c7185e07dff413f23fcadb611b05ca37ab0a52e" TestToAddress = "0x944fDcD1c868E3cC566C78023CcB38A32cDA836E" TestPassphrase = "secret" + + namespace = "test" + chainID = "test-1" ) const ( @@ -319,8 +322,10 @@ func setupSequencerNode(t *testing.T, sut *SystemUnderTest, sequencerHome, jwtSe // Initialize sequencer node output, err := sut.RunCmd(evmSingleBinaryPath, "init", - "--rollkit.node.aggregator=true", - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.aggregator=true", + "--evnode.da.namespace", namespace, + "--evnode.signer.passphrase", TestPassphrase, + "--chain_id", chainID, "--home", sequencerHome, ) require.NoError(t, err, "failed to init sequencer", output) @@ -331,12 +336,12 @@ func setupSequencerNode(t *testing.T, sut *SystemUnderTest, sequencerHome, jwtSe "start", "--evm.jwt-secret", jwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.node.block_time", DefaultBlockTime, - "--rollkit.node.aggregator=true", - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.block_time", DefaultBlockTime, + "--evnode.node.aggregator=true", + "--evnode.signer.passphrase", TestPassphrase, "--home", sequencerHome, - "--rollkit.da.address", DAAddress, - "--rollkit.da.block_time", DefaultDABlockTime, + "--evnode.da.address", DAAddress, + "--evnode.da.block_time", DefaultDABlockTime, ) sut.AwaitNodeUp(t, RollkitRPCAddress, NodeStartupTimeout) } else { @@ -369,8 +374,10 @@ func setupSequencerNodeLazy(t *testing.T, sut *SystemUnderTest, sequencerHome, j // Initialize sequencer node output, err := sut.RunCmd(evmSingleBinaryPath, "init", - "--rollkit.node.aggregator=true", - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.aggregator=true", + "--evnode.da.namespace", namespace, + "--evnode.signer.passphrase", TestPassphrase, + "--chain_id", chainID, "--home", sequencerHome, ) require.NoError(t, err, "failed to init sequencer", output) @@ -381,32 +388,32 @@ func setupSequencerNodeLazy(t *testing.T, sut *SystemUnderTest, sequencerHome, j "start", "--evm.jwt-secret", jwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.node.block_time", DefaultBlockTime, - "--rollkit.node.aggregator=true", - "--rollkit.node.lazy_mode=true", - "--rollkit.node.lazy_block_interval=60s", - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.block_time", DefaultBlockTime, + "--evnode.node.aggregator=true", + "--evnode.node.lazy_mode=true", + "--evnode.node.lazy_block_interval=60s", + "--evnode.signer.passphrase", TestPassphrase, "--home", sequencerHome, - "--rollkit.da.address", DAAddress, - "--rollkit.da.block_time", DefaultDABlockTime, + "--evnode.da.address", DAAddress, + "--evnode.da.block_time", DefaultDABlockTime, ) sut.AwaitNodeUp(t, RollkitRPCAddress, NodeStartupTimeout) } else { - // Start sequencer node in lazy mode with dynamic rollkit ports, fixed EVM engine ports + // Start sequencer node in lazy mode with dynamic evnode ports, fixed EVM engine ports sut.ExecCmd(evmSingleBinaryPath, "start", "--evm.jwt-secret", jwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.node.block_time", DefaultBlockTime, - "--rollkit.node.aggregator=true", - "--rollkit.node.lazy_mode=true", // Enable lazy mode - "--rollkit.node.lazy_block_interval=60s", // Set lazy block interval to 60 seconds to prevent timer-based block production during test - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.block_time", DefaultBlockTime, + "--evnode.node.aggregator=true", + "--evnode.node.lazy_mode=true", // Enable lazy mode + "--evnode.node.lazy_block_interval=60s", // Set lazy block interval to 60 seconds to prevent timer-based block production during test + "--evnode.signer.passphrase", TestPassphrase, "--home", sequencerHome, - "--rollkit.da.address", "http://localhost:"+ports.DAPort, - "--rollkit.da.block_time", DefaultDABlockTime, - "--rollkit.rpc.address", "127.0.0.1:"+ports.RollkitRPCPort, - "--rollkit.p2p.listen_address", "/ip4/127.0.0.1/tcp/"+ports.RollkitP2PPort, + "--evnode.da.address", "http://localhost:"+ports.DAPort, + "--evnode.da.block_time", DefaultDABlockTime, + "--evnode.rpc.address", "127.0.0.1:"+ports.RollkitRPCPort, + "--evnode.p2p.listen_address", "/ip4/127.0.0.1/tcp/"+ports.RollkitP2PPort, "--evm.engine-url", SequencerEngineURL, "--evm.eth-url", SequencerEthURL, ) @@ -436,6 +443,8 @@ func setupFullNode(t *testing.T, sut *SystemUnderTest, fullNodeHome, sequencerHo output, err := sut.RunCmd(evmSingleBinaryPath, "init", "--home", fullNodeHome, + "--evnode.da.namespace", namespace, + "--chain_id", chainID, ) require.NoError(t, err, "failed to init full node", output) @@ -454,29 +463,29 @@ func setupFullNode(t *testing.T, sut *SystemUnderTest, fullNodeHome, sequencerHo "--home", fullNodeHome, "--evm.jwt-secret", fullNodeJwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.rpc.address", "127.0.0.1:"+FullNodeRPCPort, - "--rollkit.p2p.listen_address", "/ip4/127.0.0.1/tcp/"+FullNodeP2PPort, - "--rollkit.p2p.peers", sequencerP2PAddress, + "--evnode.rpc.address", "127.0.0.1:"+FullNodeRPCPort, + "--evnode.p2p.listen_address", "/ip4/127.0.0.1/tcp/"+FullNodeP2PPort, + "--evnode.p2p.peers", sequencerP2PAddress, "--evm.engine-url", FullNodeEngineURL, "--evm.eth-url", FullNodeEthURL, - "--rollkit.da.address", DAAddress, - "--rollkit.da.block_time", DefaultDABlockTime, + "--evnode.da.address", DAAddress, + "--evnode.da.block_time", DefaultDABlockTime, ) sut.AwaitNodeUp(t, "http://127.0.0.1:"+FullNodeRPCPort, NodeStartupTimeout) } else { - // Start full node with dynamic rollkit ports, fixed EVM engine ports + // Start full node with dynamic evnode ports, fixed EVM engine ports sut.ExecCmd(evmSingleBinaryPath, "start", "--home", fullNodeHome, "--evm.jwt-secret", fullNodeJwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.rpc.address", "127.0.0.1:"+ports.FullNodeRPCPort, - "--rollkit.p2p.listen_address", "/ip4/127.0.0.1/tcp/"+ports.FullNodeP2PPort, - "--rollkit.p2p.peers", sequencerP2PAddress, + "--evnode.rpc.address", "127.0.0.1:"+ports.FullNodeRPCPort, + "--evnode.p2p.listen_address", "/ip4/127.0.0.1/tcp/"+ports.FullNodeP2PPort, + "--evnode.p2p.peers", sequencerP2PAddress, "--evm.engine-url", FullNodeEngineURL, "--evm.eth-url", FullNodeEthURL, - "--rollkit.da.address", "http://localhost:"+ports.DAPort, - "--rollkit.da.block_time", DefaultDABlockTime, + "--evnode.da.address", "http://localhost:"+ports.DAPort, + "--evnode.da.block_time", DefaultDABlockTime, ) sut.AwaitNodeUp(t, "http://127.0.0.1:"+ports.FullNodeRPCPort, NodeStartupTimeout) } @@ -676,12 +685,12 @@ func restartDAAndSequencer(t *testing.T, sut *SystemUnderTest, sequencerHome, jw "start", "--evm.jwt-secret", jwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.node.block_time", DefaultBlockTime, - "--rollkit.node.aggregator=true", - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.block_time", DefaultBlockTime, + "--evnode.node.aggregator=true", + "--evnode.signer.passphrase", TestPassphrase, "--home", sequencerHome, - "--rollkit.da.address", DAAddress, - "--rollkit.da.block_time", DefaultDABlockTime, + "--evnode.da.address", DAAddress, + "--evnode.da.block_time", DefaultDABlockTime, ) time.Sleep(SlowPollingInterval) @@ -716,14 +725,14 @@ func restartDAAndSequencerLazy(t *testing.T, sut *SystemUnderTest, sequencerHome "start", "--evm.jwt-secret", jwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.node.block_time", DefaultBlockTime, - "--rollkit.node.aggregator=true", - "--rollkit.node.lazy_mode=true", // Enable lazy mode - "--rollkit.node.lazy_block_interval=60s", // Set lazy block interval to 60 seconds to prevent timer-based block production during test - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.block_time", DefaultBlockTime, + "--evnode.node.aggregator=true", + "--evnode.node.lazy_mode=true", // Enable lazy mode + "--evnode.node.lazy_block_interval=60s", // Set lazy block interval to 60 seconds to prevent timer-based block production during test + "--evnode.signer.passphrase", TestPassphrase, "--home", sequencerHome, - "--rollkit.da.address", DAAddress, - "--rollkit.da.block_time", DefaultDABlockTime, + "--evnode.da.address", DAAddress, + "--evnode.da.block_time", DefaultDABlockTime, ) time.Sleep(SlowPollingInterval) @@ -747,12 +756,12 @@ func restartSequencerNode(t *testing.T, sut *SystemUnderTest, sequencerHome, jwt "start", "--evm.jwt-secret", jwtSecret, "--evm.genesis-hash", genesisHash, - "--rollkit.node.block_time", DefaultBlockTime, - "--rollkit.node.aggregator=true", - "--rollkit.signer.passphrase", TestPassphrase, + "--evnode.node.block_time", DefaultBlockTime, + "--evnode.node.aggregator=true", + "--evnode.signer.passphrase", TestPassphrase, "--home", sequencerHome, - "--rollkit.da.address", DAAddress, - "--rollkit.da.block_time", DefaultDABlockTime, + "--evnode.da.address", DAAddress, + "--evnode.da.block_time", DefaultDABlockTime, ) time.Sleep(SlowPollingInterval)