@ -141,7 +141,9 @@ func (ec *Client) getBlock(ctx context.Context, method string, args ...interface
// Fill the sender cache of transactions in the block.
txs := make ( [ ] * types . Transaction , len ( body . Transactions ) )
for i , tx := range body . Transactions {
setSenderFromServer ( tx . tx , tx . From , body . Hash )
if tx . From != nil {
setSenderFromServer ( tx . tx , * tx . From , body . Hash )
}
txs [ i ] = tx . tx
}
return types . NewBlockWithHeader ( head ) . WithBody ( txs , uncles ) , nil
@ -174,9 +176,9 @@ type rpcTransaction struct {
}
type txExtraInfo struct {
BlockNumber * string
BlockHash common . Hash
From common . Address
BlockNumber * string ` json:"blockNumber,omitempty" `
BlockHash * common . Hash ` json:"blockHash,omitempty" `
From * common . Address ` json:"from,omitempty" `
}
func ( tx * rpcTransaction ) UnmarshalJSON ( msg [ ] byte ) error {
@ -197,7 +199,9 @@ func (ec *Client) TransactionByHash(ctx context.Context, hash common.Hash) (tx *
} else if _ , r , _ := json . tx . RawSignatureValues ( ) ; r == nil {
return nil , false , fmt . Errorf ( "server returned transaction without signature" )
}
setSenderFromServer ( json . tx , json . From , json . BlockHash )
if json . From != nil && json . BlockHash != nil {
setSenderFromServer ( json . tx , * json . From , * json . BlockHash )
}
return json . tx , json . BlockNumber == nil , nil
}
@ -244,7 +248,9 @@ func (ec *Client) TransactionInBlock(ctx context.Context, blockHash common.Hash,
return nil , fmt . Errorf ( "server returned transaction without signature" )
}
}
setSenderFromServer ( json . tx , json . From , json . BlockHash )
if json . From != nil && json . BlockHash != nil {
setSenderFromServer ( json . tx , * json . From , * json . BlockHash )
}
return json . tx , err
}