From 16f2d5f5ff804e31903e202ab8f7b06201bcde1b Mon Sep 17 00:00:00 2001 From: Teddy Knox Date: Tue, 28 May 2024 19:32:51 -0400 Subject: [PATCH 1/6] Use high-level EigenDA client for EigenDA disperser interaction --- cmd/server/entrypoint.go | 11 ++- eigenda/client.go | 191 --------------------------------------- eigenda/config.go | 114 ++++++++++++++--------- go.mod | 36 +++++--- go.sum | 176 ++++++++++++++++++++++++++++++------ store/eigenda.go | 18 +++- test/e2e_test.go | 17 +++- verify/verify_test.go | 11 ++- 8 files changed, 281 insertions(+), 293 deletions(-) delete mode 100644 eigenda/client.go diff --git a/cmd/server/entrypoint.go b/cmd/server/entrypoint.go index f32b6fd3..5c7cbd9e 100644 --- a/cmd/server/entrypoint.go +++ b/cmd/server/entrypoint.go @@ -4,10 +4,10 @@ import ( "context" "fmt" - "github.com/Layr-Labs/eigenda-proxy/eigenda" "github.com/Layr-Labs/eigenda-proxy/metrics" "github.com/Layr-Labs/eigenda-proxy/store" "github.com/Layr-Labs/eigenda-proxy/verify" + "github.com/Layr-Labs/eigenda/api/clients" "github.com/ethereum/go-ethereum/log" "github.com/urfave/cli/v2" @@ -30,12 +30,13 @@ func LoadStore(cfg CLIConfig, ctx context.Context, log log.Logger) (proxy.Store, return nil, err } + client, err := clients.NewEigenDAClient(log, daCfg.ClientConfig) + if err != nil { + return nil, err + } return store.NewEigenDAStore( ctx, - eigenda.NewEigenDAClient( - log, - daCfg, - ), + client, v, ) } diff --git a/eigenda/client.go b/eigenda/client.go deleted file mode 100644 index 5170fdff..00000000 --- a/eigenda/client.go +++ /dev/null @@ -1,191 +0,0 @@ -package eigenda - -import ( - "bytes" - "context" - "crypto/tls" - "encoding/base64" - "encoding/binary" - "encoding/hex" - "fmt" - "time" - - "github.com/Layr-Labs/eigenda/api/grpc/disperser" - "github.com/Layr-Labs/eigenda/encoding/utils/codec" - "github.com/ethereum/go-ethereum/log" - "google.golang.org/grpc" - "google.golang.org/grpc/credentials" - "google.golang.org/grpc/credentials/insecure" -) - -// Useful to distinguish between plain calldata and alt-da blob refs -// Support seamless migration of existing rollups using ETH DA -const DerivationVersionEigenda = 0xed - -type IEigenDA interface { - RetrieveBlob(ctx context.Context, BatchHeaderHash []byte, BlobIndex uint32) ([]byte, error) - DisperseBlob(ctx context.Context, txData []byte) (*disperser.BlobInfo, error) -} - -type EigenDAClient struct { - Config - - Log log.Logger -} - -func NewEigenDAClient(log log.Logger, config Config) *EigenDAClient { - return &EigenDAClient{ - Log: log, - Config: config, - } -} - -func (m *EigenDAClient) getConnection() (*grpc.ClientConn, error) { - if m.UseTLS { - config := &tls.Config{} // #nosec G402 - credential := credentials.NewTLS(config) - dialOptions := []grpc.DialOption{grpc.WithTransportCredentials(credential)} - return grpc.Dial(m.RPC, dialOptions...) - } - - return grpc.Dial(m.RPC, grpc.WithTransportCredentials(insecure.NewCredentials())) -} - -func (m *EigenDAClient) RetrieveBlob(ctx context.Context, BatchHeaderHash []byte, BlobIndex uint32) ([]byte, error) { - m.Log.Info("Attempting to retrieve blob from EigenDA") - conn, err := m.getConnection() - if err != nil { - return nil, err - } - daClient := disperser.NewDisperserClient(conn) - - reply, err := daClient.RetrieveBlob(ctx, &disperser.RetrieveBlobRequest{ - BatchHeaderHash: BatchHeaderHash, - BlobIndex: BlobIndex, - }) - if err != nil { - return nil, err - } - - return DecodeFromBlob(reply.Data) -} - -func (m *EigenDAClient) DisperseBlob(ctx context.Context, data []byte) (*Cert, error) { - m.Log.Info("Attempting to disperse blob to EigenDA") - conn, err := m.getConnection() - if err != nil { - return nil, err - } - daClient := disperser.NewDisperserClient(conn) - - data = EncodeToBlob(data) - - disperseReq := &disperser.DisperseBlobRequest{ - Data: data, - } - disperseRes, err := daClient.DisperseBlob(ctx, disperseReq) - - if err != nil || disperseRes == nil { - m.Log.Error("Unable to disperse blob to EigenDA, aborting", "err", err) - return nil, err - } - - if disperseRes.Result == disperser.BlobStatus_UNKNOWN || - disperseRes.Result == disperser.BlobStatus_FAILED { - m.Log.Error("Unable to disperse blob to EigenDA, aborting", "err", err) - return nil, fmt.Errorf("reply status is %d", disperseRes.Result) - } - - base64RequestID := base64.StdEncoding.EncodeToString(disperseRes.RequestId) - - m.Log.Info("Blob dispersed to EigenDA, now waiting for confirmation", "requestID", base64RequestID) - - timeoutTime := time.Now().Add(m.StatusQueryTimeout) - ticker := time.NewTicker(m.StatusQueryRetryInterval) - defer ticker.Stop() - for { - select { - case <-ctx.Done(): - return nil, ctx.Err() - case <-ticker.C: - if time.Now().After(timeoutTime) { - return nil, fmt.Errorf("timed out waiting for EigenDA blob to confirm blob with request id: %s", base64RequestID) - } - statusRes, err := daClient.GetBlobStatus(ctx, &disperser.BlobStatusRequest{ - RequestId: disperseRes.RequestId, - }) - if err != nil { - m.Log.Warn("Unable to retrieve blob dispersal status, will retry", "requestID", base64RequestID, "err", err) - continue - } - - switch statusRes.Status { - case disperser.BlobStatus_PROCESSING: - m.Log.Warn("Still waiting for confirmation from EigenDA", "requestID", base64RequestID) - case disperser.BlobStatus_FAILED: - m.Log.Error("EigenDA blob dispersal failed in processing", "requestID", base64RequestID, "err", err) - return nil, fmt.Errorf("EigenDA blob dispersal failed in processing") - case disperser.BlobStatus_INSUFFICIENT_SIGNATURES: - m.Log.Error("EigenDA blob dispersal failed in processing with insufficient signatures", "requestID", base64RequestID, "err", err) - case disperser.BlobStatus_CONFIRMED: - m.Log.Info("EigenDA blob confirmed, waiting for finalization", "requestID", base64RequestID) - case disperser.BlobStatus_FINALIZED: - batchHeaderHashHex := fmt.Sprintf("0x%s", hex.EncodeToString(statusRes.Info.BlobVerificationProof.BatchMetadata.BatchHeaderHash)) - m.Log.Info("Successfully dispersed blob to EigenDA", "requestID", base64RequestID, "batchHeaderHash", batchHeaderHashHex) - blobInfo := statusRes.Info - quorumIDs := make([]uint32, len(blobInfo.BlobHeader.BlobQuorumParams)) - for i := range quorumIDs { - quorumIDs[i] = blobInfo.BlobHeader.BlobQuorumParams[i].QuorumNumber - } - - c := &Cert{ - BatchHeaderHash: blobInfo.BlobVerificationProof.BatchMetadata.BatchHeaderHash, - BlobIndex: blobInfo.BlobVerificationProof.BlobIndex, - ReferenceBlockNumber: blobInfo.BlobVerificationProof.BatchMetadata.BatchHeader.ReferenceBlockNumber, - QuorumIDs: quorumIDs, - BlobCommitment: blobInfo.BlobHeader.Commitment, - } - return c, nil - default: - return nil, fmt.Errorf("EigenDA blob dispersal failed in processing with reply status %d", statusRes.Status) - } - } - } -} - -func ConvertIntToVarUInt(v int) []byte { - buf := make([]byte, binary.MaxVarintLen64) - n := binary.PutUvarint(buf, uint64(v)) - return buf[:n] - -} - -func EncodeToBlob(data []byte) []byte { - // encode data length - data = append(ConvertIntToVarUInt(len(data)), data...) - - // encode modulo bn254 - return codec.ConvertByPaddingEmptyByte(data) -} - -func DecodeFromBlob(b []byte) ([]byte, error) { - // decode modulo bn254 - decodedData := codec.RemoveEmptyByteFromPaddedBytes(b) - - // Return exact data with buffer removed - reader := bytes.NewReader(decodedData) - length, err := binary.ReadUvarint(reader) - if err != nil { - return nil, fmt.Errorf("EigenDA client failed to decode length uvarint prefix") - } - data := make([]byte, length) - n, err := reader.Read(data) - if err != nil { - return nil, fmt.Errorf("EigenDA client failed to copy un-padded data into final buffer") - } - if uint64(n) != length { - return nil, fmt.Errorf("EigenDA client failed, data length does not match length prefix") - } - - return data, nil -} diff --git a/eigenda/config.go b/eigenda/config.go index 39c2aeec..b81c4496 100644 --- a/eigenda/config.go +++ b/eigenda/config.go @@ -1,10 +1,11 @@ package eigenda import ( - "errors" "runtime" "time" + "github.com/Layr-Labs/eigenda/api/clients" + "github.com/Layr-Labs/eigenda/api/clients/codecs" "github.com/Layr-Labs/eigenda/encoding/kzg" opservice "github.com/ethereum-optimism/optimism/op-service" "github.com/urfave/cli/v2" @@ -14,7 +15,11 @@ const ( RPCFlagName = "eigenda-rpc" StatusQueryRetryIntervalFlagName = "eigenda-status-query-retry-interval" StatusQueryTimeoutFlagName = "eigenda-status-query-timeout" - UseTlsFlagName = "eigenda-use-tls" + DisableTlsFlagName = "eigenda-disable-tls" + ResponseTimeoutFlagName = "eigenda-response-timeout" + CustomQuorumIDsFlagName = "eigenda-custom-quorum-ids" + SignerPrivateKeyHexFlagName = "eigenda-signer-private-key-hex" + PutBlobEncodingVersionFlagName = "eigenda-put-blob-encoding-version" // Kzg flags G1PathFlagName = "eigenda-g1-path" G2TauFlagName = "eigenda-g2-tau-path" @@ -22,20 +27,10 @@ const ( ) type Config struct { - // TODO(eigenlayer): Update quorum ID command-line parameters to support passing - // an arbitrary number of quorum IDs. + ClientConfig clients.EigenDAClientConfig - // RPC is the HTTP provider URL for the Data Availability node. - RPC string - - // The total amount of time that the batcher will spend waiting for EigenDA to confirm a blob - StatusQueryTimeout time.Duration - - // The amount of time to wait between status queries of a newly dispersed blob - StatusQueryRetryInterval time.Duration - - // UseTLS specifies whether the client should use TLS as a transport layer when connecting to disperser. - UseTLS bool + // The blob encoding version to use when writing blobs from the high level interface. + PutBlobEncodingVersion codecs.BlobEncodingVersion // KZG vars CacheDir string @@ -60,25 +55,25 @@ func (c *Config) KzgConfig() *kzg.KzgConfig { // NewConfig parses the Config from the provided flags or environment variables. func ReadConfig(ctx *cli.Context) Config { cfg := Config{ - /* Required Flags */ - RPC: ctx.String(RPCFlagName), - StatusQueryRetryInterval: ctx.Duration(StatusQueryRetryIntervalFlagName), - StatusQueryTimeout: ctx.Duration(StatusQueryTimeoutFlagName), - UseTLS: ctx.Bool(UseTlsFlagName), - G1Path: ctx.String(G1PathFlagName), - G2PowerOfTauPath: ctx.String(G2TauFlagName), - CacheDir: ctx.String(CachePathFlagName), + ClientConfig: clients.EigenDAClientConfig{ + /* Required Flags */ + RPC: ctx.String(RPCFlagName), + StatusQueryRetryInterval: ctx.Duration(StatusQueryRetryIntervalFlagName), + StatusQueryTimeout: ctx.Duration(StatusQueryTimeoutFlagName), + DisableTLS: ctx.Bool(DisableTlsFlagName), + ResponseTimeout: ctx.Duration(ResponseTimeoutFlagName), + CustomQuorumIDs: ctx.UintSlice(CustomQuorumIDsFlagName), + SignerPrivateKeyHex: ctx.String(SignerPrivateKeyHexFlagName), + PutBlobEncodingVersion: codecs.BlobEncodingVersion(ctx.Uint(PutBlobEncodingVersionFlagName)), + }, + G1Path: ctx.String(G1PathFlagName), + G2PowerOfTauPath: ctx.String(G2TauFlagName), + CacheDir: ctx.String(CachePathFlagName), } return cfg } func (m Config) Check() error { - if m.StatusQueryTimeout == 0 { - return errors.New("EigenDA status query timeout must be greater than 0") - } - if m.StatusQueryRetryInterval == 0 { - return errors.New("EigenDA status query retry interval must be greater than 0") - } return nil } @@ -88,27 +83,58 @@ func CLIFlags(envPrefix string) []cli.Flag { } return []cli.Flag{ &cli.StringFlag{ - Name: RPCFlagName, - Usage: "RPC endpoint of the EigenDA disperser.", - EnvVars: prefixEnvVars("TARGET_RPC"), + Name: RPCFlagName, + Usage: "RPC endpoint of the EigenDA disperser.", + EnvVars: prefixEnvVars("TARGET_RPC"), + Required: true, }, &cli.DurationFlag{ - Name: StatusQueryTimeoutFlagName, - Usage: "Timeout for aborting an EigenDA blob dispersal if the disperser does not report that the blob has been confirmed dispersed.", - Value: 25 * time.Minute, - EnvVars: prefixEnvVars("TARGET_STATUS_QUERY_TIMEOUT"), + Name: StatusQueryTimeoutFlagName, + Usage: "Timeout for aborting an EigenDA blob dispersal if the disperser does not report that the blob has been confirmed dispersed.", + Value: 30 * time.Minute, + EnvVars: prefixEnvVars("TARGET_STATUS_QUERY_TIMEOUT"), + Required: false, }, &cli.DurationFlag{ - Name: StatusQueryRetryIntervalFlagName, - Usage: "Wait time between retries of EigenDA blob status queries (made while waiting for a blob to be confirmed by).", - Value: 5 * time.Second, - EnvVars: prefixEnvVars("TARGET_STATUS_QUERY_INTERVAL"), + Name: StatusQueryRetryIntervalFlagName, + Usage: "Wait time between retries of EigenDA blob status queries (made while waiting for a blob to be confirmed by).", + Value: 5 * time.Second, + EnvVars: prefixEnvVars("TARGET_STATUS_QUERY_INTERVAL"), + Required: false, }, &cli.BoolFlag{ - Name: UseTlsFlagName, - Usage: "Use TLS when connecting to the EigenDA disperser.", - Value: true, - EnvVars: prefixEnvVars("TARGET_GRPC_USE_TLS"), + Name: DisableTlsFlagName, + Usage: "Disable TLS when connecting to the EigenDA disperser.", + Value: false, + EnvVars: prefixEnvVars("TARGET_GRPC_DISABLE_TLS"), + Required: false, + }, + &cli.DurationFlag{ + Name: ResponseTimeoutFlagName, + Usage: "The total amount of time that the client will waiting for a response from the EigenDA disperser.", + Value: 10 * time.Second, + EnvVars: prefixEnvVars("RESPONSE_TIMEOUT"), + Required: false, + }, + &cli.UintSliceFlag{ + Name: CustomQuorumIDsFlagName, + Usage: "The quorum IDs to write blobs to using this client. Should not include default quorums 0 or 1.", + Value: cli.NewUintSlice(), + EnvVars: prefixEnvVars("CUSTOM_QUORUM_IDS"), + Required: false, + }, + &cli.StringFlag{ + Name: SignerPrivateKeyHexFlagName, + Usage: "Signer private key in hex encoded format. This key should not be associated with an Ethereum address holding any funds.", + EnvVars: prefixEnvVars("SIGNER_PRIVATE_KEY_HEX"), + Required: true, + }, + &cli.UintFlag{ + Name: PutBlobEncodingVersionFlagName, + Usage: "The blob encoding version to use when writing blobs from the high level interface.", + EnvVars: prefixEnvVars("PUT_BLOB_ENCODING_VERSION"), + Value: 1, + Required: false, }, &cli.StringFlag{ Name: G1PathFlagName, diff --git a/go.mod b/go.mod index e57a832c..ef63f53e 100644 --- a/go.mod +++ b/go.mod @@ -3,21 +3,19 @@ module github.com/Layr-Labs/eigenda-proxy go 1.21 require ( - github.com/Layr-Labs/eigenda v0.7.0-rc.1.0.20240503180411-8ec570b8c2b2 - github.com/Layr-Labs/eigenda/api v0.6.2 + github.com/Layr-Labs/eigenda v0.7.2-0.20240528171939-5c2ee4018cb5 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum-optimism/optimism v1.7.5-0.20240520224312-38cd9944494a - github.com/ethereum/go-ethereum v1.13.15 + github.com/ethereum/go-ethereum v1.14.0 github.com/joho/godotenv v1.5.1 github.com/prometheus/client_golang v1.19.0 github.com/stretchr/testify v1.9.0 github.com/urfave/cli/v2 v2.27.1 - google.golang.org/grpc v1.59.0 ) require ( github.com/DataDog/zstd v1.5.2 // indirect - github.com/Layr-Labs/eigensdk-go v0.1.6-0.20240414172936-84d5bc10f72f // indirect + github.com/Layr-Labs/eigensdk-go v0.1.7-0.20240507215523-7e4891d5099a // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect @@ -28,7 +26,8 @@ require ( github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 // indirect - github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.5 // indirect + github.com/aws/aws-sdk-go-v2/service/kms v1.31.0 // indirect + github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.6 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect @@ -40,21 +39,23 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cockroachdb/errors v1.11.1 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4 // indirect + github.com/cockroachdb/pebble v1.1.0 // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 // indirect - github.com/crate-crypto/go-kzg-4844 v0.7.0 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/deckarep/golang-set/v2 v2.1.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240516202831-8117b611dc3c // indirect - github.com/ethereum/c-kzg-4844 v0.4.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect github.com/fjl/memsize v0.0.2 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/fxamacker/cbor/v2 v2.5.0 // indirect + github.com/gammazero/deque v0.2.0 // indirect + github.com/gammazero/workerpool v1.1.3 // indirect github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-ole/go-ole v1.3.0 // indirect @@ -62,7 +63,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/websocket v1.5.1 // indirect @@ -82,6 +83,7 @@ require ( github.com/libp2p/go-flow-metrics v0.1.0 // indirect github.com/libp2p/go-libp2p v0.32.0 // indirect github.com/libp2p/go-libp2p-pubsub v0.10.1 // indirect + github.com/lmittmann/tint v1.0.4 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect @@ -99,6 +101,7 @@ require ( github.com/multiformats/go-multistream v0.5.0 // indirect github.com/multiformats/go-varint v0.0.7 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/pingcap/errors v0.11.4 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_model v0.5.0 // indirect @@ -109,12 +112,14 @@ require ( github.com/rs/cors v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect + github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/supranational/blst v0.3.11 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect github.com/tklauser/numcpus v0.6.1 // indirect github.com/urfave/cli v1.22.14 // indirect + github.com/wealdtech/go-merkletree v1.0.1-0.20230205101955-ec7a95ea11ca // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect @@ -123,15 +128,16 @@ require ( go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 // indirect - golang.org/x/mod v0.16.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sync v0.6.0 // indirect + golang.org/x/mod v0.17.0 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect - golang.org/x/tools v0.17.0 // indirect + golang.org/x/tools v0.20.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/protobuf v1.32.0 // indirect + google.golang.org/grpc v1.59.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect diff --git a/go.sum b/go.sum index 4661dbc8..55d73e9f 100644 --- a/go.sum +++ b/go.sum @@ -1,37 +1,67 @@ +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Layr-Labs/eigenda v0.7.0-rc.1.0.20240503180411-8ec570b8c2b2 h1:tPGJ7iDe5W7TR21FD5tfxWaKQmLrk5M1TuH2GLbw3x8= -github.com/Layr-Labs/eigenda v0.7.0-rc.1.0.20240503180411-8ec570b8c2b2/go.mod h1:49pIPHm61bjWtJytgUKi2hnaJPnTmeE58/r2Jea4F5M= -github.com/Layr-Labs/eigenda/api v0.6.2 h1:ZrHYzdkOAonql+U8TUyR5OUXgciTgI2TEZ0E4koEbBI= -github.com/Layr-Labs/eigenda/api v0.6.2/go.mod h1:kVXqWM13s/1hXyv9QdHweWAbKin9MeOBbS4i8c9rLbU= -github.com/Layr-Labs/eigensdk-go v0.1.6-0.20240414172936-84d5bc10f72f h1:WI6I4iDFu3cyhKCkdFUozWpNKBIvgCEl64yHNIh7MjE= -github.com/Layr-Labs/eigensdk-go v0.1.6-0.20240414172936-84d5bc10f72f/go.mod h1:HOSNuZcwaKbP4cnNk9c1hK2B2RitcMQ36Xj2msBBBpE= +github.com/Layr-Labs/eigenda v0.7.2-0.20240528171939-5c2ee4018cb5 h1:L5BCsCOnC8ki3BcFR8dPRCBMFtSEWBqcnyA8ZyCqS3k= +github.com/Layr-Labs/eigenda v0.7.2-0.20240528171939-5c2ee4018cb5/go.mod h1:gG5KSp5gGY0lywj6aZwaK9ZEF8eEVX4ilo679pFpvAA= +github.com/Layr-Labs/eigensdk-go v0.1.7-0.20240507215523-7e4891d5099a h1:L/UsJFw9M31FD/WgXTPFB0oxbq9Cu4Urea1xWPMQS7Y= +github.com/Layr-Labs/eigensdk-go v0.1.7-0.20240507215523-7e4891d5099a/go.mod h1:OF9lmS/57MKxS0xpSpX0qHZl0SKkDRpvJIvsGvMN1y8= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= +github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1 h1:gTK2uhtAPtFcdRRJilZPx8uJLL2J85xK11nKtWL0wfU= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1/go.mod h1:sxpLb+nZk7tIfCWChfd+h4QwHNUR57d8hA1cleTkjJo= github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= github.com/aws/aws-sdk-go-v2/config v1.27.11/go.mod h1:SMsV78RIOYdve1vf36z8LmnszlRWkwMQtomCAI0/mIE= github.com/aws/aws-sdk-go-v2/credentials v1.17.11 h1:YuIB1dJNf1Re822rriUOTxopaHHvIq0l/pX3fwO+Tzs= github.com/aws/aws-sdk-go-v2/credentials v1.17.11/go.mod h1:AQtFPsDH9bI2O+71anW6EKL+NcD7LG3dpKGMV4SShgo= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.13.12 h1:q6f5Y1gcGQVz53Q4WcACo6y1sP2VuNGZPW4JtWhwplI= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.13.12/go.mod h1:5WPGXfp9+ss7gYsZ5QjJeY16qTpCLaIcQItE7Yw7ld4= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.7.12 h1:FMernpdSB00U3WugCPlVyXqtq5gRypJk4cvGl1BXNHg= +github.com/aws/aws-sdk-go-v2/feature/dynamodb/expression v1.7.12/go.mod h1:OdtX98GDpp5F3nlogW/WGBTzcgFDTUV22hrLigFQICE= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1 h1:FVJ0r5XTHSmIHJV6KuDmdYhEpvlHpiSd38RQWhut5J4= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.1/go.mod h1:zusuAeqezXzAB24LGuzuekqMAEgWkVYukBec3kr3jUg= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.13 h1:F+PUZee9mlfpEJVZdgyewRumKekS9O3fftj8fEMt0rQ= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.16.13/go.mod h1:Rl7i2dEWGHGsBIJCpUxlRt7VwK/HyXxICxdvIRssQHE= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5 h1:aw39xVGeRWlWx9EzGVnhOR4yOjQDHPQ6o6NmBlscyQg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.5/go.mod h1:FSaRudD0dXiMPK2UjknVwwTYyZMRsHv3TtkabsZih5I= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5 h1:PG1F3OD1szkuQPzDw3CIQsRIrtTlUC3lP84taWzHlq0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.5/go.mod h1:jU1li6RFryMz+so64PpKtudI+QzbKoIEivqdf6LNpOc= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.4 h1:SIkD6T4zGQ+1YIit22wi37CGNkrE7mXV1vNA5VpI3TI= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.4/go.mod h1:XfeqbsG0HNedNs0GT+ju4Bs+pFAwsrlzcRdMvdNVf5s= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.31.0 h1:LtsNRZ6+ZYIbJcPiLHcefXeWkw2DZT9iJyXJJQvhvXw= +github.com/aws/aws-sdk-go-v2/service/dynamodb v1.31.0/go.mod h1:ua1eYOCxAAT0PUY3LAi9bUFuKJHC/iAksBLqR1Et7aU= +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.20.3 h1:KOjg2W7v3tAU8ASDWw26os1OywstODoZdIh9b/Wwlm4= +github.com/aws/aws-sdk-go-v2/service/dynamodbstreams v1.20.3/go.mod h1:fw1lVv+e9z9UIaVsVjBXoC8QxZ+ibOtRtzfELRJZWs8= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.6 h1:NkHCgg0Ck86c5PTOzBZ0JRccI51suJDg5lgFtxBu1ek= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.3.6/go.mod h1:mjTpxjC8v4SeINTngrnKFgm2QUi+Jm+etTbCxh8W4uU= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.5 h1:4vkDuYdXXD2xLgWmNalqH3q4u/d1XnaBMBXdVdZXVp0= +github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.9.5/go.mod h1:Ko/RW/qUJyM1rdTzZa74uhE2I0t0VXH0ob/MLcc+q+w= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7 h1:ogRAwT1/gxJBcSWDMZlgyFUM962F51A5CRhDLbxLdmo= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.7/go.mod h1:YCsIZhXfRPLFFCl5xxY+1T9RKzOKjCut+28JSX2DnAk= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.5 h1:1i3Pq5g1NaXI/u8lTHRVMHyCc0HoZzSk2EFmiy14Hbk= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.5/go.mod h1:slgOMs1CQu8UVgwoFqEvCi71L4HVoZgM0r8MtcNP6Mc= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.4 h1:uDj2K47EM1reAYU9jVlQ1M5YENI1u6a/TxJpf6AeOLA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.17.4/go.mod h1:XKCODf4RKHppc96c2EZBGV/oCUC7OClxAo2MEyg4pIk= +github.com/aws/aws-sdk-go-v2/service/kms v1.31.0 h1:yl7wcqbisxPzknJVfWTLnK83McUvXba+pz2+tPbIUmQ= +github.com/aws/aws-sdk-go-v2/service/kms v1.31.0/go.mod h1:2snWQJQUKsbN66vAawJuOGX7dr37pfOq9hb0tZDGIqQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.53.0 h1:r3o2YsgW9zRcIP3Q0WCmttFVhTuugeKIvT5z9xDspc0= +github.com/aws/aws-sdk-go-v2/service/s3 v1.53.0/go.mod h1:w2E4f8PUfNtyjfL6Iu+mWI96FGttE03z3UdNcUEC4tA= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.6 h1:TIOEjw0i2yyhmhRry3Oeu9YtiiHWISZ6j/irS1W3gX4= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.28.6/go.mod h1:3Ba++UwWd154xtP4FRX5pUK3Gt4up5sDHCve6kVfE+g= github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 h1:vN8hEbpRnL7+Hopy9dzmRle1xmDc7o8tmY0klsr175w= github.com/aws/aws-sdk-go-v2/service/sso v1.20.5/go.mod h1:qGzynb/msuZIE8I75DVRCUXw3o3ZyBmUvMwQ2t/BrGM= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2KCuY61kzoCpvtvJJBtOE= @@ -51,6 +81,8 @@ github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPx github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= @@ -64,8 +96,8 @@ github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZ github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4 h1:PuHFhOUMnD62r80dN+Ik5qco2drekgsUSVdcHsvllec= -github.com/cockroachdb/pebble v0.0.0-20231018212520-f6cde3fc2fa4/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -74,12 +106,20 @@ github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/Yj github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/containerd/containerd v1.7.12 h1:+KQsnv4VnzyxWcfO9mlxxELaoztsDEjOuCMPAuPqgU0= +github.com/containerd/containerd v1.7.12/go.mod h1:/5OMpE1p0ylxtEUGY8kuCYkDRzJm9NO1TFMWjUpdevk= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/cpuguy83/dockercfg v0.3.1 h1:/FpZ+JaygUR/lZP2NlFI2DVfrOEMAIKP5wWEJdoYe9E= +github.com/cpuguy83/dockercfg v0.3.1/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= -github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -90,14 +130,26 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 h1:rpfIENRNNilwHwZeG5+P150SMrnNEcHYvcCuK6dPZSg= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= +github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/cli v25.0.3+incompatible h1:KLeNs7zws74oFuVhgZQ5ONGZiXUUdgsdy6/EsX/6284= +github.com/docker/cli v25.0.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker v25.0.5+incompatible h1:UmQydMduGkrD5nQde1mecF/YnSbTOaPeFIeP5C4W+DE= +github.com/docker/docker v25.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/ethereum-optimism/op-geth v1.101315.1-rc.4 h1:8kKEkKIpEiDA1yJfrOO473Tyz4nGgSJHpyK1I0fbPDo= github.com/ethereum-optimism/op-geth v1.101315.1-rc.4/go.mod h1:TtEUbMSmnt2jrnmxAG0n7tj6ujmcBJ+TKkmU56+NMMw= github.com/ethereum-optimism/optimism v1.7.5-0.20240520224312-38cd9944494a h1:G/ZEyK8EGxte4pl/2Z5pP+/MbOFxsey4DzC6nHT/pqw= github.com/ethereum-optimism/optimism v1.7.5-0.20240520224312-38cd9944494a/go.mod h1:0SW2VbS19rHhno7VpBKODQzpUsb7xaNlBgdDkiu/O/I= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240516202831-8117b611dc3c h1:dZYKUyjBsJfkCdlcqQ65pjIV1KD7P46ZvENKTxuxfJQ= github.com/ethereum-optimism/superchain-registry/superchain v0.0.0-20240516202831-8117b611dc3c/go.mod h1:7xh2awFQqsiZxFrHKTgEd+InVfDRrkKVUIuK8SAFHp0= -github.com/ethereum/c-kzg-4844 v0.4.0 h1:3MS1s4JtA868KpJxroZoepdV0ZKBp3u/O5HcZ7R3nlY= -github.com/ethereum/c-kzg-4844 v0.4.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -107,6 +159,10 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fxamacker/cbor/v2 v2.5.0 h1:oHsG0V/Q6E/wqTS2O1Cozzsy69nqCiguo5Q1a1ADivE= github.com/fxamacker/cbor/v2 v2.5.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= +github.com/gammazero/deque v0.2.0 h1:SkieyNB4bg2/uZZLxvya0Pq6diUlwx7m2TeT7GAIWaA= +github.com/gammazero/deque v0.2.0/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= +github.com/gammazero/workerpool v1.1.3 h1:WixN4xzukFoN0XSeXF6puqEqFTl2mECI9S6W44HWy9Q= +github.com/gammazero/workerpool v1.1.3/go.mod h1:wPjyBLDbyKnUn2XwwyD3EEwo9dHutia9/fwNmSHWACc= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= @@ -115,10 +171,16 @@ github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkN github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -136,8 +198,8 @@ github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvq github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -150,13 +212,21 @@ github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8 h1:Ep/joEub9YwcjRY6ND3+Y/w0ncE540RtGatVhtZL0/Q= github.com/google/gofuzz v1.2.1-0.20220503160820-4a35382e8fc8/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.11 h1:6DqdA/KBjurGby9yTY0bmkathya0lfwF2SeuubCI7dY= github.com/hashicorp/go-bexpr v0.1.11/go.mod h1:f03lAo0duBlDIUMGCuad8oLcgejw4m7U+N8T+6Kz1AE= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCOH9wdo= github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= @@ -185,6 +255,8 @@ github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+ github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -209,6 +281,12 @@ github.com/libp2p/go-libp2p v0.32.0 h1:86I4B7nBUPIyTgw3+5Ibq6K7DdKRCuZw8URCfPc1h github.com/libp2p/go-libp2p v0.32.0/go.mod h1:hXXC3kXPlBZ1eu8Q2hptGrMB4mZ3048JUoS4EKaHW5c= github.com/libp2p/go-libp2p-pubsub v0.10.1 h1:/RqOZpEtAolsr8/9CC8KqROJSOZeu7lK7fPftn4MwNg= github.com/libp2p/go-libp2p-pubsub v0.10.1/go.mod h1:1OxbaT/pFRO5h+Dpze8hdHQ63R0ke55XTs6b6NwLLkw= +github.com/lmittmann/tint v1.0.4 h1:LeYihpJ9hyGvE0w+K2okPTGUdVLfng1+nDNVR4vWISc= +github.com/lmittmann/tint v1.0.4/go.mod h1:HIS3gSy7qNwGCj+5oRjAutErFBl4BzdQP6cJZ0NfMwE= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -227,6 +305,16 @@ github.com/mitchellh/pointerstructure v1.2.1/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8oh github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= +github.com/moby/sys/user v0.1.0 h1:WmZ93f5Ux6het5iituh9x2zAG7NFY9Aqi49jjE1PaQg= +github.com/moby/sys/user v0.1.0/go.mod h1:fKJhFOnsCN6xZ5gSfbM6zaHGgDJMrqt9/reuj4T7MmU= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= @@ -259,12 +347,22 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= +github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/ory/dockertest/v3 v3.10.0 h1:4K3z2VMe8Woe++invjaTB7VRyQXQy5UY+loujO4aNE4= +github.com/ory/dockertest/v3 v3.10.0/go.mod h1:nr57ZbRWMqfsdGdFNLHz5jjNdDb7VVFnzAeW1n5N1Lg= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -272,6 +370,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= @@ -294,6 +394,14 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil/v3 v3.23.12 h1:z90NtUkp3bMtmICZKpC4+WaknU1eXtp5vtbQ11DgpE4= +github.com/shirou/gopsutil/v3 v3.23.12/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM= +github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 h1:17JxqqJY66GmZVHkmAsGEkcIu0oCe3AM420QDgGwZx0= +github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466/go.mod h1:9dIRpgIY7hVhoqfe0/FcYp0bpInZaT7dc3BYOprrIUE= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= @@ -315,6 +423,8 @@ github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbe github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a h1:1ur3QoCqvE5fl+nylMaIr9PVV1w343YRDtsy+Rwu7XI= github.com/syndtr/goleveldb v1.0.1-0.20220614013038-64ee5596c38a/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +github.com/testcontainers/testcontainers-go v0.30.0 h1:jmn/XS22q4YRrcMwWg0pAwlClzs/abopbsBzrepyc4E= +github.com/testcontainers/testcontainers-go v0.30.0/go.mod h1:K+kHNGiM5zjklKjgTtcrEetF3uhWbMUyqAQoyoh8Pf0= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= @@ -329,12 +439,26 @@ github.com/wealdtech/go-merkletree v1.0.1-0.20230205101955-ec7a95ea11ca h1:oK35I github.com/wealdtech/go-merkletree v1.0.1-0.20230205101955-ec7a95ea11ca/go.mod h1:bM9mDSjsti+gkjl8FjovMoUH3MPR5bwJ3+ucaYFY0Jk= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= go.uber.org/automaxprocs v1.5.2 h1:2LxUOGiR3O6tw8ui5sZa2LAaHnsviZdVOUZw4fvbnME= go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= @@ -354,8 +478,8 @@ golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3 h1:hNQpMuAJe5CtcUqCXaWga3FHu golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3/go.mod h1:idGWGoKP1toJGkd5/ig9ZLuPcZBC3ewk7SzmH0uou08= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic= -golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -365,15 +489,15 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -416,8 +540,8 @@ golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= -golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -435,8 +559,8 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I= -google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/store/eigenda.go b/store/eigenda.go index af8ca3aa..f2632f91 100644 --- a/store/eigenda.go +++ b/store/eigenda.go @@ -6,16 +6,17 @@ import ( "github.com/Layr-Labs/eigenda-proxy/eigenda" "github.com/Layr-Labs/eigenda-proxy/verify" + "github.com/Layr-Labs/eigenda/api/clients" "github.com/ethereum/go-ethereum/rlp" ) // EigenDAStore does storage interactions and verifications for blobs with DA. type EigenDAStore struct { - client *eigenda.EigenDAClient + client *clients.EigenDAClient verifier *verify.Verifier } -func NewEigenDAStore(ctx context.Context, client *eigenda.EigenDAClient, v *verify.Verifier) (*EigenDAStore, error) { +func NewEigenDAStore(ctx context.Context, client *clients.EigenDAClient, v *verify.Verifier) (*EigenDAStore, error) { return &EigenDAStore{ client: client, verifier: v, @@ -30,12 +31,19 @@ func (e EigenDAStore) Get(ctx context.Context, key []byte) ([]byte, error) { if err != nil { return nil, fmt.Errorf("failed to decode DA cert to RLP format: %w", err) } - blob, err := e.client.RetrieveBlob(ctx, cert.BatchHeaderHash, cert.BlobIndex) + blob, err := e.client.GetBlob(ctx, cert.BatchHeaderHash, cert.BlobIndex) if err != nil { return nil, fmt.Errorf("EigenDA client failed to retrieve blob: %w", err) } - err = e.verifier.Verify(cert, eigenda.EncodeToBlob(blob)) + // TODO: Blob codec should be read from the blob's header, not the client's + // write codec, which may differ from the blob's codec. This will work for + // now since these are the same. + encodedBlob, err := e.client.PutCodec.EncodeBlob(blob) + if err != nil { + return nil, err + } + err = e.verifier.Verify(cert, encodedBlob) if err != nil { return nil, err } @@ -45,7 +53,7 @@ func (e EigenDAStore) Get(ctx context.Context, key []byte) ([]byte, error) { // Put disperses a blob for some pre-image and returns the associated RLP encoded certificate commit. func (e EigenDAStore) Put(ctx context.Context, value []byte) (comm []byte, err error) { - cert, err := e.client.DisperseBlob(ctx, value) + cert, err := e.client.PutBlob(ctx, value) if err != nil { return nil, err } diff --git a/test/e2e_test.go b/test/e2e_test.go index 0641723c..738c6330 100644 --- a/test/e2e_test.go +++ b/test/e2e_test.go @@ -14,6 +14,7 @@ import ( "github.com/Layr-Labs/eigenda-proxy/metrics" "github.com/Layr-Labs/eigenda-proxy/store" "github.com/Layr-Labs/eigenda-proxy/verify" + "github.com/Layr-Labs/eigenda/api/clients" "github.com/Layr-Labs/eigenda/encoding/kzg" op_plasma "github.com/ethereum-optimism/optimism/op-plasma" @@ -49,10 +50,12 @@ func createTestSuite(t *testing.T) (TestSuite, func()) { oplog.SetGlobalLogHandler(log.Handler()) testCfg := eigenda.Config{ - RPC: holeskyDA, - StatusQueryTimeout: time.Minute * 45, - StatusQueryRetryInterval: time.Second * 1, - UseTLS: true, + ClientConfig: clients.EigenDAClientConfig{ + RPC: holeskyDA, + StatusQueryTimeout: time.Minute * 45, + StatusQueryRetryInterval: time.Second * 1, + DisableTLS: false, + }, } // these values can be generated locally by running `make srs` @@ -66,7 +69,11 @@ func createTestSuite(t *testing.T) (TestSuite, func()) { NumWorker: uint64(runtime.GOMAXPROCS(0)), } - client := eigenda.NewEigenDAClient(log, testCfg) + client, err := clients.NewEigenDAClient(log, testCfg.ClientConfig) + if err != nil { + panic(err) + } + verifier, err := verify.NewVerifier(kzgCfg) if err != nil { panic(err) diff --git a/verify/verify_test.go b/verify/verify_test.go index cb33ab32..98b00184 100644 --- a/verify/verify_test.go +++ b/verify/verify_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/Layr-Labs/eigenda-proxy/eigenda" + "github.com/Layr-Labs/eigenda/api/clients/codecs" "github.com/Layr-Labs/eigenda/api/grpc/common" "github.com/Layr-Labs/eigenda/encoding/kzg" "github.com/stretchr/testify/assert" @@ -41,11 +42,17 @@ func TestVerification(t *testing.T) { assert.NoError(t, err) // Happy path verification - err = v.Verify(c, eigenda.EncodeToBlob(data)) + + // TODO: Update this test to use the IFFT codec + codec := codecs.DefaultBlobEncodingCodec{} + blob, err := codec.EncodeBlob(data) + assert.NoError(t, err) + err = v.Verify(c, blob) assert.NoError(t, err) // failure with wrong data - fakeData := eigenda.EncodeToBlob([]byte("I am an imposter!!")) + fakeData, err := codec.EncodeBlob([]byte("I am an imposter!!")) + assert.NoError(t, err) err = v.Verify(c, fakeData) assert.Error(t, err) } From 44e5bd53a0baf7a70e8c07bed88e60438c577584 Mon Sep 17 00:00:00 2001 From: Teddy Knox Date: Wed, 29 May 2024 10:58:36 -0400 Subject: [PATCH 2/6] Add replace directive for pebble to avoid dep conflict --- go.mod | 2 ++ go.sum | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index ef63f53e..45be13c7 100644 --- a/go.mod +++ b/go.mod @@ -145,3 +145,5 @@ require ( ) replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth v1.101315.1-rc.4 + +replace github.com/cockroachdb/pebble => github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 diff --git a/go.sum b/go.sum index 55d73e9f..72090114 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZ github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= -github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= +github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= From 0f27ee9ab34e81fc877191b88cd3281e6bd5a04b Mon Sep 17 00:00:00 2001 From: Teddy Knox Date: Wed, 29 May 2024 11:08:45 -0400 Subject: [PATCH 3/6] Add replace directive for go-kzg-4844 to avoid dep conflict --- go.mod | 2 ++ go.sum | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 45be13c7..8331cd38 100644 --- a/go.mod +++ b/go.mod @@ -147,3 +147,5 @@ require ( replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth v1.101315.1-rc.4 replace github.com/cockroachdb/pebble => github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 + +replace github.com/crate-crypto/go-kzg-4844 => github.com/crate-crypto/go-kzg-4844 v0.7.0 diff --git a/go.sum b/go.sum index 72090114..ae75fb3e 100644 --- a/go.sum +++ b/go.sum @@ -118,8 +118,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHH github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= -github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= +github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= From d17c2d3c88b0bc121080c5f43b93014db17b8659 Mon Sep 17 00:00:00 2001 From: Teddy Knox Date: Wed, 29 May 2024 18:41:32 -0400 Subject: [PATCH 4/6] Update go.mod to point to merged HL EigenDA client and add DisablePointVerificationMode flag --- eigenda/config.go | 41 +++++++++++++++++++++++++---------------- go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/eigenda/config.go b/eigenda/config.go index b81c4496..6dd7e469 100644 --- a/eigenda/config.go +++ b/eigenda/config.go @@ -12,14 +12,15 @@ import ( ) const ( - RPCFlagName = "eigenda-rpc" - StatusQueryRetryIntervalFlagName = "eigenda-status-query-retry-interval" - StatusQueryTimeoutFlagName = "eigenda-status-query-timeout" - DisableTlsFlagName = "eigenda-disable-tls" - ResponseTimeoutFlagName = "eigenda-response-timeout" - CustomQuorumIDsFlagName = "eigenda-custom-quorum-ids" - SignerPrivateKeyHexFlagName = "eigenda-signer-private-key-hex" - PutBlobEncodingVersionFlagName = "eigenda-put-blob-encoding-version" + RPCFlagName = "eigenda-rpc" + StatusQueryRetryIntervalFlagName = "eigenda-status-query-retry-interval" + StatusQueryTimeoutFlagName = "eigenda-status-query-timeout" + DisableTlsFlagName = "eigenda-disable-tls" + ResponseTimeoutFlagName = "eigenda-response-timeout" + CustomQuorumIDsFlagName = "eigenda-custom-quorum-ids" + SignerPrivateKeyHexFlagName = "eigenda-signer-private-key-hex" + PutBlobEncodingVersionFlagName = "eigenda-put-blob-encoding-version" + DisablePointVerificationModeFlagName = "eigenda-disable-point-verification-mode" // Kzg flags G1PathFlagName = "eigenda-g1-path" G2TauFlagName = "eigenda-g2-tau-path" @@ -57,14 +58,15 @@ func ReadConfig(ctx *cli.Context) Config { cfg := Config{ ClientConfig: clients.EigenDAClientConfig{ /* Required Flags */ - RPC: ctx.String(RPCFlagName), - StatusQueryRetryInterval: ctx.Duration(StatusQueryRetryIntervalFlagName), - StatusQueryTimeout: ctx.Duration(StatusQueryTimeoutFlagName), - DisableTLS: ctx.Bool(DisableTlsFlagName), - ResponseTimeout: ctx.Duration(ResponseTimeoutFlagName), - CustomQuorumIDs: ctx.UintSlice(CustomQuorumIDsFlagName), - SignerPrivateKeyHex: ctx.String(SignerPrivateKeyHexFlagName), - PutBlobEncodingVersion: codecs.BlobEncodingVersion(ctx.Uint(PutBlobEncodingVersionFlagName)), + RPC: ctx.String(RPCFlagName), + StatusQueryRetryInterval: ctx.Duration(StatusQueryRetryIntervalFlagName), + StatusQueryTimeout: ctx.Duration(StatusQueryTimeoutFlagName), + DisableTLS: ctx.Bool(DisableTlsFlagName), + ResponseTimeout: ctx.Duration(ResponseTimeoutFlagName), + CustomQuorumIDs: ctx.UintSlice(CustomQuorumIDsFlagName), + SignerPrivateKeyHex: ctx.String(SignerPrivateKeyHexFlagName), + PutBlobEncodingVersion: codecs.BlobEncodingVersion(ctx.Uint(PutBlobEncodingVersionFlagName)), + DisablePointVerificationMode: ctx.Bool(DisablePointVerificationModeFlagName), }, G1Path: ctx.String(G1PathFlagName), G2PowerOfTauPath: ctx.String(G2TauFlagName), @@ -136,6 +138,13 @@ func CLIFlags(envPrefix string) []cli.Flag { Value: 1, Required: false, }, + &cli.BoolFlag{ + Name: DisablePointVerificationModeFlagName, + Usage: "Point verification mode does an IFFT on data before it is written, and does an FFT on data after it is read. This makes it possible to open points on the KZG commitment to prove that the field elements correspond to the commitment. With this mode disabled, you will need to supply the entire blob to perform a verification that any part of the data matches the KZG commitment.", + EnvVars: prefixEnvVars("DISABLE_POINT_VERIFICATION_MODE"), + Value: false, + Required: false, + }, &cli.StringFlag{ Name: G1PathFlagName, Usage: "Directory path to g1.point file", diff --git a/go.mod b/go.mod index 8331cd38..a26719b9 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/Layr-Labs/eigenda-proxy go 1.21 require ( - github.com/Layr-Labs/eigenda v0.7.2-0.20240528171939-5c2ee4018cb5 + github.com/Layr-Labs/eigenda v0.7.2-0.20240529223545-5aecf5c2b679 github.com/consensys/gnark-crypto v0.12.1 github.com/ethereum-optimism/optimism v1.7.5-0.20240520224312-38cd9944494a github.com/ethereum/go-ethereum v1.14.0 diff --git a/go.sum b/go.sum index ae75fb3e..981802e0 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8 github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Layr-Labs/eigenda v0.7.2-0.20240528171939-5c2ee4018cb5 h1:L5BCsCOnC8ki3BcFR8dPRCBMFtSEWBqcnyA8ZyCqS3k= -github.com/Layr-Labs/eigenda v0.7.2-0.20240528171939-5c2ee4018cb5/go.mod h1:gG5KSp5gGY0lywj6aZwaK9ZEF8eEVX4ilo679pFpvAA= +github.com/Layr-Labs/eigenda v0.7.2-0.20240529223545-5aecf5c2b679 h1:pa127fpHOA9OkByOFEdvOUJN7fLBudNWT2/2hw47sSs= +github.com/Layr-Labs/eigenda v0.7.2-0.20240529223545-5aecf5c2b679/go.mod h1:gG5KSp5gGY0lywj6aZwaK9ZEF8eEVX4ilo679pFpvAA= github.com/Layr-Labs/eigensdk-go v0.1.7-0.20240507215523-7e4891d5099a h1:L/UsJFw9M31FD/WgXTPFB0oxbq9Cu4Urea1xWPMQS7Y= github.com/Layr-Labs/eigensdk-go v0.1.7-0.20240507215523-7e4891d5099a/go.mod h1:OF9lmS/57MKxS0xpSpX0qHZl0SKkDRpvJIvsGvMN1y8= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= From db4d7fa0d6692ea709050c3319b5c703de345584 Mon Sep 17 00:00:00 2001 From: Teddy Knox Date: Wed, 29 May 2024 19:04:26 -0400 Subject: [PATCH 5/6] Fix failing verifier test --- Makefile | 4 ++-- test/e2e_test.go | 11 +++++++++++ verify/verifier.go | 12 +++--------- verify/verify_test.go | 4 ++-- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index c0388893..14c96408 100644 --- a/Makefile +++ b/Makefile @@ -27,10 +27,10 @@ clean: rm bin/eigenda-proxy test: - go test -v ./... -test.skip ".*E2E.*" + go test -v ./... e2e-test: submodules srs - go test -timeout 50m -v ./test/e2e_test.go + go test -timeout 50m -v -testnet-integration ./test/e2e_test.go .PHONY: lint lint: diff --git a/test/e2e_test.go b/test/e2e_test.go index 738c6330..568726bb 100644 --- a/test/e2e_test.go +++ b/test/e2e_test.go @@ -2,6 +2,7 @@ package test import ( "context" + "flag" "fmt" "os" "runtime" @@ -23,6 +24,12 @@ import ( "github.com/stretchr/testify/assert" ) +var runTestnetIntegrationTests bool + +func init() { + flag.BoolVar(&runTestnetIntegrationTests, "testnet-integration", false, "Run testnet-based integration tests") +} + // Use of single port makes tests incapable of running in parallel const ( transport = "http" @@ -107,6 +114,10 @@ func createTestSuite(t *testing.T) (TestSuite, func()) { } func TestE2EPutGetLogicForEigenDAStore(t *testing.T) { + if !runTestnetIntegrationTests { + t.Skip("Skipping testnet integration test") + } + ts, kill := createTestSuite(t) defer kill() diff --git a/verify/verifier.go b/verify/verifier.go index 433a4c8d..fc6c5c94 100644 --- a/verify/verifier.go +++ b/verify/verifier.go @@ -60,15 +60,9 @@ func (v *Verifier) Verify(cert eigenda.Cert, blob []byte) error { x, y := cert.BlobCommitmentFields() errMsg := "" - if !commit.X.Equal(x) { - errMsg += fmt.Sprintf(" x element mismatch %s : %s %s : %s,", "generated_commit", commit.X.String(), "initial_commit", x.String()) - } - - if !commit.Y.Equal(y) { - errMsg += fmt.Sprintf(" y element mismatch %s : %s %s : %s,", "generated_commit", commit.Y.String(), "initial_commit", y.String()) - } - - if errMsg != "" { + if !commit.X.Equal(x) || !commit.Y.Equal(y) { + errMsg += fmt.Sprintf("field elements do not match, x generated commit: %x, x initial commit: %x, ", commit.X.Marshal(), (*x).Marshal()) + errMsg += fmt.Sprintf("y generated commit: %x, y initial commit: %x", commit.Y.Marshal(), (*y).Marshal()) return fmt.Errorf(errMsg) } diff --git a/verify/verify_test.go b/verify/verify_test.go index 98b00184..4c92e700 100644 --- a/verify/verify_test.go +++ b/verify/verify_test.go @@ -16,10 +16,10 @@ func TestVerification(t *testing.T) { var data = []byte("inter-subjective and not objective!") - x, err := hex.DecodeString("0184B47F64FBA17D6F49CDFED20434B1015A2A369AB203256EC4CD00C324E83B") + x, err := hex.DecodeString("07c23d7720de3f10064c8f48774d8f59207964c482419063246a67e1c454a886") assert.NoError(t, err) - y, err := hex.DecodeString("122CD859CC5CDD048B482C50721821CB413C151BA7AF10285C1D2483F2A88085") + y, err := hex.DecodeString("0f747070e6fdb4e1346fec54dbc3d2d61a2c9ad2cb6b1744fa7f47072ad13370") assert.NoError(t, err) c := eigenda.Cert{ From 9b483b0678fb8f185fbc2f3c1408329dff80bffb Mon Sep 17 00:00:00 2001 From: Teddy Knox Date: Thu, 30 May 2024 09:46:38 -0400 Subject: [PATCH 6/6] Update docs and change a few config env vars --- README.md | 69 +++++++++++++++++++++++++++++++---------------- eigenda/config.go | 14 +++++----- go.mod | 2 ++ 3 files changed, 55 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index b122b20b..f4d1e801 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,58 @@ # EigenDA Sidecar Proxy ## Introduction -This simple DA server implementation is a side-car communication relay between different rollup frameworks and EigenDA. This allows us to keep existing protocol functions (i.e, batch submission, state derivation) lightweight in respect to modification since the server handles key security and data operations like: + +This service wraps the high-level EigenDA client, exposing endpoints for interacting with the EigenDA disperser in conformance to the [OP plasma server spec](https://specs.optimism.io/experimental/plasma.html), and adding disperser verification logic. This simplifies integrating EigenDA into various rollup frameworks by minimizing the footprint of changes needed within their respective services. Features of the EigenDA sidecar proxy include: + * blob submission/retrieval to EigenDA -* data <--> blob encoding/decoding -* tamper resistance assurance (i.e, cryptographic verification of retrieved blobs) +* data <--> blob encoding/decoding for BN254 field element compatibility +* tamper resistance assurance (i.e, cryptographic verification of retrieved blobs) for avoiding a trust dependency on the EigenDA disperser -This allows for deduplication of redundant logical flows into a single representation which can be used cross functionally across rollups. +In order to disperse to the EigenDA network in production, or at high throughput on testnet, please register your authentication ethereum address through [this form](https://forms.gle/3QRNTYhSMacVFNcU8). Your EigenDA authentication keypair should not be associated with any funds anywhere. ## EigenDA Configuration -Additional cli args are provided for targeting an EigenDA network backend: -- `--eigenda-rpc`: RPC host of disperser service. (e.g, on holesky this is `disperser-holesky.eigenda.xyz:443`) -- `--eigenda-status-query-timeout`: (default: 25m) Duration for which a client will wait for a blob to finalize after being sent for dispersal. -- `--eigenda-status-query-retry-interval`: (default: 5s) How often a client will attempt a retry when awaiting network blob finalization. -- `--eigenda-use-tls`: (default: true) Whether or not to use TLS for grpc communication with disperser. -- `--eigenda-g1-path`: Directory path to g1.point file -- `--eigenda-g2-power-of-tau`: Directory path to g2.point.powerOf2 file -- `--eigenda-cache-path`: Directory path to dump cached SRS tables + +Additional CLI args are provided for targeting an EigenDA network backend: + +* `--eigenda-rpc`: RPC host of disperser service. (e.g, on holesky this is `disperser-holesky.eigenda.xyz:443`, full network list [here](https://docs.eigenlayer.xyz/eigenda/networks/)) +* `--eigenda-status-query-timeout`: (default: 30m) Duration for which a client will wait for a blob to finalize after being sent for dispersal. +* `--eigenda-status-query-retry-interval`: (default: 5s) How often a client will attempt a retry when awaiting network blob finalization. +* `--eigenda-disable-tls`: (default: false) Whether to disable TLS for grpc communication with disperser. +* `--eigenda-response-timeout`: (default: 10s) The total amount of time that the client will wait for a response from the EigenDA disperser. +* `--eigenda-custom-quorum-ids`: (default: []) The quorum IDs to write blobs to using this client. Should not include default quorums 0 or 1. +* `--eigenda-signer-private-key-hex`: Signer private key in hex encoded format. This key should not be associated with an Ethereum address holding any funds. +* `--eigenda-put-blob-encoding-version`: The blob encoding version to use when writing blobs from the high level interface. +* `--eigenda-disable-point-verification-mode`: Point verification mode does an IFFT on data before it is written, and does an FFT on data after it is read. This makes it possible to open points on the KZG commitment to prove that the field elements correspond to the commitment. With this mode disabled, you will need to supply the entire blob to perform a verification that any part of the data matches the KZG commitment. +* `--eigenda-g1-path`: Directory path to g1.point file +* `--eigenda-g2-power-of-tau`: Directory path to g2.point.powerOf2 file +* `--eigenda-cache-path`: Directory path to dump cached SRS tables ### In-Memory Storage + An ephemeral memory store backend can be used for faster feedback testing when performing rollup integrations. The following cli args can be used to target the feature: + * `--memstore.enabled`: Boolean feature flag * `--memstore.expiration`: Duration for which a blob will exist ## Running Locally + 1. Compile binary: `make eigenda-proxy` 2. Run binary; e.g: `./bin/eigenda-proxy --addr 127.0.0.1 --port 5050 --eigenda-rpc 127.0.0.1:443 --eigenda-status-query-timeout 45m --eigenda-g1-path test/resources/g1.point --eigenda-g2-tau-path test/resources/g2.point.powerOf2 --eigenda-use-tls true` **Env File** An env file can be provided to the binary for runtime process ingestion; e.g: + 1. Create env: `cp .env.example .env` 2. Pass into binary: `ENV_PATH=.env ./bin/eigenda-proxy` ## Running via Docker -Container can be built via running `make build-docker`. + +Container can be built via running `make build-docker`. ## Commitment Schemas + An `EigenDACommitment` layer type has been added that supports verification against its respective pre-images. The commitment is encoded via the following byte array: + ``` 0 1 2 3 4 N |--------|--------|--------|--------|-----------------| @@ -46,41 +62,48 @@ An `EigenDACommitment` layer type has been added that supports verification agai ``` The `raw commitment` for EigenDA is encoding the following certificate and kzg fields: + ```go type Cert struct { - BatchHeaderHash []byte - BlobIndex uint32 - ReferenceBlockNumber uint32 - QuorumIDs []uint32 - BlobCommitment *common.G1Commitment + BatchHeaderHash []byte + BlobIndex uint32 + ReferenceBlockNumber uint32 + QuorumIDs []uint32 + BlobCommitment *common.G1Commitment } ``` **NOTE:** Commitments are cryptographically verified against the data fetched from EigenDA for all `/get` calls. The server will respond with status `500` in the event where EigenDA were to lie and provide falsified data thats irrespective of the client provided commitment. This feature isn't flag guarded and is part of standard operation. ## Testing + Some unit tests have been introduced to assert the correctness of: + * DA Certificate encoding/decoding logic * commitment verification logic Unit tests can be ran via `make test`. -Otherwise E2E tests (`test/e2e_test.go`) exists which asserts that a commitment can be generated when inserting some arbitrary data to the server and can be read using the commitment for a key lookup via the client. These can be ran via `make e2e-test`. Please **note** that this test uses the EigenDA Holesky network which is subject to rate-limiting and slow confirmation times *(i.e, >10 minutes per blob confirmation)*. Please advise EigenDA's [inabox](https://github.com/Layr-Labs/eigenda/tree/master/inabox#readme) if you'd like to spin-up a local DA network for faster iteration testing. - +Otherwise E2E tests (`test/e2e_test.go`) exists which asserts that a commitment can be generated when inserting some arbitrary data to the server and can be read using the commitment for a key lookup via the client. These can be ran via `make e2e-test`. Please **note** that this test uses the EigenDA Holesky network which is subject to rate-limiting and slow confirmation times *(i.e, >10 minutes per blob confirmation)*. Please advise EigenDA's [inabox](https://github.com/Layr-Labs/eigenda/tree/master/inabox#readme) if you'd like to spin-up a local DA network for faster iteration testing. ## Downloading Mainnet SRS + KZG commitment verification requires constructing the SRS string from the proper trusted setup values (g1, g2, g2.power_of_tau). These values can be downloaded locally using the [operator-setup](https://github.com/Layr-Labs/eigenda-operator-setup) submodule via the following commands. 1. `make submodules` 2. `make srs` ## Hardware Requirements + The following specs are recommended for running on a single production server: + * 12 GB SSD (assuming SRS values are stored on instance) * 16 GB RAM * 1-2 cores CPU ## Resources -- [op-stack](https://github.com/ethereum-optimism/optimism) -- [plasma spec](https://specs.optimism.io/experimental/plasma.html) -- [eigen da](https://github.com/Layr-Labs/eigenda) + +* [op-stack](https://github.com/ethereum-optimism/optimism) + +* [plasma spec](https://specs.optimism.io/experimental/plasma.html) +* [eigen da](https://github.com/Layr-Labs/eigenda) diff --git a/eigenda/config.go b/eigenda/config.go index 6dd7e469..a8c89f42 100644 --- a/eigenda/config.go +++ b/eigenda/config.go @@ -87,33 +87,33 @@ func CLIFlags(envPrefix string) []cli.Flag { &cli.StringFlag{ Name: RPCFlagName, Usage: "RPC endpoint of the EigenDA disperser.", - EnvVars: prefixEnvVars("TARGET_RPC"), + EnvVars: prefixEnvVars("RPC"), Required: true, }, &cli.DurationFlag{ Name: StatusQueryTimeoutFlagName, - Usage: "Timeout for aborting an EigenDA blob dispersal if the disperser does not report that the blob has been confirmed dispersed.", + Usage: "Timeout for aborting an EigenDA blob dispersal if the disperser does not report that the blob has been finalized dispersed.", Value: 30 * time.Minute, - EnvVars: prefixEnvVars("TARGET_STATUS_QUERY_TIMEOUT"), + EnvVars: prefixEnvVars("STATUS_QUERY_TIMEOUT"), Required: false, }, &cli.DurationFlag{ Name: StatusQueryRetryIntervalFlagName, Usage: "Wait time between retries of EigenDA blob status queries (made while waiting for a blob to be confirmed by).", Value: 5 * time.Second, - EnvVars: prefixEnvVars("TARGET_STATUS_QUERY_INTERVAL"), + EnvVars: prefixEnvVars("STATUS_QUERY_INTERVAL"), Required: false, }, &cli.BoolFlag{ Name: DisableTlsFlagName, Usage: "Disable TLS when connecting to the EigenDA disperser.", Value: false, - EnvVars: prefixEnvVars("TARGET_GRPC_DISABLE_TLS"), + EnvVars: prefixEnvVars("GRPC_DISABLE_TLS"), Required: false, }, &cli.DurationFlag{ Name: ResponseTimeoutFlagName, - Usage: "The total amount of time that the client will waiting for a response from the EigenDA disperser.", + Usage: "The total amount of time that the client will wait for a response from the EigenDA disperser.", Value: 10 * time.Second, EnvVars: prefixEnvVars("RESPONSE_TIMEOUT"), Required: false, @@ -135,7 +135,7 @@ func CLIFlags(envPrefix string) []cli.Flag { Name: PutBlobEncodingVersionFlagName, Usage: "The blob encoding version to use when writing blobs from the high level interface.", EnvVars: prefixEnvVars("PUT_BLOB_ENCODING_VERSION"), - Value: 1, + Value: 0, Required: false, }, &cli.BoolFlag{ diff --git a/go.mod b/go.mod index a26719b9..cea5d799 100644 --- a/go.mod +++ b/go.mod @@ -144,8 +144,10 @@ require ( rsc.io/tmplfunc v0.0.3 // indirect ) +// We inherit this from OP by forking their OP Plasma server. replace github.com/ethereum/go-ethereum => github.com/ethereum-optimism/op-geth v1.101315.1-rc.4 +// We do these remapping to solve dep conflicts between op-geth and go-ethereum, since eigenda also depends on go-ethereum. replace github.com/cockroachdb/pebble => github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 replace github.com/crate-crypto/go-kzg-4844 => github.com/crate-crypto/go-kzg-4844 v0.7.0