code: func (tx *Tx) Hash() binary.HexBytes {
  	if tx == nil {
  		return nil
  	}
  	if tx.txHash == nil {
  		return tx.Rehash()
  	}
  	return tx.txHash
  }
docs: // Generate a Hash for this transaction based on the SignBytes. The hash is memoized over the lifetime
  // of the Tx so repeated calls to Hash() are effectively free