From e05d46807525f76dab83f84e9dfc9e4537398641 Mon Sep 17 00:00:00 2001
From: Yondon Fu <yondon.fu@gmail.com>
Date: Mon, 7 Jan 2019 03:47:11 -0500
Subject: [PATCH] internal/ethapi: ask transaction pool for pending nonce
 (#15794)

---
 internal/ethapi/api.go | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go
index 656555b3b..73b629bd9 100644
--- a/internal/ethapi/api.go
+++ b/internal/ethapi/api.go
@@ -1074,6 +1074,15 @@ func (s *PublicTransactionPoolAPI) GetRawTransactionByBlockHashAndIndex(ctx cont
 
 // GetTransactionCount returns the number of transactions the given address has sent for the given block number
 func (s *PublicTransactionPoolAPI) GetTransactionCount(ctx context.Context, address common.Address, blockNr rpc.BlockNumber) (*hexutil.Uint64, error) {
+	// Ask transaction pool for the nonce which includes pending transactions
+	if blockNr == rpc.PendingBlockNumber {
+		nonce, err := s.b.GetPoolNonce(ctx, address)
+		if err != nil {
+			return nil, err
+		}
+		return (*hexutil.Uint64)(&nonce), nil
+	}
+	// Resolve block number and use its state to ask for the nonce
 	state, _, err := s.b.StateAndHeaderByNumber(ctx, blockNr)
 	if state == nil || err != nil {
 		return nil, err
-- 
GitLab