From 8a53daecd434dcf5f1ee373b83e2ed1716548feb Mon Sep 17 00:00:00 2001 From: Thomas E Lackey Date: Fri, 9 Jun 2023 18:49:10 -0500 Subject: [PATCH] Unify the code --- pkg/eth/api.go | 7 +------ pkg/eth/backend_utils.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pkg/eth/api.go b/pkg/eth/api.go index 091f4f20..3c4fd6ec 100644 --- a/pkg/eth/api.go +++ b/pkg/eth/api.go @@ -604,12 +604,7 @@ func (pea *PublicEthAPI) localGetTransactionReceipt(ctx context.Context, hash co } receipt := receipts[index] - var signer types.Signer - if tx.Protected() { - signer = types.LatestSignerForChainID(tx.ChainId()) - } else { - signer = types.HomesteadSigner{} - } + signer := SignerForTx(tx) from, _ := types.Sender(signer, tx) fields := map[string]interface{}{ diff --git a/pkg/eth/backend_utils.go b/pkg/eth/backend_utils.go index ccd715e2..789faa22 100644 --- a/pkg/eth/backend_utils.go +++ b/pkg/eth/backend_utils.go @@ -144,15 +144,21 @@ func NewRPCTransactionFromBlockHash(b *types.Block, hash common.Hash) *RPCTransa return nil } -// NewRPCTransaction returns a transaction that will serialize to the RPC -// representation, with the given location metadata set (if available). -func NewRPCTransaction(tx *types.Transaction, blockHash common.Hash, blockNumber uint64, index uint64, baseFee *big.Int) *RPCTransaction { +// SignerForTx returns an appropriate Signer for this Transaction +func SignerForTx(tx *types.Transaction) types.Signer { var signer types.Signer if tx.Protected() { signer = types.LatestSignerForChainID(tx.ChainId()) } else { signer = types.HomesteadSigner{} } + return signer +} + +// NewRPCTransaction returns a transaction that will serialize to the RPC +// representation, with the given location metadata set (if available). +func NewRPCTransaction(tx *types.Transaction, blockHash common.Hash, blockNumber uint64, index uint64, baseFee *big.Int) *RPCTransaction { + signer := SignerForTx(tx) from, _ := types.Sender(signer, tx) v, r, s := tx.RawSignatureValues() result := &RPCTransaction{