code: func CreateChaincodeProposalWithTransient(typ common.HeaderType, chainID string, cis *peer.ChaincodeInvocationSpec, creator []byte, transientMap map[string][]byte) (*peer.Proposal, string, error) {
  	// generate a random nonce
  	nonce, err := crypto.GetRandomNonce()
  	if err != nil {
  		return nil, "", err
  	}
  
  	// compute txid
  	txid, err := ComputeTxID(nonce, creator)
  	if err != nil {
  		return nil, "", err
  	}
  
  	return CreateChaincodeProposalWithTxIDNonceAndTransient(txid, typ, chainID, cis, nonce, creator, transientMap)
  }
docs: // CreateChaincodeProposalWithTransient creates a proposal from given input
  // It returns the proposal and the transaction id associated to the proposal