Skip to content

Commit

Permalink
remove ejector from dataapi
Browse files Browse the repository at this point in the history
  • Loading branch information
ian-shim committed Jul 9, 2024
1 parent 3759e17 commit d967115
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 359 deletions.
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

0 comments on commit d967115

Please sign in to comment.