code: func (tr *Transaction) Put(key, value []byte, wo *opt.WriteOptions) error {
  	tr.lk.Lock()
  	defer tr.lk.Unlock()
  	if tr.closed {
  		return errTransactionDone
  	}
  	return tr.put(keyTypeVal, key, value)
  }
docs: // Put sets the value for the given key. It overwrites any previous value
  // for that key; a DB is not a multi-map.
  // Please note that the transaction is not compacted until committed, so if you
  // writes 10 same keys, then those 10 same keys are in the transaction.
  //
  // It is safe to modify the contents of the arguments after Put returns.