From 34bb132b108e0c17c079d6b24524c2958306a009 Mon Sep 17 00:00:00 2001 From: AmitBRD <60668103+AmitBRD@users.noreply.github.com> Date: Sun, 9 Feb 2020 15:50:44 -0500 Subject: [PATCH] graphql: add transaction signature values (#20623) The feature update allows the GraphQL API endpoint to retrieve transaction signature R,S,V parameters. Co-authored-by: amitshah Co-authored-by: Felix Lange --- graphql/graphql.go | 27 +++++++++++++++++++++++++++ graphql/schema.go | 3 +++ 2 files changed, 30 insertions(+) diff --git a/graphql/graphql.go b/graphql/graphql.go index ddd928dff1..0f7bba8657 100644 --- a/graphql/graphql.go +++ b/graphql/graphql.go @@ -314,6 +314,33 @@ func (t *Transaction) Logs(ctx context.Context) (*[]*Log, error) { return &ret, nil } +func (t *Transaction) R(ctx context.Context) (hexutil.Big, error) { + tx, err := t.resolve(ctx) + if err != nil || tx == nil { + return hexutil.Big{}, err + } + _, r, _ := tx.RawSignatureValues() + return hexutil.Big(*r), nil +} + +func (t *Transaction) S(ctx context.Context) (hexutil.Big, error) { + tx, err := t.resolve(ctx) + if err != nil || tx == nil { + return hexutil.Big{}, err + } + _, _, s := tx.RawSignatureValues() + return hexutil.Big(*s), nil +} + +func (t *Transaction) V(ctx context.Context) (hexutil.Big, error) { + tx, err := t.resolve(ctx) + if err != nil || tx == nil { + return hexutil.Big{}, err + } + v, _, _ := tx.RawSignatureValues() + return hexutil.Big(*v), nil +} + type BlockType int // Block represents an Ethereum block. diff --git a/graphql/schema.go b/graphql/schema.go index 525b9e1e5a..5dec10db20 100644 --- a/graphql/schema.go +++ b/graphql/schema.go @@ -115,6 +115,9 @@ const schema string = ` # Logs is a list of log entries emitted by this transaction. If the # transaction has not yet been mined, this field will be null. logs: [Log!] + r: BigInt! + s: BigInt! + v: BigInt! } # BlockFilterCriteria encapsulates log filter criteria for a filter applied