code: func (r *ReceiptsRequest) Validate(db ethdb.Database, msg *Msg) error {
  	log.Debug("Validating block receipts", "hash", r.Hash)
  
  	// Ensure we have a correct message with a single block receipt
  	if msg.MsgType != MsgReceipts {
  		return errInvalidMessageType
  	}
  	receipts := msg.Obj.([]types.Receipts)
  	if len(receipts) != 1 {
  		return errInvalidEntryCount
  	}
  	receipt := receipts[0]
  
  	// Retrieve our stored header and validate receipt content against it
  	header := rawdb.ReadHeader(db, r.Hash, r.Number)
  	if header == nil {
  		return errHeaderUnavailable
  	}
  	if header.ReceiptHash != types.DeriveSha(receipt) {
  		return errReceiptHashMismatch
  	}
  	// Validations passed, store and return
  	r.Receipts = receipt
  	return nil
  }
docs: // Valid processes an ODR request reply message from the LES network
  // returns true and stores results in memory if the message was a valid reply
  // to the request (implementation of LesOdrRequest)