@@ -149,21 +149,31 @@ func (c *ethkitChain) GasPrice(ctx context.Context) (*big.Int, error) {
149149}
150150
151151func (c * ethkitChain ) BaseFee (ctx context.Context ) (* big.Int , error ) {
152- block , err := c .Provider .BlockByNumber (ctx , nil )
153- if err != nil {
154- return nil , fmt .Errorf ("unable to get latest block: %w" , err )
155- }
152+ var baseFee , number * big.Int
153+
154+ block := c .Monitor .LatestBlock ()
155+ if block == nil || block .BaseFee () == nil {
156+ block , err := c .Provider .BlockByNumber (ctx , nil )
157+ if err != nil {
158+ return nil , fmt .Errorf ("unable to get latest block: %w" , err )
159+ }
160+
161+ baseFee = block .BaseFee ()
162+ if baseFee == nil {
163+ return nil , fmt .Errorf ("no base fee" )
164+ }
156165
157- baseFee := block .BaseFee ()
158- if baseFee == nil {
159- return nil , fmt .Errorf ("no base fee" )
166+ number = block .Number ()
167+ } else {
168+ baseFee = new (big.Int ).Set (block .BaseFee ())
169+ number = block .Number ()
160170 }
161171
162172 c .mu .Lock ()
163173 defer c .mu .Unlock ()
164174
165175 if c .baseFee == nil || baseFee .Cmp (c .baseFee ) != 0 {
166- c .Logger .DebugContext (ctx , "base fee" , slog .String ("baseFee" , baseFee .String ()), slog .String ("block" , block . Number () .String ()))
176+ c .Logger .DebugContext (ctx , "base fee" , slog .String ("baseFee" , baseFee .String ()), slog .String ("block" , number .String ()))
167177 c .baseFee = new (big.Int ).Set (baseFee )
168178 }
169179
0 commit comments