Skip to content

Commit 1ca0a16

Browse files
committed
better init split
1 parent b20dbb5 commit 1ca0a16

File tree

2 files changed

+52
-31
lines changed

2 files changed

+52
-31
lines changed

apps/evm/cmd/run.go

Lines changed: 51 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,28 @@ var RunCmd = &cobra.Command{
5959

6060
tracingEnabled := nodeConfig.Instrumentation.IsTracingEnabled()
6161

62-
executor, err := createExecutionClient(
63-
cmd,
64-
datastore,
65-
tracingEnabled,
66-
logger.With().Str("module", "engine_client").Logger(),
67-
)
68-
if err != nil {
69-
return err
62+
var executor execution.Executor
63+
useGeth, _ := cmd.Flags().GetBool(evm.FlagEVMInProcessGeth)
64+
if useGeth {
65+
executor, err = createGethExecutionClient(
66+
cmd,
67+
datastore,
68+
tracingEnabled,
69+
logger.With().Str("module", "geth_client").Logger(),
70+
)
71+
if err != nil {
72+
return err
73+
}
74+
} else {
75+
executor, err = createRethExecutionClient(
76+
cmd,
77+
datastore,
78+
tracingEnabled,
79+
logger.With().Str("module", "engine_client").Logger(),
80+
)
81+
if err != nil {
82+
return err
83+
}
7084
}
7185

7286
blobClient, err := blobrpc.NewClient(context.Background(), nodeConfig.DA.Address, nodeConfig.DA.AuthToken, "")
@@ -202,34 +216,13 @@ func createSequencer(
202216
return sequencer, nil
203217
}
204218

205-
func createExecutionClient(cmd *cobra.Command, db datastore.Batching, tracingEnabled bool, logger zerolog.Logger) (execution.Executor, error) {
219+
func createRethExecutionClient(cmd *cobra.Command, db datastore.Batching, tracingEnabled bool, logger zerolog.Logger) (execution.Executor, error) {
206220
feeRecipientStr, err := cmd.Flags().GetString(evm.FlagEvmFeeRecipient)
207221
if err != nil {
208222
return nil, fmt.Errorf("failed to get '%s' flag: %w", evm.FlagEvmFeeRecipient, err)
209223
}
210224
feeRecipient := common.HexToAddress(feeRecipientStr)
211225

212-
useGeth, _ := cmd.Flags().GetBool(evm.FlagEVMInProcessGeth)
213-
if useGeth {
214-
genesisPath, _ := cmd.Flags().GetString(evm.FlagEVMGenesisPath)
215-
if len(genesisPath) == 0 {
216-
return nil, fmt.Errorf("genesis path must be provided when using in-process Geth")
217-
}
218-
219-
genesisBz, err := os.ReadFile(genesisPath)
220-
if err != nil {
221-
return nil, fmt.Errorf("failed to read genesis: %w", err)
222-
}
223-
224-
var genesis core.Genesis
225-
if err := json.Unmarshal(genesisBz, &genesis); err != nil {
226-
return nil, fmt.Errorf("failed to unmarshal genesis: %w", err)
227-
}
228-
229-
rpcAddress, _ := cmd.Flags().GetString(evm.FlagEVMRPCAddress)
230-
return evm.NewEngineExecutionClientWithGeth(&genesis, feeRecipient, db, rpcAddress, logger)
231-
}
232-
233226
// Read execution client parameters from flags
234227
ethURL, err := cmd.Flags().GetString(evm.FlagEvmEthURL)
235228
if err != nil {
@@ -272,6 +265,32 @@ func createExecutionClient(cmd *cobra.Command, db datastore.Batching, tracingEna
272265
return evm.NewEngineExecutionClient(ethURL, engineURL, jwtSecret, genesisHash, feeRecipient, db, tracingEnabled, logger)
273266
}
274267

268+
func createGethExecutionClient(cmd *cobra.Command, db datastore.Batching, tracingEnabled bool, logger zerolog.Logger) (execution.Executor, error) {
269+
feeRecipientStr, err := cmd.Flags().GetString(evm.FlagEvmFeeRecipient)
270+
if err != nil {
271+
return nil, fmt.Errorf("failed to get '%s' flag: %w", evm.FlagEvmFeeRecipient, err)
272+
}
273+
feeRecipient := common.HexToAddress(feeRecipientStr)
274+
275+
genesisPath, _ := cmd.Flags().GetString(evm.FlagEVMGenesisPath)
276+
if len(genesisPath) == 0 {
277+
return nil, fmt.Errorf("genesis path must be provided when using in-process Geth")
278+
}
279+
280+
genesisBz, err := os.ReadFile(genesisPath)
281+
if err != nil {
282+
return nil, fmt.Errorf("failed to read genesis: %w", err)
283+
}
284+
285+
var genesis core.Genesis
286+
if err := json.Unmarshal(genesisBz, &genesis); err != nil {
287+
return nil, fmt.Errorf("failed to unmarshal genesis: %w", err)
288+
}
289+
290+
rpcAddress, _ := cmd.Flags().GetString(evm.FlagEVMRPCAddress)
291+
return evm.NewEngineExecutionClientWithGeth(&genesis, feeRecipient, db, rpcAddress, logger)
292+
}
293+
275294
// addFlags adds flags related to the EVM execution client
276295
func addFlags(cmd *cobra.Command) {
277296
cmd.Flags().String(evm.FlagEvmEthURL, "http://localhost:8545", "URL of the Ethereum JSON-RPC endpoint")
@@ -284,4 +303,6 @@ func addFlags(cmd *cobra.Command) {
284303
cmd.Flags().Bool(evm.FlagEVMInProcessGeth, false, "Use in-process Geth for EVM execution instead of external execution client")
285304
cmd.Flags().String(evm.FlagEVMGenesisPath, "", "EVM genesis path for Geth")
286305
cmd.Flags().String(evm.FlagEVMRPCAddress, "", "Address for in-process Geth JSON-RPC server (e.g., 127.0.0.1:8545)")
306+
307+
cmd.MarkFlagsMutuallyExclusive(evm.FlagEVMInProcessGeth, evm.FlagEvmEthURL, evm.FlagEvmEngineURL, evm.FlagEvmJWTSecretFile, evm.FlagEvmGenesisHash)
287308
}

execution/evm/flags.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const (
77
FlagEvmGenesisHash = "evm.genesis-hash"
88
FlagEvmFeeRecipient = "evm.fee-recipient"
99

10-
FlagEVMGenesisPath = "evm.geth.genesis-path"
1110
FlagEVMInProcessGeth = "evm.geth"
11+
FlagEVMGenesisPath = "evm.geth.genesis-path"
1212
FlagEVMRPCAddress = "evm.geth.rpc-address"
1313
)

0 commit comments

Comments
 (0)