Skip to content

Commit 22dd390

Browse files
authored
fix(gas-oracle): check blob gas fee before entering default gas price mode (#1565)
Co-authored-by: colinlyguo <[email protected]>
1 parent 54d8236 commit 22dd390

File tree

7 files changed

+15
-21
lines changed

7 files changed

+15
-21
lines changed

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.4.75"
8+
var tag = "v4.4.76"
99

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

rollup/cmd/gas_oracle/app/app.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,9 @@ func action(ctx *cli.Context) error {
7878
log.Crit("failed to connect l2 geth", "config file", cfgFile, "error", err)
7979
}
8080

81-
genesisPath := ctx.String(utils.Genesis.Name)
82-
genesis, err := utils.ReadGenesis(genesisPath)
83-
if err != nil {
84-
log.Crit("failed to read genesis", "genesis file", genesisPath, "error", err)
85-
}
86-
8781
l1watcher := watcher.NewL1WatcherClient(ctx.Context, l1client, cfg.L1Config.StartHeight, db, registry)
8882

89-
l1relayer, err := relayer.NewLayer1Relayer(ctx.Context, db, cfg.L1Config.RelayerConfig, genesis.Config, relayer.ServiceTypeL1GasOracle, registry)
83+
l1relayer, err := relayer.NewLayer1Relayer(ctx.Context, db, cfg.L1Config.RelayerConfig, relayer.ServiceTypeL1GasOracle, registry)
9084
if err != nil {
9185
log.Crit("failed to create new l1 relayer", "config file", cfgFile, "error", err)
9286
}

rollup/conf/config.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"gas_price_diff": 50000,
2121
"check_committed_batches_window_minutes": 5,
2222
"l1_base_fee_default": 15000000000,
23-
"l1_blob_base_fee_default": 1
23+
"l1_blob_base_fee_default": 1,
24+
"l1_blob_base_fee_threshold": 0
2425
},
2526
"gas_oracle_sender_signer_config": {
2627
"signer_type": "PrivateKey",

rollup/internal/config/relayer.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ type GasOracleConfig struct {
8989
CheckCommittedBatchesWindowMinutes int `json:"check_committed_batches_window_minutes"`
9090
L1BaseFeeDefault uint64 `json:"l1_base_fee_default"`
9191
L1BlobBaseFeeDefault uint64 `json:"l1_blob_base_fee_default"`
92+
93+
// L1BlobBaseFeeThreshold the threshold of L1 blob base fee to enter the default gas price mode
94+
L1BlobBaseFeeThreshold uint64 `json:"l1_blob_base_fee_threshold"`
9295
}
9396

9497
// SignerConfig - config of signer, contains type and config corresponding to type

rollup/internal/controller/relayer/l1_relayer.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/prometheus/client_golang/prometheus"
1212
"github.com/scroll-tech/go-ethereum/accounts/abi"
1313
"github.com/scroll-tech/go-ethereum/log"
14-
"github.com/scroll-tech/go-ethereum/params"
1514
"gorm.io/gorm"
1615

1716
"scroll-tech/common/types"
@@ -30,8 +29,7 @@ import (
3029
type Layer1Relayer struct {
3130
ctx context.Context
3231

33-
cfg *config.RelayerConfig
34-
chainCfg *params.ChainConfig
32+
cfg *config.RelayerConfig
3533

3634
gasOracleSender *sender.Sender
3735
l1GasOracleABI *abi.ABI
@@ -49,7 +47,7 @@ type Layer1Relayer struct {
4947
}
5048

5149
// NewLayer1Relayer will return a new instance of Layer1RelayerClient
52-
func NewLayer1Relayer(ctx context.Context, db *gorm.DB, cfg *config.RelayerConfig, chainCfg *params.ChainConfig, serviceType ServiceType, reg prometheus.Registerer) (*Layer1Relayer, error) {
50+
func NewLayer1Relayer(ctx context.Context, db *gorm.DB, cfg *config.RelayerConfig, serviceType ServiceType, reg prometheus.Registerer) (*Layer1Relayer, error) {
5351
var gasOracleSender *sender.Sender
5452
var err error
5553

@@ -80,7 +78,6 @@ func NewLayer1Relayer(ctx context.Context, db *gorm.DB, cfg *config.RelayerConfi
8078

8179
l1Relayer := &Layer1Relayer{
8280
cfg: cfg,
83-
chainCfg: chainCfg,
8481
ctx: ctx,
8582
l1BlockOrm: orm.NewL1Block(db),
8683
l2BlockOrm: orm.NewL2Block(db),
@@ -166,7 +163,7 @@ func (r *Layer1Relayer) ProcessGasPriceOracle() {
166163
// If we are not committing batches due to high fees then we shouldn't update fees to prevent users from paying high l1_data_fee
167164
// Also, set fees to some default value, because we have already updated fees to some high values, probably
168165
var reachTimeout bool
169-
if reachTimeout, err = r.commitBatchReachTimeout(); reachTimeout && err == nil {
166+
if reachTimeout, err = r.commitBatchReachTimeout(); reachTimeout && block.BlobBaseFee > r.cfg.GasOracleConfig.L1BlobBaseFeeThreshold && err == nil {
170167
if r.lastBaseFee == r.cfg.GasOracleConfig.L1BaseFeeDefault && r.lastBlobBaseFee == r.cfg.GasOracleConfig.L1BlobBaseFeeDefault {
171168
return
172169
}

rollup/internal/controller/relayer/l1_relayer_test.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/agiledragon/gomonkey/v2"
99
"github.com/scroll-tech/go-ethereum/common"
1010
"github.com/scroll-tech/go-ethereum/crypto/kzg4844"
11-
"github.com/scroll-tech/go-ethereum/params"
1211
"github.com/smartystreets/goconvey/convey"
1312
"github.com/stretchr/testify/assert"
1413
"gorm.io/gorm"
@@ -36,7 +35,7 @@ func setupL1RelayerDB(t *testing.T) *gorm.DB {
3635
func testCreateNewL1Relayer(t *testing.T) {
3736
db := setupL1RelayerDB(t)
3837
defer database.CloseDB(db)
39-
relayer, err := NewLayer1Relayer(context.Background(), db, cfg.L2Config.RelayerConfig, &params.ChainConfig{}, ServiceTypeL1GasOracle, nil)
38+
relayer, err := NewLayer1Relayer(context.Background(), db, cfg.L2Config.RelayerConfig, ServiceTypeL1GasOracle, nil)
4039
assert.NoError(t, err)
4140
assert.NotNil(t, relayer)
4241
defer relayer.StopSenders()
@@ -58,7 +57,7 @@ func testL1RelayerGasOracleConfirm(t *testing.T) {
5857
l1Cfg := cfg.L1Config
5958
ctx, cancel := context.WithCancel(context.Background())
6059
defer cancel()
61-
l1Relayer, err := NewLayer1Relayer(ctx, db, l1Cfg.RelayerConfig, &params.ChainConfig{}, ServiceTypeL1GasOracle, nil)
60+
l1Relayer, err := NewLayer1Relayer(ctx, db, l1Cfg.RelayerConfig, ServiceTypeL1GasOracle, nil)
6261
assert.NoError(t, err)
6362
defer l1Relayer.StopSenders()
6463

@@ -91,7 +90,7 @@ func testL1RelayerProcessGasPriceOracle(t *testing.T) {
9190
l1Cfg := cfg.L1Config
9291
ctx, cancel := context.WithCancel(context.Background())
9392
defer cancel()
94-
l1Relayer, err := NewLayer1Relayer(ctx, db, l1Cfg.RelayerConfig, &params.ChainConfig{}, ServiceTypeL1GasOracle, nil)
93+
l1Relayer, err := NewLayer1Relayer(ctx, db, l1Cfg.RelayerConfig, ServiceTypeL1GasOracle, nil)
9594
assert.NoError(t, err)
9695
assert.NotNil(t, l1Relayer)
9796
defer l1Relayer.StopSenders()

rollup/tests/gas_oracle_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func testImportL1GasPrice(t *testing.T) {
3030
l1Cfg := rollupApp.Config.L1Config
3131

3232
// Create L1Relayer
33-
l1Relayer, err := relayer.NewLayer1Relayer(context.Background(), db, l1Cfg.RelayerConfig, &params.ChainConfig{LondonBlock: big.NewInt(0), BernoulliBlock: big.NewInt(0), CurieBlock: big.NewInt(0), DarwinTime: new(uint64), DarwinV2Time: new(uint64)}, relayer.ServiceTypeL1GasOracle, nil)
33+
l1Relayer, err := relayer.NewLayer1Relayer(context.Background(), db, l1Cfg.RelayerConfig, relayer.ServiceTypeL1GasOracle, nil)
3434
assert.NoError(t, err)
3535
defer l1Relayer.StopSenders()
3636

@@ -105,7 +105,7 @@ func testImportDefaultL1GasPriceDueToL1GasPriceSpike(t *testing.T) {
105105
// set CheckCommittedBatchesWindowMinutes to zero to not pass check for commit batch timeout
106106
l1CfgCopy.RelayerConfig.GasOracleConfig.CheckCommittedBatchesWindowMinutes = 0
107107
// Create L1Relayer
108-
l1Relayer, err := relayer.NewLayer1Relayer(context.Background(), db, l1CfgCopy.RelayerConfig, &params.ChainConfig{BernoulliBlock: big.NewInt(0), CurieBlock: big.NewInt(0)}, relayer.ServiceTypeL1GasOracle, nil)
108+
l1Relayer, err := relayer.NewLayer1Relayer(context.Background(), db, l1CfgCopy.RelayerConfig, relayer.ServiceTypeL1GasOracle, nil)
109109
assert.NoError(t, err)
110110
defer l1Relayer.StopSenders()
111111

0 commit comments

Comments
 (0)