Skip to content

Commit bd1053c

Browse files
committed
graphql: add nil checks in Block resolver methods
1 parent e0d81d1 commit bd1053c

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

graphql/graphql.go

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -707,6 +707,9 @@ func (b *Block) resolveHeader(ctx context.Context) (*types.Header, error) {
707707
if err != nil {
708708
return nil, err
709709
}
710+
if b.header == nil {
711+
return nil, nil
712+
}
710713
if b.hash == (common.Hash{}) {
711714
b.hash = b.header.Hash()
712715
}
@@ -731,7 +734,7 @@ func (b *Block) resolveReceipts(ctx context.Context) ([]*types.Receipt, error) {
731734

732735
func (b *Block) Number(ctx context.Context) (hexutil.Uint64, error) {
733736
header, err := b.resolveHeader(ctx)
734-
if err != nil {
737+
if err != nil || header == nil {
735738
return 0, err
736739
}
737740

@@ -746,23 +749,23 @@ func (b *Block) Hash(ctx context.Context) (common.Hash, error) {
746749

747750
func (b *Block) GasLimit(ctx context.Context) (hexutil.Uint64, error) {
748751
header, err := b.resolveHeader(ctx)
749-
if err != nil {
752+
if err != nil || header == nil {
750753
return 0, err
751754
}
752755
return hexutil.Uint64(header.GasLimit), nil
753756
}
754757

755758
func (b *Block) GasUsed(ctx context.Context) (hexutil.Uint64, error) {
756759
header, err := b.resolveHeader(ctx)
757-
if err != nil {
760+
if err != nil || header == nil {
758761
return 0, err
759762
}
760763
return hexutil.Uint64(header.GasUsed), nil
761764
}
762765

763766
func (b *Block) BaseFeePerGas(ctx context.Context) (*hexutil.Big, error) {
764767
header, err := b.resolveHeader(ctx)
765-
if err != nil {
768+
if err != nil || header == nil {
766769
return nil, err
767770
}
768771
if header.BaseFee == nil {
@@ -773,7 +776,7 @@ func (b *Block) BaseFeePerGas(ctx context.Context) (*hexutil.Big, error) {
773776

774777
func (b *Block) NextBaseFeePerGas(ctx context.Context) (*hexutil.Big, error) {
775778
header, err := b.resolveHeader(ctx)
776-
if err != nil {
779+
if err != nil || header == nil {
777780
return nil, err
778781
}
779782
chaincfg := b.r.backend.ChainConfig()
@@ -811,63 +814,63 @@ func (b *Block) Parent(ctx context.Context) (*Block, error) {
811814

812815
func (b *Block) Difficulty(ctx context.Context) (hexutil.Big, error) {
813816
header, err := b.resolveHeader(ctx)
814-
if err != nil {
817+
if err != nil || header == nil {
815818
return hexutil.Big{}, err
816819
}
817820
return hexutil.Big(*header.Difficulty), nil
818821
}
819822

820823
func (b *Block) Timestamp(ctx context.Context) (hexutil.Uint64, error) {
821824
header, err := b.resolveHeader(ctx)
822-
if err != nil {
825+
if err != nil || header == nil {
823826
return 0, err
824827
}
825828
return hexutil.Uint64(header.Time), nil
826829
}
827830

828831
func (b *Block) Nonce(ctx context.Context) (hexutil.Bytes, error) {
829832
header, err := b.resolveHeader(ctx)
830-
if err != nil {
833+
if err != nil || header == nil {
831834
return hexutil.Bytes{}, err
832835
}
833836
return header.Nonce[:], nil
834837
}
835838

836839
func (b *Block) MixHash(ctx context.Context) (common.Hash, error) {
837840
header, err := b.resolveHeader(ctx)
838-
if err != nil {
841+
if err != nil || header == nil {
839842
return common.Hash{}, err
840843
}
841844
return header.MixDigest, nil
842845
}
843846

844847
func (b *Block) TransactionsRoot(ctx context.Context) (common.Hash, error) {
845848
header, err := b.resolveHeader(ctx)
846-
if err != nil {
849+
if err != nil || header == nil {
847850
return common.Hash{}, err
848851
}
849852
return header.TxHash, nil
850853
}
851854

852855
func (b *Block) StateRoot(ctx context.Context) (common.Hash, error) {
853856
header, err := b.resolveHeader(ctx)
854-
if err != nil {
857+
if err != nil || header == nil {
855858
return common.Hash{}, err
856859
}
857860
return header.Root, nil
858861
}
859862

860863
func (b *Block) ReceiptsRoot(ctx context.Context) (common.Hash, error) {
861864
header, err := b.resolveHeader(ctx)
862-
if err != nil {
865+
if err != nil || header == nil {
863866
return common.Hash{}, err
864867
}
865868
return header.ReceiptHash, nil
866869
}
867870

868871
func (b *Block) OmmerHash(ctx context.Context) (common.Hash, error) {
869872
header, err := b.resolveHeader(ctx)
870-
if err != nil {
873+
if err != nil || header == nil {
871874
return common.Hash{}, err
872875
}
873876
return header.UncleHash, nil
@@ -902,31 +905,31 @@ func (b *Block) Ommers(ctx context.Context) (*[]*Block, error) {
902905

903906
func (b *Block) ExtraData(ctx context.Context) (hexutil.Bytes, error) {
904907
header, err := b.resolveHeader(ctx)
905-
if err != nil {
908+
if err != nil || header == nil {
906909
return hexutil.Bytes{}, err
907910
}
908911
return header.Extra, nil
909912
}
910913

911914
func (b *Block) LogsBloom(ctx context.Context) (hexutil.Bytes, error) {
912915
header, err := b.resolveHeader(ctx)
913-
if err != nil {
916+
if err != nil || header == nil {
914917
return hexutil.Bytes{}, err
915918
}
916919
return header.Bloom.Bytes(), nil
917920
}
918921

919922
func (b *Block) RawHeader(ctx context.Context) (hexutil.Bytes, error) {
920923
header, err := b.resolveHeader(ctx)
921-
if err != nil {
924+
if err != nil || header == nil {
922925
return hexutil.Bytes{}, err
923926
}
924927
return rlp.EncodeToBytes(header)
925928
}
926929

927930
func (b *Block) Raw(ctx context.Context) (hexutil.Bytes, error) {
928931
block, err := b.resolve(ctx)
929-
if err != nil {
932+
if err != nil || block == nil {
930933
return hexutil.Bytes{}, err
931934
}
932935
return rlp.EncodeToBytes(block)
@@ -958,7 +961,7 @@ func (a BlockNumberArgs) NumberOrLatest() rpc.BlockNumberOrHash {
958961

959962
func (b *Block) Miner(ctx context.Context, args BlockNumberArgs) (*Account, error) {
960963
header, err := b.resolveHeader(ctx)
961-
if err != nil {
964+
if err != nil || header == nil {
962965
return nil, err
963966
}
964967
return &Account{
@@ -1035,7 +1038,7 @@ func (b *Block) OmmerAt(ctx context.Context, args struct{ Index Long }) (*Block,
10351038

10361039
func (b *Block) WithdrawalsRoot(ctx context.Context) (*common.Hash, error) {
10371040
header, err := b.resolveHeader(ctx)
1038-
if err != nil {
1041+
if err != nil || header == nil {
10391042
return nil, err
10401043
}
10411044
// Pre-shanghai blocks
@@ -1068,7 +1071,7 @@ func (b *Block) Withdrawals(ctx context.Context) (*[]*Withdrawal, error) {
10681071

10691072
func (b *Block) BlobGasUsed(ctx context.Context) (*hexutil.Uint64, error) {
10701073
header, err := b.resolveHeader(ctx)
1071-
if err != nil {
1074+
if err != nil || header == nil {
10721075
return nil, err
10731076
}
10741077
if header.BlobGasUsed == nil {
@@ -1080,7 +1083,7 @@ func (b *Block) BlobGasUsed(ctx context.Context) (*hexutil.Uint64, error) {
10801083

10811084
func (b *Block) ExcessBlobGas(ctx context.Context) (*hexutil.Uint64, error) {
10821085
header, err := b.resolveHeader(ctx)
1083-
if err != nil {
1086+
if err != nil || header == nil {
10841087
return nil, err
10851088
}
10861089
if header.ExcessBlobGas == nil {

0 commit comments

Comments
 (0)