code: func (lc *LightChain) GetBodyRLP(ctx context.Context, hash common.Hash) (rlp.RawValue, error) {
  	// Short circuit if the body's already in the cache, retrieve otherwise
  	if cached, ok := lc.bodyRLPCache.Get(hash); ok {
  		return cached.(rlp.RawValue), nil
  	}
  	number := lc.hc.GetBlockNumber(hash)
  	if number == nil {
  		return nil, errors.New("unknown block")
  	}
  	body, err := GetBodyRLP(ctx, lc.odr, hash, *number)
  	if err != nil {
  		return nil, err
  	}
  	// Cache the found body for next time and return
  	lc.bodyRLPCache.Add(hash, body)
  	return body, nil
  }
docs: // GetBodyRLP retrieves a block body in RLP encoding from the database or
  // ODR service by hash, caching it if found.