ethclient: fix TransactionByHash pending return value. (#14663)

As per #14661 TransactionByHash always returns false for pending.
This uses blockNumber rather than blockHash to ensure that it returns
the correct value for pending and will not suffer side-effects if
eth_getTransactionByHash is fixed in future.
This commit is contained in:
Jim McDonald 2017-06-21 08:53:50 +01:00 committed by Felix Lange
parent 693d9ccbfb
commit 60e27b51bc

View File

@ -167,11 +167,11 @@ func (ec *Client) TransactionByHash(ctx context.Context, hash common.Hash) (tx *
} else if _, r, _ := tx.RawSignatureValues(); r == nil { } else if _, r, _ := tx.RawSignatureValues(); r == nil {
return nil, false, fmt.Errorf("server returned transaction without signature") return nil, false, fmt.Errorf("server returned transaction without signature")
} }
var block struct{ BlockHash *common.Hash } var block struct{ BlockNumber *string }
if err := json.Unmarshal(raw, &block); err != nil { if err := json.Unmarshal(raw, &block); err != nil {
return nil, false, err return nil, false, err
} }
return tx, block.BlockHash == nil, nil return tx, block.BlockNumber == nil, nil
} }
// TransactionCount returns the total number of transactions in the given block. // TransactionCount returns the total number of transactions in the given block.