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
65 changes: 30 additions & 35 deletions cmd/cartesi-rollups-advancer/root/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import (
"context"

"github.com/cartesi/rollups-node/internal/advancer"
"github.com/cartesi/rollups-node/internal/cli"
"github.com/cartesi/rollups-node/internal/config"
"github.com/cartesi/rollups-node/internal/repository/factory"
"github.com/cartesi/rollups-node/internal/version"
"github.com/cartesi/rollups-node/pkg/service"

"github.com/spf13/cobra"
"github.com/spf13/viper"
)

var (
Expand All @@ -39,38 +39,30 @@ var Cmd = &cobra.Command{
}

func init() {
Cmd.Flags().StringVar(&inspectAddress, "inspect-address", ":10012", "Inspect service address and port")
cobra.CheckErr(viper.BindPFlag(config.INSPECT_ADDRESS, Cmd.Flags().Lookup("inspect-address")))

Cmd.Flags().StringVar(&telemetryAddress, "telemetry-address", ":10002", "Health check and metrics address and port")
cobra.CheckErr(viper.BindPFlag(config.TELEMETRY_ADDRESS, Cmd.Flags().Lookup("telemetry-address")))

Cmd.Flags().StringVar(&logLevel, "log-level", "info", "Log level: debug, info, warn or error")
cobra.CheckErr(viper.BindPFlag(config.LOG_LEVEL, Cmd.Flags().Lookup("log-level")))

Cmd.Flags().BoolVar(&logColor, "log-color", true, "Tint the logs (colored output)")
cobra.CheckErr(viper.BindPFlag(config.LOG_COLOR, Cmd.Flags().Lookup("log-color")))

Cmd.Flags().StringVar(&databaseConnection, "database-connection", "",
"Database connection string in the URL format\n(eg.: 'postgres://user:password@hostname:port/database') ")
cobra.CheckErr(viper.BindPFlag(config.DATABASE_CONNECTION, Cmd.Flags().Lookup("database-connection")))

Cmd.Flags().StringVar(&pollInterval, "poll-interval", "7", "Poll interval")
cobra.CheckErr(viper.BindPFlag(config.ADVANCER_POLLING_INTERVAL, Cmd.Flags().Lookup("poll-interval")))

Cmd.Flags().StringVar(&maxStartupTime, "max-startup-time", "15", "Maximum startup time in seconds")
cobra.CheckErr(viper.BindPFlag(config.MAX_STARTUP_TIME, Cmd.Flags().Lookup("max-startup-time")))

Cmd.Flags().BoolVar(&enableInspect, "inspect-enabled", true, "Enable or disable the inspect service")
cobra.CheckErr(viper.BindPFlag(config.FEATURE_INSPECT_ENABLED, Cmd.Flags().Lookup("inspect-enabled")))

Cmd.Flags().BoolVar(&enableMachineHashCheck, "machine-hash-check", true,
flags := Cmd.Flags()

config.SetDefaults()

cli.AddFlagStrVar(flags, &inspectAddress, "inspect-address", config.INSPECT_ADDRESS,
"Inspect service address and port")
cli.AddFlagStrVar(flags, &telemetryAddress, "telemetry-address", config.ADVANCER_TELEMETRY_ADDRESS,
"Health check and metrics address and port")
cli.AddFlagStrVar(flags, &logLevel, "log-level", config.LOG_LEVEL,
"Log level: debug, info, warn or error")
cli.AddFlagBoolVar(flags, &logColor, "log-color", config.LOG_COLOR,
"Tint the logs (colored output)")
cli.AddFlagStrVar(flags, &databaseConnection, "database-connection", config.DATABASE_CONNECTION,
"Database connection string in the URL format")
cli.AddFlagStrVar(flags, &pollInterval, "poll-interval", config.ADVANCER_POLLING_INTERVAL,
"Poll interval")
cli.AddFlagStrVar(flags, &maxStartupTime, "max-startup-time", config.MAX_STARTUP_TIME,
"Maximum startup time in seconds")
cli.AddFlagBoolVar(flags, &enableInspect, "inspect-enabled", config.FEATURE_INSPECT_ENABLED,
"Enable or disable the inspect service")
cli.AddFlagBoolVar(flags, &enableMachineHashCheck, "machine-hash-check", config.FEATURE_MACHINE_HASH_CHECK_ENABLED,
"Enable or disable machine hash check (DO NOT USE IN PRODUCTION)")
cobra.CheckErr(viper.BindPFlag(config.FEATURE_MACHINE_HASH_CHECK_ENABLED, Cmd.Flags().Lookup("machine-hash-check")))

Cmd.Flags().StringVar(&machinelogLevel, "machine-log-level", "info",
cli.AddFlagStrVar(flags, &machinelogLevel, "machine-log-level", config.JSONRPC_MACHINE_LOG_LEVEL,
"Remote Machine log level: trace, debug, info, warning, error, fatal")
cobra.CheckErr(viper.BindPFlag(config.JSONRPC_MACHINE_LOG_LEVEL, Cmd.Flags().Lookup("machine-log-level")))

// TODO: validate on preRunE
Cmd.PreRunE = func(cmd *cobra.Command, args []string) error {
Expand All @@ -94,19 +86,22 @@ func run(cmd *cobra.Command, args []string) {
LogColor: cfg.LogColor,
EnableSignalHandling: true,
TelemetryCreate: true,
TelemetryAddress: cfg.TelemetryAddress,
TelemetryAddress: cfg.AdvancerTelemetryAddress,
PollInterval: cfg.AdvancerPollingInterval,
},
Config: *cfg,
}
logger := service.NewServiceLogger(&createInfo.CreateInfo)
createInfo.CreateInfo.Logger = logger

var err error
createInfo.Repository, err = factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
cobra.CheckErr(err)
cli.CheckErr(logger, err)
defer createInfo.Repository.Close()

advancerService, err := advancer.Create(ctx, &createInfo)
cobra.CheckErr(err)
cli.CheckErr(logger, err)
advancerService.LogConfig(createInfo.Config)

cobra.CheckErr(advancerService.Serve())
cli.CheckErr(logger, advancerService.Serve())
}
68 changes: 30 additions & 38 deletions cmd/cartesi-rollups-claimer/root/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ import (
"context"

"github.com/cartesi/rollups-node/internal/claimer"
"github.com/cartesi/rollups-node/internal/cli"
"github.com/cartesi/rollups-node/internal/config"
"github.com/cartesi/rollups-node/internal/repository/factory"
"github.com/cartesi/rollups-node/internal/version"
"github.com/cartesi/rollups-node/pkg/ethutil"
"github.com/cartesi/rollups-node/pkg/service"

"github.com/spf13/cobra"
"github.com/spf13/viper"
)

var (
Expand All @@ -40,38 +40,30 @@ var Cmd = &cobra.Command{
}

func init() {
Cmd.Flags().StringVarP(&defaultBlockString, "default-block", "d", "finalized",
"Default block to be used when fetching new blocks.\nOne of 'latest', 'safe', 'pending', 'finalized'")
cobra.CheckErr(viper.BindPFlag(config.BLOCKCHAIN_DEFAULT_BLOCK, Cmd.Flags().Lookup("default-block")))

Cmd.Flags().StringVar(&telemetryAddress, "telemetry-address", ":10004", "Health check and metrics address and port")
cobra.CheckErr(viper.BindPFlag(config.TELEMETRY_ADDRESS, Cmd.Flags().Lookup("telemetry-address")))

Cmd.Flags().StringVar(&logLevel, "log-level", "info", "Log level: debug, info, warn or error")
cobra.CheckErr(viper.BindPFlag(config.LOG_LEVEL, Cmd.Flags().Lookup("log-level")))
flags := Cmd.Flags()

Cmd.Flags().BoolVar(&logColor, "log-color", true, "tint the logs (colored output)")
cobra.CheckErr(viper.BindPFlag(config.LOG_COLOR, Cmd.Flags().Lookup("log-color")))
config.SetDefaults()

Cmd.Flags().StringVar(&databaseConnection, "database-connection", "",
cli.AddFlagStrVarP(flags, &defaultBlockString, "default-block", "d", config.BLOCKCHAIN_DEFAULT_BLOCK,
"Default block to be used when fetching new blocks.\nOne of 'latest', 'safe', 'pending', 'finalized'")
cli.AddFlagStrVar(flags, &telemetryAddress, "telemetry-address", config.CLAIMER_TELEMETRY_ADDRESS,
"Health check and metrics address and port")
cli.AddFlagStrVar(flags, &logLevel, "log-level", config.LOG_LEVEL,
"Log level: debug, info, warn or error")
cli.AddFlagBoolVar(flags, &logColor, "log-color", config.LOG_COLOR,
"tint the logs (colored output)")
cli.AddFlagStrVar(flags, &databaseConnection, "database-connection", config.DATABASE_CONNECTION,
"Database connection string in the URL format\n(eg.: 'postgres://user:password@hostname:port/database') ")
cobra.CheckErr(viper.BindPFlag(config.DATABASE_CONNECTION, Cmd.Flags().Lookup("database-connection")))

Cmd.Flags().StringVar(&blockchainHttpEndpoint, "blockchain-http-endpoint", "", "Blockchain http endpoint")
cobra.CheckErr(viper.BindPFlag(config.BLOCKCHAIN_HTTP_ENDPOINT, Cmd.Flags().Lookup("blockchain-http-endpoint")))

Cmd.Flags().StringVar(&pollInterval, "poll-interval", "7", "Poll interval")
cobra.CheckErr(viper.BindPFlag(config.CLAIMER_POLLING_INTERVAL, Cmd.Flags().Lookup("poll-interval")))

Cmd.Flags().StringVar(&maxStartupTime, "max-startup-time", "15", "Maximum startup time in seconds")
cobra.CheckErr(viper.BindPFlag(config.MAX_STARTUP_TIME, Cmd.Flags().Lookup("max-startup-time")))

Cmd.Flags().BoolVar(&enableSubmission, "claim-submission", true, "Enable or disable claim submission (reader mode)")
cobra.CheckErr(viper.BindPFlag(config.FEATURE_CLAIM_SUBMISSION_ENABLED, Cmd.Flags().Lookup("claim-submission")))

Cmd.Flags().Uint64Var(&maxBlockRange, "max-block-range", 0,
cli.AddFlagStrVar(flags, &blockchainHttpEndpoint, "blockchain-http-endpoint", config.BLOCKCHAIN_HTTP_ENDPOINT,
"Blockchain http endpoint")
cli.AddFlagStrVar(flags, &pollInterval, "poll-interval", config.CLAIMER_POLLING_INTERVAL,
"Poll interval")
cli.AddFlagStrVar(flags, &maxStartupTime, "max-startup-time", config.MAX_STARTUP_TIME,
"Maximum startup time in seconds")
cli.AddFlagBoolVar(flags, &enableSubmission, "claim-submission", config.FEATURE_CLAIM_SUBMISSION_ENABLED,
"Enable or disable claim submission (reader mode)")
cli.AddFlagUint64Var(flags, &maxBlockRange, "max-block-range", config.BLOCKCHAIN_MAX_BLOCK_RANGE,
"Maximum number of blocks in a single query. large queries will be split automatically. Zero for unlimited.")
cobra.CheckErr(viper.BindPFlag(config.BLOCKCHAIN_MAX_BLOCK_RANGE, Cmd.Flags().Lookup("max-block-range")))

// TODO: validate on preRunE
Cmd.PreRunE = func(cmd *cobra.Command, args []string) error {
Expand All @@ -88,40 +80,40 @@ func run(cmd *cobra.Command, args []string) {
ctx, cancel := context.WithTimeout(context.Background(), cfg.MaxStartupTime)
defer cancel()

logLevel := config.ResolveServiceLogLevel(config.ServiceClaimer, cfg.LogLevel)
createInfo := claimer.CreateInfo{
CreateInfo: service.CreateInfo{
Name: config.ServiceClaimer,
LogLevel: logLevel,
LogLevel: config.ResolveServiceLogLevel(config.ServiceClaimer, cfg.LogLevel),
LogColor: cfg.LogColor,
EnableSignalHandling: true,
TelemetryCreate: true,
TelemetryAddress: cfg.TelemetryAddress,
TelemetryAddress: cfg.ClaimerTelemetryAddress,
PollInterval: cfg.ClaimerPollingInterval,
},
Config: *cfg,
}
logger := service.NewServiceLogger(&createInfo.CreateInfo)
createInfo.CreateInfo.Logger = logger

logger := service.NewLogger(logLevel, cfg.LogColor).With("service", config.ServiceClaimer)
authOpt, err := config.HTTPAuthorizationOption()
cobra.CheckErr(err)
cli.CheckErr(logger, err)
createInfo.EthConn, err = ethutil.NewEthClient(
ctx, cfg.BlockchainHttpEndpoint.Raw(), logger,
ethutil.RetryConfig{
MaxRetries: cfg.BlockchainHttpMaxRetries,
RetryMinWait: cfg.BlockchainHttpRetryMinWait,
RetryMaxWait: cfg.BlockchainHttpRetryMaxWait,
}, authOpt)
cobra.CheckErr(err)
cli.CheckErr(logger, err)

createInfo.Repository, err = factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
cobra.CheckErr(err)
cli.CheckErr(logger, err)
defer createInfo.Repository.Close()

claimerService, err := claimer.Create(ctx, &createInfo)
cobra.CheckErr(err)
cli.CheckErr(logger, err)
claimerService.LogConfig(createInfo.Config)

err = claimerService.Serve()
cobra.CheckErr(err)
cli.CheckErr(logger, err)
}
70 changes: 31 additions & 39 deletions cmd/cartesi-rollups-evm-reader/root/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ package root
import (
"context"

"github.com/cartesi/rollups-node/internal/cli"
"github.com/cartesi/rollups-node/internal/config"
"github.com/cartesi/rollups-node/internal/evmreader"
"github.com/cartesi/rollups-node/internal/repository/factory"
Expand All @@ -15,7 +16,6 @@ import (
"github.com/ethereum/go-ethereum/ethclient"

"github.com/spf13/cobra"
"github.com/spf13/viper"
)

var (
Expand All @@ -41,38 +41,30 @@ var Cmd = &cobra.Command{
}

func init() {
Cmd.Flags().StringVarP(&defaultBlockString, "default-block", "d", "finalized",
"Default block to be used when fetching new blocks.\nOne of 'latest', 'safe', 'pending', 'finalized'")
cobra.CheckErr(viper.BindPFlag(config.BLOCKCHAIN_DEFAULT_BLOCK, Cmd.Flags().Lookup("default-block")))

Cmd.Flags().StringVar(&telemetryAddress, "telemetry-address", ":10001", "Health check and metrics address and port")
cobra.CheckErr(viper.BindPFlag(config.TELEMETRY_ADDRESS, Cmd.Flags().Lookup("telemetry-address")))

Cmd.Flags().StringVar(&logLevel, "log-level", "info", "Log level: debug, info, warn or error")
cobra.CheckErr(viper.BindPFlag(config.LOG_LEVEL, Cmd.Flags().Lookup("log-level")))
flags := Cmd.Flags()

Cmd.Flags().BoolVar(&logColor, "log-color", true, "Tint the logs (colored output)")
cobra.CheckErr(viper.BindPFlag(config.LOG_COLOR, Cmd.Flags().Lookup("log-color")))
config.SetDefaults()

Cmd.Flags().StringVar(&databaseConnection, "database-connection", "",
cli.AddFlagStrVarP(flags, &defaultBlockString, "default-block", "d", config.BLOCKCHAIN_DEFAULT_BLOCK,
"Default block to be used when fetching new blocks.\nOne of 'latest', 'safe', 'pending', 'finalized'")
cli.AddFlagStrVar(flags, &telemetryAddress, "telemetry-address", config.EVM_READER_TELEMETRY_ADDRESS,
"Health check and metrics address and port")
cli.AddFlagStrVar(flags, &logLevel, "log-level", config.LOG_LEVEL,
"Log level: debug, info, warn or error")
cli.AddFlagBoolVar(flags, &logColor, "log-color", config.LOG_COLOR,
"Tint the logs (colored output)")
cli.AddFlagStrVar(flags, &databaseConnection, "database-connection", config.DATABASE_CONNECTION,
"Database connection string in the URL format\n(eg.: 'postgres://user:password@hostname:port/database') ")
cobra.CheckErr(viper.BindPFlag(config.DATABASE_CONNECTION, Cmd.Flags().Lookup("database-connection")))

Cmd.Flags().StringVar(&blockchainHttpEndpoint, "blockchain-http-endpoint", "", "Blockchain http endpoint")
cobra.CheckErr(viper.BindPFlag(config.BLOCKCHAIN_HTTP_ENDPOINT, Cmd.Flags().Lookup("blockchain-http-endpoint")))

Cmd.Flags().StringVar(&blockchainWsEndpoint, "blockchain-ws-endpoint", "", "Blockchain WS Endpoint")
cobra.CheckErr(viper.BindPFlag(config.BLOCKCHAIN_WS_ENDPOINT, Cmd.Flags().Lookup("blockchain-ws-endpoint")))

Cmd.Flags().StringVar(&maxStartupTime, "max-startup-time", "15", "Maximum startup time in seconds")
cobra.CheckErr(viper.BindPFlag(config.MAX_STARTUP_TIME, Cmd.Flags().Lookup("max-startup-time")))

Cmd.Flags().BoolVar(&enableInputReader, "input-reader", true, "Enable or disable the input reader (for external input readers)")
cobra.CheckErr(viper.BindPFlag(config.FEATURE_INPUT_READER_ENABLED, Cmd.Flags().Lookup("input-reader")))

Cmd.Flags().Uint64Var(&maxBlockRange, "max-block-range", 0,
cli.AddFlagStrVar(flags, &blockchainHttpEndpoint, "blockchain-http-endpoint", config.BLOCKCHAIN_HTTP_ENDPOINT,
"Blockchain http endpoint")
cli.AddFlagStrVar(flags, &blockchainWsEndpoint, "blockchain-ws-endpoint", config.BLOCKCHAIN_WS_ENDPOINT,
"Blockchain WS Endpoint")
cli.AddFlagStrVar(flags, &maxStartupTime, "max-startup-time", config.MAX_STARTUP_TIME,
"Maximum startup time in seconds")
cli.AddFlagBoolVar(flags, &enableInputReader, "input-reader", config.FEATURE_INPUT_READER_ENABLED,
"Enable or disable the input reader (for external input readers)")
cli.AddFlagUint64Var(flags, &maxBlockRange, "max-block-range", config.BLOCKCHAIN_MAX_BLOCK_RANGE,
"Maximum number of blocks in a single query. large queries will be split automatically. Zero for unlimited.")
cobra.CheckErr(viper.BindPFlag(config.BLOCKCHAIN_MAX_BLOCK_RANGE, Cmd.Flags().Lookup("max-block-range")))

// TODO: validate on preRunE
Cmd.PreRunE = func(cmd *cobra.Command, args []string) error {
Expand All @@ -89,43 +81,43 @@ func run(cmd *cobra.Command, args []string) {
ctx, cancel := context.WithTimeout(context.Background(), cfg.MaxStartupTime)
defer cancel()

logLevel := config.ResolveServiceLogLevel(config.ServiceEvmReader, cfg.LogLevel)
createInfo := evmreader.CreateInfo{
CreateInfo: service.CreateInfo{
Name: config.ServiceEvmReader,
LogLevel: logLevel,
LogLevel: config.ResolveServiceLogLevel(config.ServiceEvmReader, cfg.LogLevel),
LogColor: cfg.LogColor,
EnableSignalHandling: true,
TelemetryCreate: true,
TelemetryAddress: cfg.TelemetryAddress,
TelemetryAddress: cfg.EvmReaderTelemetryAddress,
},
Config: *cfg,
}
logger := service.NewServiceLogger(&createInfo.CreateInfo)
createInfo.CreateInfo.Logger = logger

var err error
logger := service.NewLogger(logLevel, cfg.LogColor).With("service", config.ServiceEvmReader)
authOpt, err := config.HTTPAuthorizationOption()
cobra.CheckErr(err)
cli.CheckErr(logger, err)
createInfo.EthClient, err = ethutil.NewEthClient(
ctx, cfg.BlockchainHttpEndpoint.Raw(), logger,
ethutil.RetryConfig{
MaxRetries: cfg.BlockchainHttpMaxRetries,
RetryMinWait: cfg.BlockchainHttpRetryMinWait,
RetryMaxWait: cfg.BlockchainHttpRetryMaxWait,
}, authOpt)
cobra.CheckErr(err)
cli.CheckErr(logger, err)

wsEndpoint := cfg.BlockchainWsEndpoint.Raw()
createInfo.EthWsClient, err = ethclient.DialContext(ctx, wsEndpoint)
cobra.CheckErr(ethutil.RedactEndpointFromError(err, wsEndpoint))
cli.CheckErr(logger, ethutil.RedactEndpointFromError(err, wsEndpoint))

createInfo.Repository, err = factory.NewRepositoryFromConnectionString(ctx, cfg.DatabaseConnection.Raw())
cobra.CheckErr(err)
cli.CheckErr(logger, err)
defer createInfo.Repository.Close()

readerService, err := evmreader.Create(ctx, &createInfo)
cobra.CheckErr(err)
cli.CheckErr(logger, err)
readerService.LogConfig(createInfo.Config)

cobra.CheckErr(readerService.Serve())
cli.CheckErr(logger, readerService.Serve())
}
Loading
Loading