Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

feat: minimal binary #11

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
docker/jwttoken/*
!docker/jwttoken/.gitkeep
!docker/jwttoken/.gitkeep
build/*
13 changes: 12 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,19 @@ help: Makefile
@sed -n 's/^##//p' $< | column -t -s ':' | sed -e 's/^/ /'
.PHONY: help

## build: build evm-middleware binary
build: build/evm-middleware
.PHONY: build

build/evm-middleware: cmd/evm-middleware/main.go execution.go go.mod go.sum
@echo "Building build/evm-middleware"
@go build -o build/evm-middleware ./cmd/evm-middleware

## clean: clean testcache
clean:
@echo "--> Clearing testcache"
@echo "--> Clearing testcache & build directory"
@go clean --testcache
@rm -rf build
.PHONY: clean

## cover: generate to code coverage report.
Expand Down Expand Up @@ -53,6 +62,8 @@ lint: vet
fmt:
@echo "--> Formatting markdownlint"
@markdownlint --config .markdownlint.yaml '**/*.md' -f
@echo "--> Formatting go"
@golangci-lint run --fix
.PHONY: fmt

## vet: Run go vet
Expand Down
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,16 @@ The architecture consists of several key components:

## Development

Run RETH in docker:

```bash
cd docker
docker compose up -d
docker compose down
```

Compile `evm-middleware` binary:

```bash
make build
```
73 changes: 73 additions & 0 deletions cmd/evm-middleware/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
package main

import (
"errors"
"log"
"net"
"os"
"sync"
"time"

"google.golang.org/grpc"

"github.com/ethereum/go-ethereum/common"

evm "github.com/rollkit/go-execution-evm"
grpcproxy "github.com/rollkit/go-execution/proxy/grpc"
pb "github.com/rollkit/go-execution/types/pb/execution"
)

const bufSize = 1024 * 1024

