code: func (e *Envelope) DecodeRLP(s *rlp.Stream) error {
  	raw, err := s.Raw()
  	if err != nil {
  		return err
  	}
  	// The decoding of Envelope uses the struct fields but also needs
  	// to compute the hash of the whole RLP-encoded envelope. This
  	// type has the same structure as Envelope but is not an
  	// rlp.Decoder (does not implement DecodeRLP function).
  	// Only public members will be encoded.
  	type rlpenv Envelope
  	if err := rlp.DecodeBytes(raw, (*rlpenv)(e)); err != nil {
  		return err
  	}
  	e.hash = crypto.Keccak256Hash(raw)
  	return nil
  }
docs: // DecodeRLP decodes an Envelope from an RLP data stream.