graphql: add raw fields to block and tx (#24816)

This commit is contained in:
Sina Mahmoodi 2022-05-17 10:31:17 +02:00 committed by GitHub
parent 39fb82bcfb
commit 29a6b6bcac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 2 deletions

View File

@ -33,6 +33,7 @@ import (
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth/filters"
"github.com/ethereum/go-ethereum/internal/ethapi"
"github.com/ethereum/go-ethereum/rlp"
"github.com/ethereum/go-ethereum/rpc"
)
@ -516,10 +517,18 @@ func (t *Transaction) V(ctx context.Context) (hexutil.Big, error) {
return hexutil.Big(*v), nil
}
func (t *Transaction) Raw(ctx context.Context) (hexutil.Bytes, error) {
tx, err := t.resolve(ctx)
if err != nil || tx == nil {
return hexutil.Bytes{}, err
}
return tx.MarshalBinary()
}
func (t *Transaction) RawReceipt(ctx context.Context) (hexutil.Bytes, error) {
receipt, err := t.getReceipt(ctx)
if err != nil || receipt == nil {
return nil, err
return hexutil.Bytes{}, err
}
return receipt.MarshalBinary()
}
@ -798,6 +807,22 @@ func (b *Block) TotalDifficulty(ctx context.Context) (hexutil.Big, error) {
return hexutil.Big(*td), nil
}
func (b *Block) RawHeader(ctx context.Context) (hexutil.Bytes, error) {
header, err := b.resolveHeader(ctx)
if err != nil {
return hexutil.Bytes{}, err
}
return rlp.EncodeToBytes(header)
}
func (b *Block) Raw(ctx context.Context) (hexutil.Bytes, error) {
block, err := b.resolve(ctx)
if err != nil {
return hexutil.Bytes{}, err
}
return rlp.EncodeToBytes(block)
}
// BlockNumberArgs encapsulates arguments to accessors that specify a block number.
type BlockNumberArgs struct {
// TODO: Ideally we could use input unions to allow the query to specify the

View File

@ -140,7 +140,11 @@ const schema string = `
# Envelope transaction support
type: Int
accessList: [AccessTuple!]
# RawReceipt is the binary encoding of the receipt. For post EIP-2718 typed transactions
# Raw is the canonical encoding of the transaction.
# For legacy transactions, it returns the RLP encoding.
# For EIP-2718 typed transactions, it returns the type and payload.
raw: Bytes!
# RawReceipt is the canonical encoding of the receipt. For post EIP-2718 typed transactions
# this is equivalent to TxType || ReceiptEncoding.
rawReceipt: Bytes!
}
@ -238,6 +242,10 @@ const schema string = `
# EstimateGas estimates the amount of gas that will be required for
# successful execution of a transaction at the current block's state.
estimateGas(data: CallData!): Long!
# RawHeader is the RLP encoding of the block's header.
rawHeader: Bytes!
# Raw is the RLP encoding of the block.
raw: Bytes!
}
# CallData represents the data associated with a local contract call.