Skip to content

Commit 752e4e1

Browse files
authored
fix: Fix blob fee overflow on rollup-relayer and gas-oracle (#1772)
1 parent 2ecc42e commit 752e4e1

File tree

19 files changed

+105
-43
lines changed

19 files changed

+105
-43
lines changed

common/testcontainers/docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ services:
3434

3535
# Sets up the genesis configuration for the go-ethereum client from a JSON file.
3636
geth-genesis:
37-
image: "ethereum/client-go:v1.13.14"
37+
image: "ethereum/client-go:v1.14.0"
3838
command: --datadir=/data/execution init /data/execution/genesis.json
3939
volumes:
4040
- data:/data
@@ -80,7 +80,7 @@ services:
8080
# Runs the go-ethereum execution client with the specified, unlocked account and necessary
8181
# APIs to allow for proof-of-stake consensus via Prysm.
8282
geth:
83-
image: "ethereum/client-go:v1.13.14"
83+
image: "ethereum/client-go:v1.14.0"
8484
command:
8585
- --http
8686
- --http.api=eth,net,web3

common/testcontainers/docker/l1geth/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ethereum/client-go:v1.13.14
1+
FROM ethereum/client-go:v1.14.0
22

33
COPY password /l1geth/
44
COPY genesis.json /l1geth/

common/testcontainers/testcontainers.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,13 +167,13 @@ func (t *TestcontainerApps) GetPoSL1EndPoint() (string, error) {
167167
return contrainer.PortEndpoint(context.Background(), "8545/tcp", "http")
168168
}
169169

170-
// GetPoSL1Client returns a ethclient by dialing running PoS L1 client
171-
func (t *TestcontainerApps) GetPoSL1Client() (*ethclient.Client, error) {
170+
// GetPoSL1Client returns a raw rpc client by dialing the L1 node
171+
func (t *TestcontainerApps) GetPoSL1Client() (*rpc.Client, error) {
172172
endpoint, err := t.GetPoSL1EndPoint()
173173
if err != nil {
174174
return nil, err
175175
}
176-
return ethclient.Dial(endpoint)
176+
return rpc.Dial(endpoint)
177177
}
178178

179179
// GetDBEndPoint returns the endpoint of the running postgres container
@@ -221,7 +221,6 @@ func (t *TestcontainerApps) GetGormDBClient() (*gorm.DB, error) {
221221

222222
// GetL2GethClient returns a ethclient by dialing running L2Geth
223223
func (t *TestcontainerApps) GetL2GethClient() (*ethclient.Client, error) {
224-
225224
rpcCli, err := t.GetL2Client()
226225
if err != nil {
227226
return nil, err

common/testcontainers/testcontainers_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package testcontainers
33
import (
44
"testing"
55

6-
"github.com/scroll-tech/go-ethereum/ethclient"
76
"github.com/stretchr/testify/assert"
87
"gorm.io/gorm"
98
)
@@ -14,7 +13,6 @@ func TestNewTestcontainerApps(t *testing.T) {
1413
err error
1514
endpoint string
1615
gormDBclient *gorm.DB
17-
ethclient *ethclient.Client
1816
)
1917

2018
testApps := NewTestcontainerApps()
@@ -32,17 +30,17 @@ func TestNewTestcontainerApps(t *testing.T) {
3230
endpoint, err = testApps.GetL2GethEndPoint()
3331
assert.NoError(t, err)
3432
assert.NotEmpty(t, endpoint)
35-
ethclient, err = testApps.GetL2GethClient()
33+
l2RawClient, err := testApps.GetL2Client()
3634
assert.NoError(t, err)
37-
assert.NotNil(t, ethclient)
35+
assert.NotNil(t, l2RawClient)
3836

3937
assert.NoError(t, testApps.StartPoSL1Container())
4038
endpoint, err = testApps.GetPoSL1EndPoint()
4139
assert.NoError(t, err)
4240
assert.NotEmpty(t, endpoint)
43-
ethclient, err = testApps.GetPoSL1Client()
41+
l1RawClient, err := testApps.GetPoSL1Client()
4442
assert.NoError(t, err)
45-
assert.NotNil(t, ethclient)
43+
assert.NotNil(t, l1RawClient)
4644

4745
assert.NoError(t, testApps.StartWeb3SignerContainer(1))
4846
endpoint, err = testApps.GetWeb3SignerEndpoint()

common/version/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"runtime/debug"
66
)
77

8-
var tag = "v4.7.5"
8+
var tag = "v4.7.6"
99

1010
var commit = func() string {
1111
if info, ok := debug.ReadBuildInfo(); ok {

rollup/cmd/gas_oracle/app/app.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,26 @@ func action(ctx *cli.Context) error {
6666
registry := prometheus.DefaultRegisterer
6767
observability.Server(ctx, db)
6868

69-
l1client, err := ethclient.Dial(cfg.L1Config.Endpoint)
69+
// Init L1 connection
70+
l1RpcClient, err := rpc.Dial(cfg.L1Config.Endpoint)
7071
if err != nil {
71-
log.Crit("failed to connect l1 geth", "config file", cfgFile, "error", err)
72+
log.Crit("failed to dial raw RPC client to L1 endpoint", "endpoint", cfg.L1Config.Endpoint, "error", err)
7273
}
74+
l1client := ethclient.NewClient(l1RpcClient)
7375

74-
l1watcher := watcher.NewL1WatcherClient(ctx.Context, l1client, cfg.L1Config.StartHeight, db, registry)
76+
// sanity check config
77+
if cfg.L1Config.RelayerConfig.GasOracleConfig.L1BaseFeeLimit == 0 || cfg.L1Config.RelayerConfig.GasOracleConfig.L1BlobBaseFeeLimit == 0 {
78+
log.Crit("gas-oracle `l1_base_fee_limit` and `l1_blob_base_fee_limit` configs must be set")
79+
}
80+
81+
// Init watcher and relayer
82+
l1watcher := watcher.NewL1WatcherClient(ctx.Context, l1RpcClient, cfg.L1Config.StartHeight, db, registry)
7583

7684
l1relayer, err := relayer.NewLayer1Relayer(ctx.Context, db, cfg.L1Config.RelayerConfig, relayer.ServiceTypeL1GasOracle, registry)
7785
if err != nil {
7886
log.Crit("failed to create new l1 relayer", "config file", cfgFile, "error", err)
7987
}
88+
8089
// Start l1 watcher process
8190
go utils.LoopWithContext(subCtx, 10*time.Second, func(ctx context.Context) {
8291
// Fetch the latest block number to decrease the delay when fetching gas prices

rollup/conf/config.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
"check_committed_batches_window_minutes": 5,
2222
"l1_base_fee_default": 15000000000,
2323
"l1_blob_base_fee_default": 1,
24-
"l1_blob_base_fee_threshold": 0
24+
"l1_blob_base_fee_threshold": 0,
25+
"l1_base_fee_limit": 20000000000,
26+
"l1_blob_base_fee_limit": 20000000000
2527
},
2628
"gas_oracle_sender_signer_config": {
2729
"signer_type": "PrivateKey",

rollup/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ require (
5151
github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect
5252
github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect
5353
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
54-
github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea // indirect
54+
github.com/deckarep/golang-set v1.8.0 // indirect
5555
github.com/edsrzf/mmap-go v1.0.0 // indirect
5656
github.com/ethereum/c-kzg-4844/v2 v2.1.5 // indirect
5757
github.com/fjl/memsize v0.0.2 // indirect

rollup/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
8888
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
8989
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
9090
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
91-
github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea h1:j4317fAZh7X6GqbFowYdYdI0L9bwxL07jyPZIdepyZ0=
92-
github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ=
91+
github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4=
92+
github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo=
9393
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
9494
github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw=
9595
github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=

rollup/internal/config/relayer.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,10 @@ type GasOracleConfig struct {
109109
L1BaseFeeDefault uint64 `json:"l1_base_fee_default"`
110110
L1BlobBaseFeeDefault uint64 `json:"l1_blob_base_fee_default"`
111111

112+
// Upper limit values for gas oracle updates
113+
L1BaseFeeLimit uint64 `json:"l1_base_fee_limit"`
114+
L1BlobBaseFeeLimit uint64 `json:"l1_blob_base_fee_limit"`
115+
112116
// L1BlobBaseFeeThreshold the threshold of L1 blob base fee to enter the default gas price mode
113117
L1BlobBaseFeeThreshold uint64 `json:"l1_blob_base_fee_threshold"`
114118
}

0 commit comments

Comments
 (0)