Skip to content

Commit 2a08c31

Browse files
committed
Simplify finalized block retrieval
EthClient already supports fetching the finalized block, so there's no need to reimplement the logic.
1 parent 61d810a commit 2a08c31

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

l1/eth_subscriber.go

+11-15
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package l1
22

33
import (
44
"context"
5-
"encoding/json"
5+
"errors"
66
"fmt"
77
"math/big"
88
"time"
99

1010
"github.com/NethermindEth/juno/l1/contract"
11+
"github.com/ethereum/go-ethereum"
1112
"github.com/ethereum/go-ethereum/accounts/abi/bind"
1213
"github.com/ethereum/go-ethereum/common"
1314
"github.com/ethereum/go-ethereum/core/types"
@@ -16,6 +17,8 @@ import (
1617
"github.com/ethereum/go-ethereum/rpc"
1718
)
1819

20+
var finalizedBlockNumber = new(big.Int).SetInt64(rpc.FinalizedBlockNumber.Int64())
21+
1922
type EthSubscriber struct {
2023
ethClient *ethclient.Client
2124
client *rpc.Client
@@ -62,23 +65,16 @@ func (s *EthSubscriber) ChainID(ctx context.Context) (*big.Int, error) {
6265
}
6366

6467
func (s *EthSubscriber) FinalisedHeight(ctx context.Context) (uint64, error) {
65-
const method = "eth_getBlockByNumber"
6668
reqTimer := time.Now()
67-
68-
var raw json.RawMessage
69-
if err := s.client.CallContext(ctx, &raw, method, "finalized", false); err != nil { //nolint:misspell
69+
head, err := s.ethClient.HeaderByNumber(ctx, finalizedBlockNumber)
70+
if err != nil {
71+
if errors.Is(err, ethereum.NotFound) {
72+
s.listener.OnL1Call("eth_getBlockByNumber", time.Since(reqTimer))
73+
return 0, fmt.Errorf("finalised block not found")
74+
}
7075
return 0, fmt.Errorf("get finalised Ethereum block: %w", err)
7176
}
72-
s.listener.OnL1Call(method, time.Since(reqTimer))
73-
74-
var head *types.Header
75-
if err := json.Unmarshal(raw, &head); err != nil {
76-
return 0, err
77-
}
78-
79-
if head == nil {
80-
return 0, fmt.Errorf("finalised block not found")
81-
}
77+
s.listener.OnL1Call("eth_getBlockByNumber", time.Since(reqTimer))
8278

8379
return head.Number.Uint64(), nil
8480
}

0 commit comments

Comments
 (0)