code: func (b *BlockChain) CalcSequenceLock(tx *btcutil.Tx, utxoView *UtxoViewpoint, mempool bool) (*SequenceLock, error) {
  	b.chainLock.Lock()
  	defer b.chainLock.Unlock()
  
  	return b.calcSequenceLock(b.bestChain.Tip(), tx, utxoView, mempool)
  }
docs: // CalcSequenceLock computes a relative lock-time SequenceLock for the passed
  // transaction using the passed UtxoViewpoint to obtain the past median time
  // for blocks in which the referenced inputs of the transactions were included
  // within. The generated SequenceLock lock can be used in conjunction with a
  // block height, and adjusted median block time to determine if all the inputs
  // referenced within a transaction have reached sufficient maturity allowing
  // the candidate transaction to be included in a block.
  //
  // This function is safe for concurrent access.