code: func (h *hasherStore) Put(ctx context.Context, chunkData ChunkData) (Reference, error) {
  	c := chunkData
  	var encryptionKey encryption.Key
  	if h.toEncrypt {
  		var err error
  		c, encryptionKey, err = h.encryptChunkData(chunkData)
  		if err != nil {
  			return nil, err
  		}
  	}
  	chunk := h.createChunk(c)
  	h.storeChunk(ctx, chunk)
  
  	return Reference(append(chunk.Address(), encryptionKey...)), nil
  }
docs: // Put stores the chunkData into the ChunkStore of the hasherStore and returns the reference.
  // If hasherStore has a chunkEncryption object, the data will be encrypted.
  // Asynchronous function, the data will not necessarily be stored when it returns.