Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
40d3f4ff
Unverified
Commit
40d3f4ff
authored
Jan 16, 2024
by
Roberto Bayardo
Committed by
GitHub
Jan 16, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
baseFee naming consistency (#8973)
parent
077254ed
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
144 additions
and
144 deletions
+144
-144
attributes.go
op-node/rollup/derive/attributes.go
+4
-4
l1_block_info.go
op-node/rollup/derive/l1_block_info.go
+2
-2
payload_util.go
op-node/rollup/derive/payload_util.go
+2
-2
system_config.go
op-node/rollup/derive/system_config.go
+2
-2
system_config_test.go
op-node/rollup/derive/system_config_test.go
+6
-6
types.go
op-service/eth/types.go
+4
-4
cli.go
op-service/txmgr/cli.go
+16
-16
noop.go
op-service/txmgr/metrics/noop.go
+1
-1
tx_metrics.go
op-service/txmgr/metrics/tx_metrics.go
+7
-7
price_bump_test.go
op-service/txmgr/price_bump_test.go
+44
-44
txmgr.go
op-service/txmgr/txmgr.go
+37
-37
txmgr_test.go
op-service/txmgr/txmgr_test.go
+19
-19
No files found.
op-node/rollup/derive/attributes.go
View file @
40d3f4ff
...
...
@@ -108,17 +108,17 @@ func (ba *FetchingAttributesBuilder) PreparePayloadAttributes(ctx context.Contex
}
// If this is the Ecotone activation block we update the system config by copying over "Scalar"
// to "Base
f
eeScalar". Note that after doing so, the L2 view of the system config differs from
// to "Base
F
eeScalar". Note that after doing so, the L2 view of the system config differs from
// that on the L1 up until we receive a "type 4" log event that explicitly updates the new
// scalars.
if
ba
.
rollupCfg
.
IsEcotoneActivationBlock
(
nextL2Time
)
{
// check if the scalar is too big to convert to uint32, and if so just use the uint32 max value
base
f
eeScalar
:=
uint32
(
math
.
MaxUint32
)
base
F
eeScalar
:=
uint32
(
math
.
MaxUint32
)
scalar
:=
new
(
big
.
Int
)
.
SetBytes
(
sysConfig
.
Scalar
[
:
])
if
scalar
.
Cmp
(
big
.
NewInt
(
math
.
MaxUint32
))
<
0
{
base
f
eeScalar
=
uint32
(
scalar
.
Int64
())
base
F
eeScalar
=
uint32
(
scalar
.
Int64
())
}
sysConfig
.
Base
feeScalar
=
basef
eeScalar
sysConfig
.
Base
FeeScalar
=
baseF
eeScalar
}
txs
:=
make
([]
hexutil
.
Bytes
,
0
,
1
+
len
(
depositTxs
))
...
...
op-node/rollup/derive/l1_block_info.go
View file @
40d3f4ff
...
...
@@ -269,8 +269,8 @@ func L1InfoDeposit(rollupCfg *rollup.Config, sysCfg eth.SystemConfig, seqNumber
var
err
error
if
isEcotoneButNotFirstBlock
(
rollupCfg
,
l2BlockTime
)
{
l1BlockInfo
.
BlobBaseFee
=
block
.
BlobBaseFee
()
l1BlockInfo
.
BlobBaseFeeScalar
=
sysCfg
.
BlobBase
f
eeScalar
l1BlockInfo
.
BaseFeeScalar
=
sysCfg
.
Base
f
eeScalar
l1BlockInfo
.
BlobBaseFeeScalar
=
sysCfg
.
BlobBase
F
eeScalar
l1BlockInfo
.
BaseFeeScalar
=
sysCfg
.
Base
F
eeScalar
data
,
err
=
l1BlockInfo
.
marshalBinaryEcotone
()
}
else
{
l1BlockInfo
.
L1FeeOverhead
=
sysCfg
.
Overhead
...
...
op-node/rollup/derive/payload_util.go
View file @
40d3f4ff
...
...
@@ -78,8 +78,8 @@ func PayloadToSystemConfig(rollupCfg *rollup.Config, payload *eth.ExecutionPaylo
Overhead
:
info
.
L1FeeOverhead
,
Scalar
:
info
.
L1FeeScalar
,
GasLimit
:
uint64
(
payload
.
GasLimit
),
Base
f
eeScalar
:
info
.
BaseFeeScalar
,
BlobBase
f
eeScalar
:
info
.
BlobBaseFeeScalar
,
Base
F
eeScalar
:
info
.
BaseFeeScalar
,
BlobBase
F
eeScalar
:
info
.
BlobBaseFeeScalar
,
},
err
}
}
op-node/rollup/derive/system_config.go
View file @
40d3f4ff
...
...
@@ -164,8 +164,8 @@ func ProcessSystemConfigUpdateLogEvent(destSysCfg *eth.SystemConfig, ev *types.L
if
!
solabi
.
EmptyReader
(
reader
)
{
return
NewCriticalError
(
errors
.
New
(
"too many bytes"
))
}
destSysCfg
.
Base
f
eeScalar
=
binary
.
BigEndian
.
Uint32
(
packed
[
0
:
4
])
destSysCfg
.
BlobBase
f
eeScalar
=
binary
.
BigEndian
.
Uint32
(
packed
[
4
:
8
])
destSysCfg
.
Base
F
eeScalar
=
binary
.
BigEndian
.
Uint32
(
packed
[
0
:
4
])
destSysCfg
.
BlobBase
F
eeScalar
=
binary
.
BigEndian
.
Uint32
(
packed
[
4
:
8
])
return
nil
default
:
return
fmt
.
Errorf
(
"unrecognized L1 sysCfg update type: %s"
,
updateType
)
...
...
op-node/rollup/derive/system_config_test.go
View file @
40d3f4ff
...
...
@@ -149,19 +149,19 @@ func TestProcessSystemConfigUpdateLogEvent(t *testing.T) {
},
},
hook
:
func
(
t
*
testing
.
T
,
log
*
types
.
Log
)
*
types
.
Log
{
base
f
eeScalar
:=
big
.
NewInt
(
0xaa
)
blobBase
f
eeScalar
:=
big
.
NewInt
(
0xbb
)
base
F
eeScalar
:=
big
.
NewInt
(
0xaa
)
blobBase
F
eeScalar
:=
big
.
NewInt
(
0xbb
)
packed
:=
make
([]
byte
,
8
)
base
f
eeScalar
.
FillBytes
(
packed
[
0
:
4
])
blobBase
f
eeScalar
.
FillBytes
(
packed
[
4
:
8
])
base
F
eeScalar
.
FillBytes
(
packed
[
0
:
4
])
blobBase
F
eeScalar
.
FillBytes
(
packed
[
4
:
8
])
data
,
err
:=
bytesArgs
.
Pack
(
packed
)
require
.
NoError
(
t
,
err
)
log
.
Data
=
data
return
log
},
config
:
eth
.
SystemConfig
{
Base
f
eeScalar
:
0xaa
,
BlobBase
f
eeScalar
:
0xbb
,
Base
F
eeScalar
:
0xaa
,
BlobBase
F
eeScalar
:
0xbb
,
},
err
:
false
,
},
...
...
op-service/eth/types.go
View file @
40d3f4ff
...
...
@@ -316,10 +316,10 @@ type SystemConfig struct {
Scalar
Bytes32
`json:"scalar"`
// GasLimit identifies the L2 block gas limit
GasLimit
uint64
`json:"gasLimit"`
// Base
f
eeScalar scales the L1 calldata fee after the Ecotone upgrade
Base
feeScalar
uint32
`json:"basef
eeScalar"`
// BlobBase
f
eeScalar scales the L1 blob fee after the Ecotone upgrade
BlobBase
feeScalar
uint32
`json:"blobBasef
eeScalar"`
// Base
F
eeScalar scales the L1 calldata fee after the Ecotone upgrade
Base
FeeScalar
uint32
`json:"baseF
eeScalar"`
// BlobBase
F
eeScalar scales the L1 blob fee after the Ecotone upgrade
BlobBase
FeeScalar
uint32
`json:"blobBaseF
eeScalar"`
// More fields can be added for future SystemConfig versions.
}
...
...
op-service/txmgr/cli.go
View file @
40d3f4ff
...
...
@@ -29,7 +29,7 @@ const (
SafeAbortNonceTooLowCountFlagName
=
"safe-abort-nonce-too-low-count"
FeeLimitMultiplierFlagName
=
"fee-limit-multiplier"
FeeLimitThresholdFlagName
=
"txmgr.fee-limit-threshold"
MinBase
f
eeFlagName
=
"txmgr.min-basefee"
MinBase
F
eeFlagName
=
"txmgr.min-basefee"
MinTipCapFlagName
=
"txmgr.min-tip-cap"
ResubmissionTimeoutFlagName
=
"resubmission-timeout"
NetworkTimeoutFlagName
=
"network-timeout"
...
...
@@ -139,8 +139,8 @@ func CLIFlagsWithDefaults(envPrefix string, defaults DefaultFlagValues) []cli.Fl
EnvVars
:
prefixEnvVars
(
"TXMGR_FEE_LIMIT_THRESHOLD"
),
},
&
cli
.
Float64Flag
{
Name
:
MinBase
f
eeFlagName
,
Usage
:
"Enforces a minimum basefee (in GWei) to assume when determining tx fees. Off by default."
,
Name
:
MinBase
F
eeFlagName
,
Usage
:
"Enforces a minimum base
fee (in GWei) to assume when determining tx fees. Off by default."
,
EnvVars
:
prefixEnvVars
(
"TXMGR_MIN_BASEFEE"
),
},
&
cli
.
Float64Flag
{
...
...
@@ -193,7 +193,7 @@ type CLIConfig struct {
SafeAbortNonceTooLowCount
uint64
FeeLimitMultiplier
uint64
FeeLimitThresholdGwei
float64
MinBase
f
eeGwei
float64
MinBase
F
eeGwei
float64
MinTipCapGwei
float64
ResubmissionTimeout
time
.
Duration
ReceiptQueryInterval
time
.
Duration
...
...
@@ -231,9 +231,9 @@ func (m CLIConfig) Check() error {
if
m
.
FeeLimitMultiplier
==
0
{
return
errors
.
New
(
"must provide FeeLimitMultiplier"
)
}
if
m
.
MinBase
f
eeGwei
<
m
.
MinTipCapGwei
{
return
fmt
.
Errorf
(
"minBase
f
ee smaller than minTipCap, have %f < %f"
,
m
.
MinBase
f
eeGwei
,
m
.
MinTipCapGwei
)
if
m
.
MinBase
F
eeGwei
<
m
.
MinTipCapGwei
{
return
fmt
.
Errorf
(
"minBase
F
ee smaller than minTipCap, have %f < %f"
,
m
.
MinBase
F
eeGwei
,
m
.
MinTipCapGwei
)
}
if
m
.
ResubmissionTimeout
==
0
{
return
errors
.
New
(
"must provide ResubmissionTimeout"
)
...
...
@@ -266,7 +266,7 @@ func ReadCLIConfig(ctx *cli.Context) CLIConfig {
SafeAbortNonceTooLowCount
:
ctx
.
Uint64
(
SafeAbortNonceTooLowCountFlagName
),
FeeLimitMultiplier
:
ctx
.
Uint64
(
FeeLimitMultiplierFlagName
),
FeeLimitThresholdGwei
:
ctx
.
Float64
(
FeeLimitThresholdFlagName
),
MinBase
feeGwei
:
ctx
.
Float64
(
MinBasef
eeFlagName
),
MinBase
FeeGwei
:
ctx
.
Float64
(
MinBaseF
eeFlagName
),
MinTipCapGwei
:
ctx
.
Float64
(
MinTipCapFlagName
),
ResubmissionTimeout
:
ctx
.
Duration
(
ResubmissionTimeoutFlagName
),
ReceiptQueryInterval
:
ctx
.
Duration
(
ReceiptQueryIntervalFlagName
),
...
...
@@ -313,9 +313,9 @@ func NewConfig(cfg CLIConfig, l log.Logger) (Config, error) {
return
Config
{},
fmt
.
Errorf
(
"invalid fee limit threshold: %w"
,
err
)
}
minBase
fee
,
err
:=
eth
.
GweiToWei
(
cfg
.
MinBasef
eeGwei
)
minBase
Fee
,
err
:=
eth
.
GweiToWei
(
cfg
.
MinBaseF
eeGwei
)
if
err
!=
nil
{
return
Config
{},
fmt
.
Errorf
(
"invalid min basefee: %w"
,
err
)
return
Config
{},
fmt
.
Errorf
(
"invalid min base
fee: %w"
,
err
)
}
minTipCap
,
err
:=
eth
.
GweiToWei
(
cfg
.
MinTipCapGwei
)
...
...
@@ -328,7 +328,7 @@ func NewConfig(cfg CLIConfig, l log.Logger) (Config, error) {
ResubmissionTimeout
:
cfg
.
ResubmissionTimeout
,
FeeLimitMultiplier
:
cfg
.
FeeLimitMultiplier
,
FeeLimitThreshold
:
feeLimitThreshold
,
MinBase
fee
:
minBasef
ee
,
MinBase
Fee
:
minBaseF
ee
,
MinTipCap
:
minTipCap
,
ChainID
:
chainID
,
TxSendTimeout
:
cfg
.
TxSendTimeout
,
...
...
@@ -359,8 +359,8 @@ type Config struct {
// below this threshold.
FeeLimitThreshold
*
big
.
Int
// Minimum basefee (in Wei) to assume when determining tx fees.
MinBase
f
ee
*
big
.
Int
// Minimum base
fee (in Wei) to assume when determining tx fees.
MinBase
F
ee
*
big
.
Int
// Minimum tip cap (in Wei) to enforce when determining tx fees.
MinTipCap
*
big
.
Int
...
...
@@ -412,9 +412,9 @@ func (m Config) Check() error {
if
m
.
FeeLimitMultiplier
==
0
{
return
errors
.
New
(
"must provide FeeLimitMultiplier"
)
}
if
m
.
MinBase
fee
!=
nil
&&
m
.
MinTipCap
!=
nil
&&
m
.
MinBasef
ee
.
Cmp
(
m
.
MinTipCap
)
==
-
1
{
return
fmt
.
Errorf
(
"minBase
f
ee smaller than minTipCap, have %v < %v"
,
m
.
MinBase
f
ee
,
m
.
MinTipCap
)
if
m
.
MinBase
Fee
!=
nil
&&
m
.
MinTipCap
!=
nil
&&
m
.
MinBaseF
ee
.
Cmp
(
m
.
MinTipCap
)
==
-
1
{
return
fmt
.
Errorf
(
"minBase
F
ee smaller than minTipCap, have %v < %v"
,
m
.
MinBase
F
ee
,
m
.
MinTipCap
)
}
if
m
.
ResubmissionTimeout
==
0
{
return
errors
.
New
(
"must provide ResubmissionTimeout"
)
...
...
op-service/txmgr/metrics/noop.go
View file @
40d3f4ff
...
...
@@ -14,6 +14,6 @@ func (*NoopTxMetrics) RecordGasBumpCount(int) {}
func
(
*
NoopTxMetrics
)
RecordTxConfirmationLatency
(
int64
)
{}
func
(
*
NoopTxMetrics
)
TxConfirmed
(
*
types
.
Receipt
)
{}
func
(
*
NoopTxMetrics
)
TxPublished
(
string
)
{}
func
(
*
NoopTxMetrics
)
RecordBase
f
ee
(
*
big
.
Int
)
{}
func
(
*
NoopTxMetrics
)
RecordBase
F
ee
(
*
big
.
Int
)
{}
func
(
*
NoopTxMetrics
)
RecordTipCap
(
*
big
.
Int
)
{}
func
(
*
NoopTxMetrics
)
RPCError
()
{}
op-service/txmgr/metrics/tx_metrics.go
View file @
40d3f4ff
...
...
@@ -17,7 +17,7 @@ type TxMetricer interface {
RecordPendingTx
(
pending
int64
)
TxConfirmed
(
*
types
.
Receipt
)
TxPublished
(
string
)
RecordBase
f
ee
(
*
big
.
Int
)
RecordBase
F
ee
(
*
big
.
Int
)
RecordTipCap
(
*
big
.
Int
)
RPCError
()
}
...
...
@@ -33,7 +33,7 @@ type TxMetrics struct {
txPublishError
*
prometheus
.
CounterVec
publishEvent
*
metrics
.
Event
confirmEvent
metrics
.
EventVec
base
f
ee
prometheus
.
Gauge
base
F
ee
prometheus
.
Gauge
tipCap
prometheus
.
Gauge
rpcError
prometheus
.
Counter
}
...
...
@@ -104,10 +104,10 @@ func MakeTxMetrics(ns string, factory metrics.Factory) TxMetrics {
},
[]
string
{
"error"
}),
confirmEvent
:
metrics
.
NewEventVec
(
factory
,
ns
,
"txmgr"
,
"confirm"
,
"tx confirm"
,
[]
string
{
"status"
}),
publishEvent
:
metrics
.
NewEvent
(
factory
,
ns
,
"txmgr"
,
"publish"
,
"tx publish"
),
base
f
ee
:
factory
.
NewGauge
(
prometheus
.
GaugeOpts
{
base
F
ee
:
factory
.
NewGauge
(
prometheus
.
GaugeOpts
{
Namespace
:
ns
,
Name
:
"basefee_wei"
,
Help
:
"Latest L1 base
f
ee (in Wei)"
,
Help
:
"Latest L1 base
F
ee (in Wei)"
,
Subsystem
:
"txmgr"
,
}),
tipCap
:
factory
.
NewGauge
(
prometheus
.
GaugeOpts
{
...
...
@@ -158,9 +158,9 @@ func (t *TxMetrics) TxPublished(errString string) {
}
}
func
(
t
*
TxMetrics
)
RecordBase
fee
(
basef
ee
*
big
.
Int
)
{
bff
,
_
:=
base
f
ee
.
Float64
()
t
.
base
f
ee
.
Set
(
bff
)
func
(
t
*
TxMetrics
)
RecordBase
Fee
(
baseF
ee
*
big
.
Int
)
{
bff
,
_
:=
base
F
ee
.
Float64
()
t
.
base
F
ee
.
Set
(
bff
)
}
func
(
t
*
TxMetrics
)
RecordTipCap
(
tipcap
*
big
.
Int
)
{
...
...
op-service/txmgr/price_bump_test.go
View file @
40d3f4ff
...
...
@@ -14,19 +14,19 @@ import (
type
priceBumpTest
struct
{
prevGasTip
int64
prevBase
f
ee
int64
prevBase
F
ee
int64
newGasTip
int64
newBase
f
ee
int64
newBase
F
ee
int64
expectedTip
int64
expectedFC
int64
isBlobTx
bool
}
func
(
tc
*
priceBumpTest
)
run
(
t
*
testing
.
T
)
{
prevFC
:=
calcGasFeeCap
(
big
.
NewInt
(
tc
.
prevBase
f
ee
),
big
.
NewInt
(
tc
.
prevGasTip
))
prevFC
:=
calcGasFeeCap
(
big
.
NewInt
(
tc
.
prevBase
F
ee
),
big
.
NewInt
(
tc
.
prevGasTip
))
lgr
:=
testlog
.
Logger
(
t
,
log
.
LvlCrit
)
tip
,
fc
:=
updateFees
(
big
.
NewInt
(
tc
.
prevGasTip
),
prevFC
,
big
.
NewInt
(
tc
.
newGasTip
),
big
.
NewInt
(
tc
.
newBase
f
ee
),
tc
.
isBlobTx
,
lgr
)
tip
,
fc
:=
updateFees
(
big
.
NewInt
(
tc
.
prevGasTip
),
prevFC
,
big
.
NewInt
(
tc
.
newGasTip
),
big
.
NewInt
(
tc
.
newBase
F
ee
),
tc
.
isBlobTx
,
lgr
)
require
.
Equal
(
t
,
tc
.
expectedTip
,
tip
.
Int64
(),
"tip must be as expected"
)
require
.
Equal
(
t
,
tc
.
expectedFC
,
fc
.
Int64
(),
"fee cap must be as expected"
)
...
...
@@ -36,112 +36,112 @@ func TestUpdateFees(t *testing.T) {
require
.
Equal
(
t
,
int64
(
10
),
priceBump
,
"test must be updated if priceBump is adjusted"
)
tests
:=
[]
priceBumpTest
{
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
90
,
newBase
f
ee
:
900
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
90
,
newBase
F
ee
:
900
,
expectedTip
:
110
,
expectedFC
:
2310
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
90
,
newBase
f
ee
:
900
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
90
,
newBase
F
ee
:
900
,
expectedTip
:
200
,
expectedFC
:
4200
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
101
,
newBase
f
ee
:
1000
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
101
,
newBase
F
ee
:
1000
,
expectedTip
:
110
,
expectedFC
:
2310
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
101
,
newBase
f
ee
:
1000
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
101
,
newBase
F
ee
:
1000
,
expectedTip
:
200
,
expectedFC
:
4200
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
100
,
newBase
f
ee
:
1001
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
100
,
newBase
F
ee
:
1001
,
expectedTip
:
110
,
expectedFC
:
2310
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
100
,
newBase
f
ee
:
1001
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
100
,
newBase
F
ee
:
1001
,
expectedTip
:
200
,
expectedFC
:
4200
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
101
,
newBase
f
ee
:
900
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
101
,
newBase
F
ee
:
900
,
expectedTip
:
110
,
expectedFC
:
2310
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
101
,
newBase
f
ee
:
900
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
101
,
newBase
F
ee
:
900
,
expectedTip
:
200
,
expectedFC
:
4200
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
90
,
newBase
f
ee
:
1010
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
90
,
newBase
F
ee
:
1010
,
expectedTip
:
110
,
expectedFC
:
2310
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
90
,
newBase
f
ee
:
1010
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
90
,
newBase
F
ee
:
1010
,
expectedTip
:
200
,
expectedFC
:
4200
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
101
,
newBase
f
ee
:
2000
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
101
,
newBase
F
ee
:
2000
,
expectedTip
:
110
,
expectedFC
:
4110
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
101
,
newBase
f
ee
:
3000
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
101
,
newBase
F
ee
:
3000
,
expectedTip
:
200
,
expectedFC
:
6200
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
120
,
newBase
f
ee
:
900
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
120
,
newBase
F
ee
:
900
,
expectedTip
:
120
,
expectedFC
:
2310
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
220
,
newBase
f
ee
:
900
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
220
,
newBase
F
ee
:
900
,
expectedTip
:
220
,
expectedFC
:
4200
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
120
,
newBase
f
ee
:
1100
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
120
,
newBase
F
ee
:
1100
,
expectedTip
:
120
,
expectedFC
:
2320
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
220
,
newBase
f
ee
:
2000
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
220
,
newBase
F
ee
:
2000
,
expectedTip
:
220
,
expectedFC
:
4220
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
120
,
newBase
f
ee
:
1140
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
120
,
newBase
F
ee
:
1140
,
expectedTip
:
120
,
expectedFC
:
2400
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
220
,
newBase
f
ee
:
2040
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
220
,
newBase
F
ee
:
2040
,
expectedTip
:
220
,
expectedFC
:
4300
,
isBlobTx
:
true
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
120
,
newBase
f
ee
:
1200
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
120
,
newBase
F
ee
:
1200
,
expectedTip
:
120
,
expectedFC
:
2520
,
},
{
prevGasTip
:
100
,
prevBase
f
ee
:
1000
,
newGasTip
:
220
,
newBase
f
ee
:
2100
,
prevGasTip
:
100
,
prevBase
F
ee
:
1000
,
newGasTip
:
220
,
newBase
F
ee
:
2100
,
expectedTip
:
220
,
expectedFC
:
4420
,
isBlobTx
:
true
,
},
...
...
op-service/txmgr/txmgr.go
View file @
40d3f4ff
This diff is collapsed.
Click to expand it.
op-service/txmgr/txmgr_test.go
View file @
40d3f4ff
...
...
@@ -166,7 +166,7 @@ func (g *gasPricer) feesForEpoch(epoch int64) (*big.Int, *big.Int, uint64) {
return
epochGasTipCap
,
epochGasFeeCap
,
epochExcessBlobGas
}
func
(
g
*
gasPricer
)
base
f
ee
()
*
big
.
Int
{
func
(
g
*
gasPricer
)
base
F
ee
()
*
big
.
Int
{
g
.
mu
.
Lock
()
defer
g
.
mu
.
Unlock
()
return
new
(
big
.
Int
)
.
Mul
(
g
.
baseBaseFee
,
big
.
NewInt
(
g
.
epoch
))
...
...
@@ -263,7 +263,7 @@ func (b *mockBackend) HeaderByNumber(ctx context.Context, number *big.Int) (*typ
bg
:=
b
.
g
.
excessblobgas
()
return
&
types
.
Header
{
Number
:
num
,
BaseFee
:
b
.
g
.
base
f
ee
(),
BaseFee
:
b
.
g
.
base
F
ee
(),
ExcessBlobGas
:
&
bg
,
},
nil
}
...
...
@@ -275,7 +275,7 @@ func (b *mockBackend) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (ui
if
msg
.
GasFeeCap
.
Cmp
(
msg
.
GasTipCap
)
<
0
{
return
0
,
core
.
ErrTipAboveFeeCap
}
return
b
.
g
.
base
f
ee
()
.
Uint64
(),
nil
return
b
.
g
.
base
F
ee
()
.
Uint64
(),
nil
}
func
(
b
*
mockBackend
)
SuggestGasTipCap
(
ctx
context
.
Context
)
(
*
big
.
Int
,
error
)
{
...
...
@@ -1022,7 +1022,7 @@ func TestIncreaseGasPrice(t *testing.T) {
},
},
{
name
:
"enforces min bump on only basefee increase"
,
name
:
"enforces min bump on only base
fee increase"
,
run
:
func
(
t
*
testing
.
T
)
{
tx
,
newTx
:=
doGasPriceIncrease
(
t
,
100
,
1000
,
99
,
460
)
require
.
True
(
t
,
newTx
.
GasFeeCap
()
.
Cmp
(
tx
.
GasFeeCap
())
>
0
,
"new tx fee cap must be larger"
)
...
...
@@ -1061,7 +1061,7 @@ func TestIncreaseGasPrice(t *testing.T) {
}
}
// TestIncreaseGasPriceLimits asserts that if the L1 basefee & tip remain the
// TestIncreaseGasPriceLimits asserts that if the L1 base
fee & tip remain the
// same, repeated calls to IncreaseGasPrice eventually hit a limit.
func
TestIncreaseGasPriceLimits
(
t
*
testing
.
T
)
{
t
.
Run
(
"no-threshold"
,
func
(
t
*
testing
.
T
)
{
...
...
@@ -1094,7 +1094,7 @@ func testIncreaseGasPriceLimit(t *testing.T, lt gasPriceLimitTest) {
borkedTip
:=
int64
(
10
)
borkedFee
:=
int64
(
45
)
// simulate 100 excess blobs which yields a 50 wei blob basefee
// simulate 100 excess blobs which yields a 50 wei blob base
fee
borkedExcessBlobGas
:=
uint64
(
100
*
params
.
BlobTxBlobGasPerBlob
)
borkedBackend
:=
failingBackend
{
gasTip
:
big
.
NewInt
(
borkedTip
),
...
...
@@ -1227,9 +1227,9 @@ func TestNonceReset(t *testing.T) {
func
TestMinFees
(
t
*
testing
.
T
)
{
for
_
,
tt
:=
range
[]
struct
{
desc
string
minBase
f
ee
*
big
.
Int
minBase
F
ee
*
big
.
Int
minTipCap
*
big
.
Int
expectMinBase
f
ee
bool
expectMinBase
F
ee
bool
expectMinTipCap
bool
}{
{
...
...
@@ -1237,8 +1237,8 @@ func TestMinFees(t *testing.T) {
},
{
desc
:
"high-min-basefee"
,
minBase
f
ee
:
big
.
NewInt
(
10
_000_000
),
expectMinBase
f
ee
:
true
,
minBase
F
ee
:
big
.
NewInt
(
10
_000_000
),
expectMinBase
F
ee
:
true
,
},
{
desc
:
"high-min-tipcap"
,
...
...
@@ -1247,14 +1247,14 @@ func TestMinFees(t *testing.T) {
},
{
desc
:
"high-mins"
,
minBase
f
ee
:
big
.
NewInt
(
10
_000_000
),
minBase
F
ee
:
big
.
NewInt
(
10
_000_000
),
minTipCap
:
big
.
NewInt
(
1
_000_000
),
expectMinBase
f
ee
:
true
,
expectMinBase
F
ee
:
true
,
expectMinTipCap
:
true
,
},
{
desc
:
"low-min-basefee"
,
minBase
f
ee
:
big
.
NewInt
(
1
),
minBase
F
ee
:
big
.
NewInt
(
1
),
},
{
desc
:
"low-min-tipcap"
,
...
...
@@ -1262,24 +1262,24 @@ func TestMinFees(t *testing.T) {
},
{
desc
:
"low-mins"
,
minBase
f
ee
:
big
.
NewInt
(
1
),
minBase
F
ee
:
big
.
NewInt
(
1
),
minTipCap
:
big
.
NewInt
(
1
),
},
}
{
t
.
Run
(
tt
.
desc
,
func
(
t
*
testing
.
T
)
{
require
:=
require
.
New
(
t
)
conf
:=
configWithNumConfs
(
1
)
conf
.
MinBase
fee
=
tt
.
minBasef
ee
conf
.
MinBase
Fee
=
tt
.
minBaseF
ee
conf
.
MinTipCap
=
tt
.
minTipCap
h
:=
newTestHarnessWithConfig
(
t
,
conf
)
tip
,
base
f
ee
,
_
,
err
:=
h
.
mgr
.
suggestGasPriceCaps
(
context
.
TODO
())
tip
,
base
F
ee
,
_
,
err
:=
h
.
mgr
.
suggestGasPriceCaps
(
context
.
TODO
())
require
.
NoError
(
err
)
if
tt
.
expectMinBase
f
ee
{
require
.
Equal
(
tt
.
minBase
fee
,
basefee
,
"expect suggested basefee to equal MinBasef
ee"
)
if
tt
.
expectMinBase
F
ee
{
require
.
Equal
(
tt
.
minBase
Fee
,
baseFee
,
"expect suggested base fee to equal MinBaseF
ee"
)
}
else
{
require
.
Equal
(
h
.
gasPricer
.
baseBaseFee
,
base
fee
,
"expect suggested basefee to equal mock base
fee"
)
require
.
Equal
(
h
.
gasPricer
.
baseBaseFee
,
base
Fee
,
"expect suggested base fee to equal mock base
fee"
)
}
if
tt
.
expectMinTipCap
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment