code: func outpointKey(outpoint wire.OutPoint) *[]byte {
  	// A VLQ employs an MSB encoding, so they are useful not only to reduce
  	// the amount of storage space, but also so iteration of utxos when
  	// doing byte-wise comparisons will produce them in order.
  	key := outpointKeyPool.Get().(*[]byte)
  	idx := uint64(outpoint.Index)
  	*key = (*key)[:chainhash.HashSize+serializeSizeVLQ(idx)]
  	copy(*key, outpoint.Hash[:])
  	putVLQ((*key)[chainhash.HashSize:], idx)
  	return key
  }
docs: // outpointKey returns a key suitable for use as a database key in the utxo set
  // while making use of a free list.  A new buffer is allocated if there are not
  // already any available on the free list.  The returned byte slice should be
  // returned to the free list by using the recycleOutpointKey function when the
  // caller is done with it _unless_ the slice will need to live for longer than
  // the caller can calculate such as when used to write to the database.