Skip to content

Commit 6201db8

Browse files
fix(eth): use headers for block height and base fee
1 parent 170a33c commit 6201db8

File tree

5 files changed

+38
-42
lines changed

5 files changed

+38
-42
lines changed

pkg/chain/ethereum/block_counter.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -201,12 +201,12 @@ func (bc *BlockCounter) subscribeBlocks(
201201
}
202202
}()
203203

204-
lastBlock, err := chainReader.BlockByNumber(ctx, nil)
204+
lastHeader, err := chainReader.HeaderByNumber(ctx, nil)
205205
if err != nil {
206206
return err
207207
}
208208

209-
bc.subscriptionChannel <- block{lastBlock.Number.String()}
209+
bc.subscriptionChannel <- block{lastHeader.Number.String()}
210210

211211
return nil
212212
}
@@ -215,17 +215,17 @@ func (bc *BlockCounter) subscribeBlocks(
215215
func CreateBlockCounter(chainReader ChainReader) (*BlockCounter, error) {
216216
ctx := context.Background()
217217

218-
startupBlock, err := chainReader.BlockByNumber(ctx, nil)
218+
startupHeader, err := chainReader.HeaderByNumber(ctx, nil)
219219
if err != nil {
220220
return nil,
221221
fmt.Errorf(
222-
"failed to get initial block from the chain: [%v]",
222+
"failed to get initial block header from the chain: [%v]",
223223
err,
224224
)
225225
}
226226

227227
blockCounter := &BlockCounter{
228-
latestBlockHeight: startupBlock.Number.Uint64(),
228+
latestBlockHeight: startupHeader.Number.Uint64(),
229229
waiters: make(map[uint64][]chan uint64),
230230
subscriptionChannel: make(chan block),
231231
}

pkg/chain/ethereum/chain.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ type Subscription interface {
3939

4040
// ChainReader provides access to the blockchain.
4141
type ChainReader interface {
42-
// BlockByNumber gets the block by its number. The block number argument
43-
// can be nil to select the latest block.
44-
BlockByNumber(ctx context.Context, number *big.Int) (*Block, error)
42+
// HeaderByNumber gets the block header by its number. The block header
43+
// number argument can be nil to select the latest block header.
44+
HeaderByNumber(ctx context.Context, number *big.Int) (*Header, error)
4545

4646
// SubscribeNewHead subscribes to notifications about changes of the
4747
// head block of the canonical chain.

pkg/chain/ethereum/ethutil/adapter.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,17 @@ type ethereumAdapter struct {
1414
delegate EthereumClient
1515
}
1616

17-
func (ea *ethereumAdapter) BlockByNumber(
17+
func (ea *ethereumAdapter) HeaderByNumber(
1818
ctx context.Context,
1919
number *big.Int,
20-
) (*chainEthereum.Block, error) {
21-
block, err := ea.delegate.BlockByNumber(ctx, number)
20+
) (*chainEthereum.Header, error) {
21+
header, err := ea.delegate.HeaderByNumber(ctx, number)
2222
if err != nil {
2323
return nil, err
2424
}
2525

26-
return &chainEthereum.Block{
27-
Header: &chainEthereum.Header{
28-
Number: block.Number(),
29-
},
26+
return &chainEthereum.Header{
27+
Number: header.Number,
3028
}, nil
3129
}
3230

pkg/chain/ethereum/ethutil/adapter_test.go

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import (
1515
chainEthereum "github.com/keep-network/keep-common/pkg/chain/ethereum"
1616
)
1717

18-
func TestEthereumAdapter_BlockByNumber(t *testing.T) {
18+
func TestEthereumAdapter_HeaderByNumber(t *testing.T) {
1919
client := &mockAdaptedEthereumClient{
2020
blocks: []*big.Int{
2121
big.NewInt(0),
@@ -31,35 +31,35 @@ func TestEthereumAdapter_BlockByNumber(t *testing.T) {
3131

3232
adapter := &ethereumAdapter{client}
3333

34-
blockOne, err := adapter.BlockByNumber(context.Background(), big.NewInt(1))
34+
headerOne, err := adapter.HeaderByNumber(context.Background(), big.NewInt(1))
3535
if err != nil {
3636
t.Fatal(err)
3737
}
3838

39-
lastBlock, err := adapter.BlockByNumber(context.Background(), nil)
39+
lastHeader, err := adapter.HeaderByNumber(context.Background(), nil)
4040
if err != nil {
4141
t.Fatal(err)
4242
}
4343

44-
expectedBlockOneNumber := big.NewInt(1)
45-
if expectedBlockOneNumber.Cmp(blockOne.Number) != 0 {
44+
expectedHeaderOneNumber := big.NewInt(1)
45+
if expectedHeaderOneNumber.Cmp(headerOne.Number) != 0 {
4646
t.Errorf(
47-
"unexpected block number\n"+
47+
"unexpected header number\n"+
4848
"expected: [%v]\n"+
4949
"actual: [%v]",
50-
expectedBlockOneNumber,
51-
blockOne.Number,
50+
expectedHeaderOneNumber,
51+
headerOne.Number,
5252
)
5353
}
5454

55-
expectedLastBlockNumber := big.NewInt(2)
56-
if expectedLastBlockNumber.Cmp(lastBlock.Number) != 0 {
55+
expectedLastHeaderNumber := big.NewInt(2)
56+
if expectedLastHeaderNumber.Cmp(lastHeader.Number) != 0 {
5757
t.Errorf(
58-
"unexpected last block number\n"+
58+
"unexpected last header number\n"+
5959
"expected: [%v]\n"+
6060
"actual: [%v]",
61-
expectedLastBlockNumber,
62-
lastBlock.Number,
61+
expectedLastHeaderNumber,
62+
lastHeader.Number,
6363
)
6464
}
6565
}
@@ -166,22 +166,20 @@ type mockAdaptedEthereumClient struct {
166166
nonces map[common.Address]uint64
167167
}
168168

169-
func (maec *mockAdaptedEthereumClient) BlockByNumber(
169+
func (maec *mockAdaptedEthereumClient) HeaderByNumber(
170170
ctx context.Context,
171171
number *big.Int,
172-
) (*types.Block, error) {
172+
) (*types.Header, error) {
173173
index := len(maec.blocks) - 1
174174

175175
if number != nil {
176176
index = int(number.Int64())
177177
}
178178

179-
return types.NewBlockWithHeader(
180-
&types.Header{
181-
Number: maec.blocks[index],
182-
BaseFee: maec.blocksBaseFee[index],
183-
},
184-
), nil
179+
return &types.Header{
180+
Number: maec.blocks[index],
181+
BaseFee: maec.blocksBaseFee[index],
182+
}, nil
185183
}
186184

187185
func (maec *mockAdaptedEthereumClient) SubscribeNewHead(

pkg/chain/ethereum/ethutil/mining_waiter.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ var (
3333
// increase the transaction's chance for being picked up by miners.
3434
//
3535
// Specific action depends on transaction type:
36-
// - legacy pre EIP-1559 transaction: bumps up the gas price by 20%
37-
// - dynamic fee post EIP-1559 transaction: bumps up the gas tip cap by 20%
38-
// and adjusts the gas fee cap accordingly
36+
// - legacy pre EIP-1559 transaction: bumps up the gas price by 20%
37+
// - dynamic fee post EIP-1559 transaction: bumps up the gas tip cap by 20%
38+
// and adjusts the gas fee cap accordingly
3939
type MiningWaiter struct {
4040
client EthereumClient
4141
checkInterval time.Duration
@@ -391,15 +391,15 @@ func (mw *MiningWaiter) forceMiningDynamicFeeTx(
391391
}
392392

393393
func (mw *MiningWaiter) latestBaseFee() (*big.Int, error) {
394-
latestBlock, err := mw.client.BlockByNumber(
394+
latestHeader, err := mw.client.HeaderByNumber(
395395
context.Background(),
396396
nil,
397397
)
398398
if err != nil {
399-
return nil, fmt.Errorf("could not get the latest block: [%v]", err)
399+
return nil, fmt.Errorf("could not get the latest block header: [%v]", err)
400400
}
401401

402-
baseFee := latestBlock.BaseFee()
402+
baseFee := latestHeader.BaseFee
403403
if baseFee == nil {
404404
return nil, fmt.Errorf("not an EIP-1559 block")
405405
}

0 commit comments

Comments
 (0)