func main() {
jwtSecret := ""
if len(os.Args) == 2 {
jwtSecret = os.Args[1]
}
Comment on lines +23 to +26
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Enhance JWT secret handling security

The current JWT secret handling has several security concerns:

  1. Allows empty JWT secret without warning
  2. No validation of secret strength or format
  3. Accepts secrets directly from command line (visible in process list)

Consider:

  1. Requiring JWT secret through environment variables or file
  2. Implementing minimum security requirements
  3. Adding proper validation
-       jwtSecret := ""
-       if len(os.Args) == 2 {
-               jwtSecret = os.Args[1]
-       }
+       jwtSecret := os.Getenv("JWT_SECRET")
+       if jwtSecret == "" {
+               log.Fatal("JWT_SECRET environment variable is required")
+       }
+       if len(jwtSecret) < 32 {
+               log.Fatal("JWT_SECRET must be at least 32 characters long")
+       }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
jwtSecret := ""
if len(os.Args) == 2 {
jwtSecret = os.Args[1]
}
jwtSecret := os.Getenv("JWT_SECRET")
if jwtSecret == "" {
log.Fatal("JWT_SECRET environment variable is required")
}
if len(jwtSecret) < 32 {
log.Fatal("JWT_SECRET must be at least 32 characters long")
}


config := &grpcproxy.Config{
DefaultTimeout: 5 * time.Second,
MaxRequestSize: bufSize,
}

listener, err := net.Listen("tcp4", "0.0.0.0:40041") //nolint:gosec
if err != nil {
log.Fatalf("error while creating listener: %v\n", err)
}
defer func() {
_ = listener.Close()
}()

// TODO(tzdybal): initialize from genesis file?
var genesisHash common.Hash
var feeRecipient common.Address
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Configure fee recipient address

The fee recipient address should be configurable via environment variable to support different deployment scenarios.

+       feeRecipientStr := os.Getenv("FEE_RECIPIENT_ADDRESS")
+       if feeRecipientStr != "" {
+               if !common.IsHexAddress(feeRecipientStr) {
+                       log.Fatalf("invalid fee recipient address format: %s", feeRecipientStr)
+               }
+               feeRecipient = common.HexToAddress(feeRecipientStr)
+       } else {
+               log.Println("Warning: No fee recipient address configured")
+       }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
var feeRecipient common.Address
var feeRecipient common.Address
feeRecipientStr := os.Getenv("FEE_RECIPIENT_ADDRESS")
if feeRecipientStr != "" {
if !common.IsHexAddress(feeRecipientStr) {
log.Fatalf("invalid fee recipient address format: %s", feeRecipientStr)
}
feeRecipient = common.HexToAddress(feeRecipientStr)
} else {
log.Println("Warning: No fee recipient address configured")
}


genesisHash = common.HexToHash("0x8bf225d50da44f60dee1c4ee6f810fe5b44723c76ac765654b6692d50459f216")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Remove hardcoded genesis hash

The genesis hash should not be hardcoded as it may vary across different networks and environments.

-       genesisHash = common.HexToHash("0x8bf225d50da44f60dee1c4ee6f810fe5b44723c76ac765654b6692d50459f216")
+       genesisHashStr := os.Getenv("GENESIS_HASH")
+       if genesisHashStr == "" {
+               log.Fatal("GENESIS_HASH environment variable is required")
+       }
+       if !common.IsHexAddress(genesisHashStr) {
+               log.Fatal("Invalid genesis hash format")
+       }
+       genesisHash = common.HexToHash(genesisHashStr)

Committable suggestion skipped: line range outside the PR's diff.


evmClient, err := evm.NewEngineAPIExecutionClient("http://:8545", "http://:8551", jwtSecret, genesisHash, feeRecipient)
if err != nil {
log.Fatalf("failed to create Engine API client middleware: %v", err)
}
_ = evmClient.Start()
Comment on lines +47 to +51
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix EVM client configuration and error handling

Several issues need to be addressed:

  1. HTTP and Engine API URLs are hardcoded with empty host
  2. Error from Start() is ignored
+       httpURL := os.Getenv("EVM_HTTP_URL")
+       if httpURL == "" {
+               httpURL = "http://localhost:8545"
+       }
+
+       engineURL := os.Getenv("EVM_ENGINE_URL")
+       if engineURL == "" {
+               engineURL = "http://localhost:8551"
+       }
+
-       evmClient, err := evm.NewEngineAPIExecutionClient("http://:8545", "http://:8551", jwtSecret, genesisHash, feeRecipient)
+       evmClient, err := evm.NewEngineAPIExecutionClient(httpURL, engineURL, jwtSecret, genesisHash, feeRecipient)
        if err != nil {
                log.Fatalf("failed to create Engine API client middleware: %v", err)
        }
-       _ = evmClient.Start()
+       if err := evmClient.Start(); err != nil {
+               log.Fatalf("failed to start EVM client: %v", err)
+       }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
evmClient, err := evm.NewEngineAPIExecutionClient("http://:8545", "http://:8551", jwtSecret, genesisHash, feeRecipient)
if err != nil {
log.Fatalf("failed to create Engine API client middleware: %v", err)
}
_ = evmClient.Start()
httpURL := os.Getenv("EVM_HTTP_URL")
if httpURL == "" {
httpURL = "http://localhost:8545"
}
engineURL := os.Getenv("EVM_ENGINE_URL")
if engineURL == "" {
engineURL = "http://localhost:8551"
}
evmClient, err := evm.NewEngineAPIExecutionClient(httpURL, engineURL, jwtSecret, genesisHash, feeRecipient)
if err != nil {
log.Fatalf("failed to create Engine API client middleware: %v", err)
}
if err := evmClient.Start(); err != nil {
log.Fatalf("failed to start EVM client: %v", err)
}

defer evmClient.Stop()
Comment on lines +51 to +52
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix potential race condition in client lifecycle

There's a potential race condition between client start and stop. The client start error is ignored, and the stop is deferred regardless of start success.

-       _ = evmClient.Start()
-       defer evmClient.Stop()
+       if err := evmClient.Start(); err != nil {
+               log.Fatalf("failed to start EVM client: %v", err)
+       }
+       defer func() {
+               if err := evmClient.Stop(); err != nil {
+                       log.Printf("error stopping EVM client: %v", err)
+               }
+       }()
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
_ = evmClient.Start()
defer evmClient.Stop()
if err := evmClient.Start(); err != nil {
log.Fatalf("failed to start EVM client: %v", err)
}
defer func() {
if err := evmClient.Stop(); err != nil {
log.Printf("error stopping EVM client: %v", err)
}
}()


log.Println("Starting server...")
server := grpcproxy.NewServer(evmClient, config)
s := grpc.NewServer()
pb.RegisterExecutionServiceServer(s, server)

wg := sync.WaitGroup{}
wg.Add(1)

go func() {
log.Println("Serving...")
if err := s.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) {
log.Fatalf("Server exited with error: %v\n", err)
}
Comment on lines +64 to +66
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Improve server error handling

Using log.Fatalf on server error prevents proper cleanup through deferred functions. Consider logging the error and triggering a graceful shutdown instead.

-               if err := s.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) {
-                       log.Fatalf("Server exited with error: %v\n", err)
-               }
+               if err := s.Serve(listener); err != nil {
+                       if !errors.Is(err, grpc.ErrServerStopped) {
+                               log.Printf("Server exited with error: %v\n", err)
+                       }
+                       // Trigger graceful shutdown
+                       s.GracefulStop()
+               }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if err := s.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) {
log.Fatalf("Server exited with error: %v\n", err)
}
if err := s.Serve(listener); err != nil {
if !errors.Is(err, grpc.ErrServerStopped) {
log.Printf("Server exited with error: %v\n", err)
}
// Trigger graceful shutdown
s.GracefulStop()
}

