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 <amitshah0t7@gmail.com>
Co-authored-by: Felix Lange <fjl@twurst.com>
---
 graphql/graphql.go | 27 +++++++++++++++++++++++++++
 graphql/schema.go  |  3 +++
 2 files changed, 30 insertions(+)

diff --git a/graphql/graphql.go b/graphql/graphql.go
index ddd928dff..0f7bba865 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 525b9e1e5..5dec10db2 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
-- 
GitLab