@@ -24,6 +24,7 @@ import (
2424 "math/big"
2525 "sort"
2626 "strconv"
27+ "strings"
2728 "sync"
2829
2930 "github.com/ethereum/go-ethereum"
@@ -54,16 +55,16 @@ func (b *Long) UnmarshalGraphQL(input interface{}) error {
5455 switch input := input .(type ) {
5556 case string :
5657 // uncomment to support hex values
57- // if strings.HasPrefix(input, "0x") {
58- // // apply leniency and support hex representations of longs.
59- // value, err := hexutil.DecodeUint64(input)
60- // *b = Long(value)
61- // return err
62- // } else {
63- value , err := strconv .ParseInt (input , 10 , 64 )
64- * b = Long (value )
65- return err
66- // }
58+ if strings .HasPrefix (input , "0x" ) {
59+ // apply leniency and support hex representations of longs.
60+ value , err := hexutil .DecodeUint64 (input )
61+ * b = Long (value )
62+ return err
63+ } else {
64+ value , err := strconv .ParseInt (input , 10 , 64 )
65+ * b = Long (value )
66+ return err
67+ }
6768 case int32 :
6869 * b = Long (input )
6970 case int64 :
@@ -156,8 +157,8 @@ func (l *Log) Account(ctx context.Context, args BlockNumberArgs) *Account {
156157 }
157158}
158159
159- func (l * Log ) Index (ctx context.Context ) int32 {
160- return int32 (l .log .Index )
160+ func (l * Log ) Index (ctx context.Context ) hexutil. Uint64 {
161+ return hexutil . Uint64 (l .log .Index )
161162}
162163
163164func (l * Log ) Topics (ctx context.Context ) []common.Hash {
@@ -391,7 +392,7 @@ func (t *Transaction) Block(ctx context.Context) (*Block, error) {
391392 return block , nil
392393}
393394
394- func (t * Transaction ) Index (ctx context.Context ) (* int32 , error ) {
395+ func (t * Transaction ) Index (ctx context.Context ) (* hexutil. Uint64 , error ) {
395396 _ , block , err := t .resolve (ctx )
396397 if err != nil {
397398 return nil , err
@@ -400,7 +401,7 @@ func (t *Transaction) Index(ctx context.Context) (*int32, error) {
400401 if block == nil {
401402 return nil , nil
402403 }
403- index := int32 (t .index )
404+ index := hexutil . Uint64 (t .index )
404405 return & index , nil
405406}
406407
@@ -421,33 +422,33 @@ func (t *Transaction) getReceipt(ctx context.Context) (*types.Receipt, error) {
421422 return receipts [t .index ], nil
422423}
423424
424- func (t * Transaction ) Status (ctx context.Context ) (* Long , error ) {
425+ func (t * Transaction ) Status (ctx context.Context ) (* hexutil. Uint64 , error ) {
425426 receipt , err := t .getReceipt (ctx )
426427 if err != nil || receipt == nil {
427428 return nil , err
428429 }
429430 if len (receipt .PostState ) != 0 {
430431 return nil , nil
431432 }
432- ret := Long (receipt .Status )
433+ ret := hexutil . Uint64 (receipt .Status )
433434 return & ret , nil
434435}
435436
436- func (t * Transaction ) GasUsed (ctx context.Context ) (* Long , error ) {
437+ func (t * Transaction ) GasUsed (ctx context.Context ) (* hexutil. Uint64 , error ) {
437438 receipt , err := t .getReceipt (ctx )
438439 if err != nil || receipt == nil {
439440 return nil , err
440441 }
441- ret := Long (receipt .GasUsed )
442+ ret := hexutil . Uint64 (receipt .GasUsed )
442443 return & ret , nil
443444}
444445
445- func (t * Transaction ) CumulativeGasUsed (ctx context.Context ) (* Long , error ) {
446+ func (t * Transaction ) CumulativeGasUsed (ctx context.Context ) (* hexutil. Uint64 , error ) {
446447 receipt , err := t .getReceipt (ctx )
447448 if err != nil || receipt == nil {
448449 return nil , err
449450 }
450- ret := Long (receipt .CumulativeGasUsed )
451+ ret := hexutil . Uint64 (receipt .CumulativeGasUsed )
451452 return & ret , nil
452453}
453454
@@ -503,12 +504,12 @@ func (t *Transaction) getLogs(ctx context.Context, hash common.Hash) (*[]*Log, e
503504 return & ret , nil
504505}
505506
506- func (t * Transaction ) Type (ctx context.Context ) (* int32 , error ) {
507+ func (t * Transaction ) Type (ctx context.Context ) (* hexutil. Uint64 , error ) {
507508 tx , _ , err := t .resolve (ctx )
508509 if err != nil {
509510 return nil , err
510511 }
511- txType := int32 (tx .Type ())
512+ txType := hexutil . Uint64 (tx .Type ())
512513 return & txType , nil
513514}
514515
@@ -649,13 +650,13 @@ func (b *Block) resolveReceipts(ctx context.Context) ([]*types.Receipt, error) {
649650 return receipts , nil
650651}
651652
652- func (b * Block ) Number (ctx context.Context ) (Long , error ) {
653+ func (b * Block ) Number (ctx context.Context ) (hexutil. Uint64 , error ) {
653654 header , err := b .resolveHeader (ctx )
654655 if err != nil {
655656 return 0 , err
656657 }
657658
658- return Long (header .Number .Uint64 ()), nil
659+ return hexutil . Uint64 (header .Number .Uint64 ()), nil
659660}
660661
661662func (b * Block ) Hash (ctx context.Context ) (common.Hash , error ) {
@@ -664,20 +665,20 @@ func (b *Block) Hash(ctx context.Context) (common.Hash, error) {
664665 return b .hash , nil
665666}
666667
667- func (b * Block ) GasLimit (ctx context.Context ) (Long , error ) {
668+ func (b * Block ) GasLimit (ctx context.Context ) (hexutil. Uint64 , error ) {
668669 header , err := b .resolveHeader (ctx )
669670 if err != nil {
670671 return 0 , err
671672 }
672- return Long (header .GasLimit ), nil
673+ return hexutil . Uint64 (header .GasLimit ), nil
673674}
674675
675- func (b * Block ) GasUsed (ctx context.Context ) (Long , error ) {
676+ func (b * Block ) GasUsed (ctx context.Context ) (hexutil. Uint64 , error ) {
676677 header , err := b .resolveHeader (ctx )
677678 if err != nil {
678679 return 0 , err
679680 }
680- return Long (header .GasUsed ), nil
681+ return hexutil . Uint64 (header .GasUsed ), nil
681682}
682683
683684func (b * Block ) BaseFeePerGas (ctx context.Context ) (* hexutil.Big , error ) {
@@ -793,12 +794,12 @@ func (b *Block) OmmerHash(ctx context.Context) (common.Hash, error) {
793794 return header .UncleHash , nil
794795}
795796
796- func (b * Block ) OmmerCount (ctx context.Context ) (* int32 , error ) {
797+ func (b * Block ) OmmerCount (ctx context.Context ) (* hexutil. Uint64 , error ) {
797798 block , err := b .resolve (ctx )
798799 if err != nil || block == nil {
799800 return nil , err
800801 }
801- count := int32 (len (block .Uncles ()))
802+ count := hexutil . Uint64 (len (block .Uncles ()))
802803 return & count , err
803804}
804805
@@ -869,7 +870,7 @@ type BlockNumberArgs struct {
869870 // TODO: Ideally we could use input unions to allow the query to specify the
870871 // block parameter by hash, block number, or tag but input unions aren't part of the
871872 // standard GraphQL schema SDL yet, see: https://github.com/graphql/graphql-spec/issues/488
872- Block * hexutil. Uint64
873+ Block * Long
873874}
874875
875876// NumberOr returns the provided block number argument, or the "current" block number or hash if none
@@ -900,12 +901,12 @@ func (b *Block) Miner(ctx context.Context, args BlockNumberArgs) (*Account, erro
900901 }, nil
901902}
902903
903- func (b * Block ) TransactionCount (ctx context.Context ) (* int32 , error ) {
904+ func (b * Block ) TransactionCount (ctx context.Context ) (* hexutil. Uint64 , error ) {
904905 block , err := b .resolve (ctx )
905906 if err != nil || block == nil {
906907 return nil , err
907908 }
908- count := int32 (len (block .Transactions ()))
909+ count := hexutil . Uint64 (len (block .Transactions ()))
909910 return & count , err
910911}
911912
@@ -927,7 +928,7 @@ func (b *Block) Transactions(ctx context.Context) (*[]*Transaction, error) {
927928 return & ret , nil
928929}
929930
930- func (b * Block ) TransactionAt (ctx context.Context , args struct { Index int32 }) (* Transaction , error ) {
931+ func (b * Block ) TransactionAt (ctx context.Context , args struct { Index Long }) (* Transaction , error ) {
931932 block , err := b .resolve (ctx )
932933 if err != nil || block == nil {
933934 return nil , err
@@ -946,7 +947,7 @@ func (b *Block) TransactionAt(ctx context.Context, args struct{ Index int32 }) (
946947 }, nil
947948}
948949
949- func (b * Block ) OmmerAt (ctx context.Context , args struct { Index int32 }) (* Block , error ) {
950+ func (b * Block ) OmmerAt (ctx context.Context , args struct { Index Long }) (* Block , error ) {
950951 block , err := b .resolve (ctx )
951952 if err != nil || block == nil {
952953 return nil , err
@@ -1037,7 +1038,7 @@ func (b *Block) Account(ctx context.Context, args struct {
10371038type CallData struct {
10381039 From * common.Address // The Ethereum address the call is from.
10391040 To * common.Address // The Ethereum address the call is to.
1040- Gas * hexutil. Uint64 // The amount of gas provided for the call.
1041+ Gas * Long // The amount of gas provided for the call.
10411042 GasPrice * hexutil.Big // The price of each unit of gas, in wei.
10421043 MaxFeePerGas * hexutil.Big // The max price of each unit of gas, in wei (1559).
10431044 MaxPriorityFeePerGas * hexutil.Big // The max tip of each unit of gas, in wei (1559).
@@ -1047,20 +1048,20 @@ type CallData struct {
10471048
10481049// CallResult encapsulates the result of an invocation of the `call` accessor.
10491050type CallResult struct {
1050- data hexutil.Bytes // The return data from the call
1051- gasUsed Long // The amount of gas used
1052- status Long // The return status of the call - 0 for failure or 1 for success.
1051+ data hexutil.Bytes // The return data from the call
1052+ gasUsed hexutil. Uint64 // The amount of gas used
1053+ status hexutil. Uint64 // The return status of the call - 0 for failure or 1 for success.
10531054}
10541055
10551056func (c * CallResult ) Data () hexutil.Bytes {
10561057 return c .data
10571058}
10581059
1059- func (c * CallResult ) GasUsed () Long {
1060+ func (c * CallResult ) GasUsed () hexutil. Uint64 {
10601061 return c .gasUsed
10611062}
10621063
1063- func (c * CallResult ) Status () Long {
1064+ func (c * CallResult ) Status () hexutil. Uint64 {
10641065 return c .status
10651066}
10661067
@@ -1071,32 +1072,31 @@ func (b *Block) Call(ctx context.Context, args struct {
10711072 if err != nil {
10721073 return nil , err
10731074 }
1074- status := Long (1 )
1075+ status := hexutil . Uint64 (1 )
10751076 if result .Failed () {
10761077 status = 0
10771078 }
10781079
10791080 return & CallResult {
10801081 data : result .ReturnData ,
1081- gasUsed : Long (result .UsedGas ),
1082+ gasUsed : hexutil . Uint64 (result .UsedGas ),
10821083 status : status ,
10831084 }, nil
10841085}
10851086
10861087func (b * Block ) EstimateGas (ctx context.Context , args struct {
10871088 Data ethapi.TransactionArgs
1088- }) (Long , error ) {
1089- gas , err := ethapi .DoEstimateGas (ctx , b .r .backend , args .Data , * b .numberOrHash , b .r .backend .RPCGasCap ())
1090- return Long (gas ), err
1089+ }) (hexutil.Uint64 , error ) {
1090+ return ethapi .DoEstimateGas (ctx , b .r .backend , args .Data , * b .numberOrHash , b .r .backend .RPCGasCap ())
10911091}
10921092
10931093type Pending struct {
10941094 r * Resolver
10951095}
10961096
1097- func (p * Pending ) TransactionCount (ctx context.Context ) (int32 , error ) {
1097+ func (p * Pending ) TransactionCount (ctx context.Context ) (hexutil. Uint64 , error ) {
10981098 txs , err := p .r .backend .GetPoolTransactions ()
1099- return int32 (len (txs )), err
1099+ return hexutil . Uint64 (len (txs )), err
11001100}
11011101
11021102func (p * Pending ) Transactions (ctx context.Context ) (* []* Transaction , error ) {
@@ -1135,24 +1135,23 @@ func (p *Pending) Call(ctx context.Context, args struct {
11351135 if err != nil {
11361136 return nil , err
11371137 }
1138- status := Long (1 )
1138+ status := hexutil . Uint64 (1 )
11391139 if result .Failed () {
11401140 status = 0
11411141 }
11421142
11431143 return & CallResult {
11441144 data : result .ReturnData ,
1145- gasUsed : Long (result .UsedGas ),
1145+ gasUsed : hexutil . Uint64 (result .UsedGas ),
11461146 status : status ,
11471147 }, nil
11481148}
11491149
11501150func (p * Pending ) EstimateGas (ctx context.Context , args struct {
11511151 Data ethapi.TransactionArgs
1152- }) (Long , error ) {
1152+ }) (hexutil. Uint64 , error ) {
11531153 pendingBlockNr := rpc .BlockNumberOrHashWithNumber (rpc .PendingBlockNumber )
1154- gas , err := ethapi .DoEstimateGas (ctx , p .r .backend , args .Data , pendingBlockNr , p .r .backend .RPCGasCap ())
1155- return Long (gas ), err
1154+ return ethapi .DoEstimateGas (ctx , p .r .backend , args .Data , pendingBlockNr , p .r .backend .RPCGasCap ())
11561155}
11571156
11581157// Resolver is the top-level object in the GraphQL hierarchy.
@@ -1260,8 +1259,8 @@ func (r *Resolver) SendRawTransaction(ctx context.Context, args struct{ Data hex
12601259
12611260// FilterCriteria encapsulates the arguments to `logs` on the root resolver object.
12621261type FilterCriteria struct {
1263- FromBlock * hexutil. Uint64 // beginning of the queried range, nil means genesis block
1264- ToBlock * hexutil. Uint64 // end of the range, nil means latest block
1262+ FromBlock * Long // beginning of the queried range, nil means genesis block
1263+ ToBlock * Long // end of the range, nil means latest block
12651264 Addresses * []common.Address // restricts matches to events created by specific contracts
12661265
12671266 // The Topic list restricts matches to particular event topics. Each event has a list
0 commit comments