wg.Done()
}()
defer s.Stop()

wg.Wait()
log.Println("Server stopped")
Comment on lines +54 to +72
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Implement proper graceful shutdown handling

The server lifecycle management needs improvement:

  1. Missing signal handling for graceful shutdown
  2. No timeout for graceful shutdown
  3. No context cancellation

Consider implementing proper shutdown handling:

+       ctx, cancel := context.WithCancel(context.Background())
+       defer cancel()
        
        log.Println("Starting server...")
-       server := grpcproxy.NewServer(evmClient, config)
+       server := grpcproxy.NewServer(evmClient, config)
        s := grpc.NewServer()
        pb.RegisterExecutionServiceServer(s, server)

        wg := sync.WaitGroup{}
        wg.Add(1)

+       // Handle shutdown signals
+       sigCh := make(chan os.Signal, 1)
+       signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
+       go func() {
+               <-sigCh
+               log.Println("Received shutdown signal")
+               cancel()
+               s.GracefulStop()
+       }()

        go func() {
                log.Println("Serving...")
                if err := s.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) {
                        log.Printf("Server exited with error: %v\n", err)
                }
                wg.Done()
        }()
-       defer s.Stop()

-       wg.Wait()
+       // Wait for either context cancellation or server stop
+       select {
+       case <-ctx.Done():
+               log.Println("Context cancelled, initiating shutdown")
+               s.GracefulStop()
+       }
+       
+       // Wait with timeout
+       done := make(chan struct{})
+       go func() {
+               wg.Wait()
+               close(done)
+       }()
+       select {
+       case <-done:
+               log.Println("Server stopped gracefully")
+       case <-time.After(10 * time.Second):
+               log.Println("Shutdown timeout, forcing stop")
+               s.Stop()
+       }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
log.Println("Starting server...")
server := grpcproxy.NewServer(evmClient, config)
s := grpc.NewServer()
pb.RegisterExecutionServiceServer(s, server)
wg := sync.WaitGroup{}
wg.Add(1)
go func() {
log.Println("Serving...")
if err := s.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) {
log.Fatalf("Server exited with error: %v\n", err)
}
wg.Done()
}()
defer s.Stop()
wg.Wait()
log.Println("Server stopped")
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
log.Println("Starting server...")
server := grpcproxy.NewServer(evmClient, config)
s := grpc.NewServer()
pb.RegisterExecutionServiceServer(s, server)
wg := sync.WaitGroup{}
wg.Add(1)
// Handle shutdown signals
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM)
go func() {
<-sigCh
log.Println("Received shutdown signal")
cancel()
s.GracefulStop()
}()
go func() {
log.Println("Serving...")
if err := s.Serve(listener); err != nil && !errors.Is(err, grpc.ErrServerStopped) {
log.Printf("Server exited with error: %v\n", err)
}
wg.Done()
}()
// Wait for either context cancellation or server stop
select {
case <-ctx.Done():
log.Println("Context cancelled, initiating shutdown")
s.GracefulStop()
}
// Wait with timeout
done := make(chan struct{})
go func() {
wg.Wait()
close(done)
}()
select {
case <-done:
log.Println("Server stopped gracefully")
case <-time.After(10 * time.Second):
log.Println("Shutdown timeout, forcing stop")
s.Stop()
}

}
7 changes: 1 addition & 6 deletions execution.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ import (
"github.com/ethereum/go-ethereum/ethclient"
"github.com/ethereum/go-ethereum/rpc"

"github.com/rollkit/go-execution"
proxy_json_rpc "github.com/rollkit/go-execution/proxy/jsonrpc"
execution "github.com/rollkit/go-execution"
execution_types "github.com/rollkit/go-execution/types"
)

Expand All @@ -43,16 +42,12 @@ type EngineAPIExecutionClient struct {

// NewEngineAPIExecutionClient creates a new instance of EngineAPIExecutionClient
func NewEngineAPIExecutionClient(
proxyConfig *proxy_json_rpc.Config,
ethURL,
engineURL string,
jwtSecret string,
genesisHash common.Hash,
feeRecipient common.Address,
) (*EngineAPIExecutionClient, error) {
proxyClient := proxy_json_rpc.NewClient()
proxyClient.SetConfig(proxyConfig)

ethClient, err := ethclient.Dial(ethURL)
if err != nil {
return nil, err
Expand Down
5 changes: 0 additions & 5 deletions execution_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import (
"github.com/ethereum/go-ethereum/core/types"

"github.com/rollkit/go-execution-evm"
proxy_json_rpc "github.com/rollkit/go-execution/proxy/jsonrpc"
execution_types "github.com/rollkit/go-execution/types"
)

Expand All @@ -40,7 +39,6 @@ func TestEngineAPIExecutionClient_InitChain(t *testing.T) {

jwtSecret := generateTestJWTSecret()
client, err := execution.NewEngineAPIExecutionClient(
&proxy_json_rpc.Config{},
mockEth.URL,
mockEngine.URL,
jwtSecret,
Expand Down Expand Up @@ -81,7 +79,6 @@ func TestEngineAPIExecutionClient_ExecuteTxs(t *testing.T) {
prevStateRoot := execution_types.Hash(common.Hex2Bytes("111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000"))

client, err := execution.NewEngineAPIExecutionClient(
&proxy_json_rpc.Config{},
mockEth.URL,
mockEngine.URL,
jwtSecret,
Expand Down Expand Up @@ -128,7 +125,6 @@ func TestEngineAPIExecutionClient_GetTxs(t *testing.T) {

jwtSecret := generateTestJWTSecret()
client, err := execution.NewEngineAPIExecutionClient(
&proxy_json_rpc.Config{},
mockEth.URL,
mockEngine.URL,
jwtSecret,
Expand Down Expand Up @@ -197,7 +193,6 @@ func TestEngineAPIExecutionClient_SetFinal(t *testing.T) {

jwtSecret := generateTestJWTSecret()
client, err := execution.NewEngineAPIExecutionClient(
&proxy_json_rpc.Config{},
mockEth.URL,
mockEngine.URL,
jwtSecret,
Expand Down
6 changes: 5 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ require (
github.com/consensys/bavard v0.1.22 // indirect
github.com/consensys/gnark-crypto v0.14.0 // indirect
github.com/containerd/log v0.1.0 // indirect
github.com/cosmos/gogoproto v1.7.0 // indirect
github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect
github.com/crate-crypto/go-kzg-4844 v1.1.0 // indirect
Expand All @@ -34,6 +35,7 @@ require (
github.com/gofrs/flock v0.8.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
github.com/google/go-cmp v0.6.0 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/holiman/uint256 v1.3.1 // indirect
Expand Down Expand Up @@ -84,9 +86,10 @@ require (
go.uber.org/zap v1.27.0 // indirect
golang.org/x/crypto v0.29.0 // indirect
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect
golang.org/x/net v0.30.0 // indirect
golang.org/x/sync v0.9.0 // indirect
golang.org/x/sys v0.27.0 // indirect
golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect
golang.org/x/text v0.20.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect
google.golang.org/protobuf v1.35.2 // indirect
Expand All @@ -101,4 +104,5 @@ require (
github.com/docker/go-connections v0.5.0
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/stretchr/testify v1.9.0
google.golang.org/grpc v1.67.1
)
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4=
github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg=
Expand Down Expand Up @@ -106,6 +108,8 @@ github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQg
github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
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.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk=
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
Expand Down
3 changes: 0 additions & 3 deletions integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethclient"

proxy_json_rpc "github.com/rollkit/go-execution/proxy/jsonrpc"
rollkit_types "github.com/rollkit/go-execution/types"
)

Expand Down Expand Up @@ -132,7 +131,6 @@ func TestExecutionClientLifecycle(t *testing.T) {
require.NoError(t, err)

executionClient, err := NewEngineAPIExecutionClient(
&proxy_json_rpc.Config{},
TEST_ETH_URL,
TEST_ENGINE_URL,
JWT_SECRET,
Expand Down Expand Up @@ -213,7 +211,6 @@ func TestExecutionClient_InitChain_InvalidPayloadTimestamp(t *testing.T) {
blockTime := time.Date(2024, 3, 13, 13, 54, 0, 0, time.UTC) // pre-cancun timestamp not supported

executionClient, err := NewEngineAPIExecutionClient(
&proxy_json_rpc.Config{},
TEST_ETH_URL,
TEST_ENGINE_URL,
JWT_SECRET,
Expand Down
Loading