Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove ejector from dataapi #633

Merged
merged 1 commit into from
Jul 16, 2024
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
23 changes: 1 addition & 22 deletions disperser/cmd/dataapi/config.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package main

import (
"errors"
"time"

"github.com/Layr-Labs/eigenda/common"
"github.com/Layr-Labs/eigenda/common/aws"
"github.com/Layr-Labs/eigenda/common/geth"
Expand All @@ -18,7 +15,6 @@ type Config struct {
AwsClientConfig aws.ClientConfig
BlobstoreConfig blobstore.Config
EthClientConfig geth.EthClientConfig
FireblocksConfig common.FireblocksConfig
LoggerConfig common.LoggerConfig
PrometheusConfig prometheus.Config
MetricsConfig dataapi.MetricsConfig
Expand All @@ -29,41 +25,28 @@ type Config struct {
SubgraphApiOperatorStateAddr string
ServerMode string
AllowOrigins []string
EjectionToken string
NonsigningRateThreshold int

BLSOperatorStateRetrieverAddr string
EigenDAServiceManagerAddr string

DisperserHostname string
ChurnerHostname string
BatcherHealthEndpt string

TxnTimeout time.Duration
}

func NewConfig(ctx *cli.Context) (Config, error) {
loggerConfig, err := common.ReadLoggerCLIConfig(ctx, flags.FlagPrefix)
if err != nil {
return Config{}, err
}
ejectionToken := ctx.GlobalString(flags.EjectionTokenFlag.Name)
if len(ejectionToken) < 20 {
return Config{}, errors.New("the ejection token length must be at least 20")
}
ethClientConfig := geth.ReadEthClientConfig(ctx)
fireblocksConfig := common.ReadFireblocksCLIConfig(ctx, flags.FlagPrefix)
if !fireblocksConfig.Disable {
ethClientConfig = geth.ReadEthClientConfigRPCOnly(ctx)
}
config := Config{
BlobstoreConfig: blobstore.Config{
BucketName: ctx.GlobalString(flags.S3BucketNameFlag.Name),
TableName: ctx.GlobalString(flags.DynamoTableNameFlag.Name),
},
AwsClientConfig: aws.ReadClientConfig(ctx, flags.FlagPrefix),
EthClientConfig: ethClientConfig,
FireblocksConfig: fireblocksConfig,
LoggerConfig: *loggerConfig,
SocketAddr: ctx.GlobalString(flags.SocketAddrFlag.Name),
SubgraphApiBatchMetadataAddr: ctx.GlobalString(flags.SubgraphApiBatchMetadataAddrFlag.Name),
Expand All @@ -77,9 +60,7 @@ func NewConfig(ctx *cli.Context) (Config, error) {
Secret: ctx.GlobalString(flags.PrometheusServerSecretFlag.Name),
Cluster: ctx.GlobalString(flags.PrometheusMetricsClusterLabelFlag.Name),
},
AllowOrigins: ctx.GlobalStringSlice(flags.AllowOriginsFlag.Name),
EjectionToken: ejectionToken,
NonsigningRateThreshold: ctx.GlobalInt(flags.NonsigningRateThresholdFlag.Name),
AllowOrigins: ctx.GlobalStringSlice(flags.AllowOriginsFlag.Name),

MetricsConfig: dataapi.MetricsConfig{
HTTPPort: ctx.GlobalString(flags.MetricsHTTPPort.Name),
Expand All @@ -88,8 +69,6 @@ func NewConfig(ctx *cli.Context) (Config, error) {
DisperserHostname: ctx.GlobalString(flags.DisperserHostnameFlag.Name),
ChurnerHostname: ctx.GlobalString(flags.ChurnerHostnameFlag.Name),
BatcherHealthEndpt: ctx.GlobalString(flags.BatcherHealthEndptFlag.Name),

TxnTimeout: ctx.GlobalDuration(flags.TxnTimeoutFlag.Name),
}
return config, nil
}
26 changes: 0 additions & 26 deletions disperser/cmd/dataapi/flags/flags.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package flags

import (
"time"

"github.com/Layr-Labs/eigenda/common"
"github.com/Layr-Labs/eigenda/common/aws"
"github.com/Layr-Labs/eigenda/common/geth"
Expand Down Expand Up @@ -97,12 +95,6 @@ var (
EnvVar: common.PrefixEnvVar(envVarPrefix, "ALLOW_ORIGINS"),
Required: true,
}
EjectionTokenFlag = cli.StringFlag{
Name: common.PrefixFlag(FlagPrefix, "ejection-token"),
Usage: "The token used for authorizing the ejection requests",
Required: true,
EnvVar: common.PrefixEnvVar(envVarPrefix, "EJECTION_TOKEN"),
}
EnableMetricsFlag = cli.BoolFlag{
Name: common.PrefixFlag(FlagPrefix, "enable-metrics"),
Usage: "start metrics server",
Expand Down Expand Up @@ -139,20 +131,6 @@ var (
Value: "9100",
EnvVar: common.PrefixEnvVar(envVarPrefix, "METRICS_HTTP_PORT"),
}
TxnTimeoutFlag = cli.DurationFlag{
Name: common.PrefixFlag(FlagPrefix, "txn-timeout"),
Usage: "the timeout for the transaction",
Required: false,
Value: 6 * time.Minute,
EnvVar: common.PrefixEnvVar(envVarPrefix, "TRANSACTION_TIMEOUT"),
}
NonsigningRateThresholdFlag = cli.IntFlag{
Name: common.PrefixFlag(FlagPrefix, "nonsigning-rate-threshold"),
Usage: "only operators with nonsigning rate >= this threshold are eligible for ejection, this value must be in range [10, 100], any value not in this range means disabling this flag",
Required: false,
Value: -1,
EnvVar: common.PrefixEnvVar(envVarPrefix, "NONSIGNING_RATE_THRESHOLD"),
}
)

var requiredFlags = []cli.Flag{
Expand All @@ -168,18 +146,15 @@ var requiredFlags = []cli.Flag{
PrometheusServerSecretFlag,
PrometheusMetricsClusterLabelFlag,
AllowOriginsFlag,
EjectionTokenFlag,
EnableMetricsFlag,
DisperserHostnameFlag,
ChurnerHostnameFlag,
BatcherHealthEndptFlag,
TxnTimeoutFlag,
}

var optionalFlags = []cli.Flag{
ServerModeFlag,
MetricsHTTPPort,
NonsigningRateThresholdFlag,
}

// Flags contains the list of configuration options available to the binary.
Expand All @@ -189,6 +164,5 @@ func init() {
Flags = append(requiredFlags, optionalFlags...)
Flags = append(Flags, common.LoggerCLIFlags(envVarPrefix, FlagPrefix)...)
Flags = append(Flags, geth.EthClientFlags(envVarPrefix)...)
Flags = append(Flags, common.FireblocksCLIFlags(envVarPrefix, FlagPrefix)...)
Flags = append(Flags, aws.ClientFlags(envVarPrefix, FlagPrefix)...)
}
48 changes: 1 addition & 47 deletions disperser/cmd/dataapi/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package main

import (
"context"
"errors"
"fmt"
"log"
"os"
Expand All @@ -19,13 +18,8 @@ import (
"github.com/Layr-Labs/eigenda/disperser/dataapi"
"github.com/Layr-Labs/eigenda/disperser/dataapi/prometheus"
"github.com/Layr-Labs/eigenda/disperser/dataapi/subgraph"
"github.com/Layr-Labs/eigenda/operators/ejector"
walletsdk "github.com/Layr-Labs/eigensdk-go/chainio/clients/wallet"
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/Layr-Labs/eigensdk-go/signerv2"

gethcommon "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
"github.com/urfave/cli"
)

Expand Down Expand Up @@ -83,12 +77,7 @@ func RunDataApi(ctx *cli.Context) error {
return err
}

sender := gethcommon.Address{}
if !config.FireblocksConfig.Disable {
sender = gethcommon.HexToAddress(config.FireblocksConfig.WalletAddress)
}

client, err := geth.NewMultiHomingClient(config.EthClientConfig, sender, logger)
client, err := geth.NewMultiHomingClient(config.EthClientConfig, gethcommon.Address{}, logger)
if err != nil {
return err
}
Expand All @@ -98,10 +87,6 @@ func RunDataApi(ctx *cli.Context) error {
return err
}

wallet, err := getWallet(config, client, logger)
if err != nil {
return err
}
var (
promClient = dataapi.NewPrometheusClient(promApi, config.PrometheusConfig.Cluster)
blobMetadataStore = blobstore.NewBlobMetadataStore(dynamoClient, logger, config.BlobstoreConfig.TableName, 0)
Expand All @@ -115,7 +100,6 @@ func RunDataApi(ctx *cli.Context) error {
ServerMode: config.ServerMode,
SocketAddr: config.SocketAddr,
AllowOrigins: config.AllowOrigins,
EjectionToken: config.EjectionToken,
DisperserHostname: config.DisperserHostname,
ChurnerHostname: config.ChurnerHostname,
BatcherHealthEndpt: config.BatcherHealthEndpt,
Expand All @@ -125,7 +109,6 @@ func RunDataApi(ctx *cli.Context) error {
subgraphClient,
tx,
chainState,
ejector.NewEjector(wallet, client, logger, tx, metrics.EjectorMetrics, config.TxnTimeout, config.NonsigningRateThreshold),
logger,
metrics,
nil,
Expand Down Expand Up @@ -164,32 +147,3 @@ func RunDataApi(ctx *cli.Context) error {

return err
}

func getWallet(config Config, ethClient common.EthClient, logger logging.Logger) (walletsdk.Wallet, error) {
var wallet walletsdk.Wallet
if !config.FireblocksConfig.Disable {
return common.NewFireblocksWallet(&config.FireblocksConfig, ethClient, logger)
} else if len(config.EthClientConfig.PrivateKeyString) > 0 {
privateKey, err := crypto.HexToECDSA(config.EthClientConfig.PrivateKeyString)
if err != nil {
return nil, fmt.Errorf("failed to parse private key: %w", err)
}
chainID, err := ethClient.ChainID(context.Background())
if err != nil {
return nil, fmt.Errorf("failed to get chain ID: %w", err)
}
signerV2, address, err := signerv2.SignerFromConfig(signerv2.Config{PrivateKey: privateKey}, chainID)
if err != nil {
return nil, err
}
wallet, err = walletsdk.NewPrivateKeyWallet(ethClient, signerV2, address, logger.With("component", "PrivateKeyWallet"))
if err != nil {
return nil, err
}
logger.Info("Initialized PrivateKey wallet", "address", address.Hex())
} else {
return nil, errors.New("no wallet is configured. Either Fireblocks or PrivateKey wallet should be configured")
}

return wallet, nil
}
1 change: 0 additions & 1 deletion disperser/dataapi/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,4 @@ type Config struct {
DisperserHostname string
ChurnerHostname string
BatcherHealthEndpt string
EjectionToken string
}
65 changes: 0 additions & 65 deletions disperser/dataapi/docs/docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,63 +15,6 @@ const docTemplate = `{
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/ejector/operators": {
"post": {
"produces": [
"application/json"
],
"tags": [
"Ejector"
],
"summary": "Eject operators who violate the SLAs during the given time interval",
"parameters": [
{
"type": "integer",
"description": "Lookback window for operator ejection [default: 86400]",
"name": "interval",
"in": "query"
},
{
"type": "integer",
"description": "End time for evaluating operator ejection [default: now]",
"name": "end",
"in": "query"
},
{
"type": "string",
"description": "Whether it's periodic or urgent ejection request [default: periodic]",
"name": "mode",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dataapi.EjectionResponse"
}
},
"400": {
"description": "error: Bad request",
"schema": {
"$ref": "#/definitions/dataapi.ErrorResponse"
}
},
"404": {
"description": "error: Not found",
"schema": {
"$ref": "#/definitions/dataapi.ErrorResponse"
}
},
"500": {
"description": "error: Server error",
"schema": {
"$ref": "#/definitions/dataapi.ErrorResponse"
}
}
}
}
},
"/feed/blobs": {
"get": {
"produces": [
Expand Down Expand Up @@ -702,14 +645,6 @@ const docTemplate = `{
}
}
},
"dataapi.EjectionResponse": {
"type": "object",
"properties": {
"transaction_hash": {
"type": "string"
}
}
},
"dataapi.ErrorResponse": {
"type": "object",
"properties": {
Expand Down
13 changes: 5 additions & 8 deletions disperser/dataapi/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"github.com/Layr-Labs/eigenda/disperser"
"github.com/Layr-Labs/eigenda/disperser/common/blobstore"
"github.com/Layr-Labs/eigenda/operators/ejector"
"github.com/Layr-Labs/eigensdk-go/logging"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/collectors"
Expand All @@ -23,9 +22,8 @@ type MetricsConfig struct {
type Metrics struct {
registry *prometheus.Registry

NumRequests *prometheus.CounterVec
Latency *prometheus.SummaryVec
EjectorMetrics *ejector.Metrics
NumRequests *prometheus.CounterVec
Latency *prometheus.SummaryVec

httpPort string
logger logging.Logger
Expand Down Expand Up @@ -55,10 +53,9 @@ func NewMetrics(blobMetadataStore *blobstore.BlobMetadataStore, httpPort string,
},
[]string{"method"},
),
EjectorMetrics: ejector.NewMetrics(reg, logger),
registry: reg,
httpPort: httpPort,
logger: logger.With("component", "DataAPIMetrics"),
registry: reg,
httpPort: httpPort,
logger: logger.With("component", "DataAPIMetrics"),
}
return metrics
}
Expand Down
Loading
Loading