code: func GetChaincodeInvocationSpec(prop *peer.Proposal) (*peer.ChaincodeInvocationSpec, error) {
  	if prop == nil {
  		return nil, errors.New("proposal is nil")
  	}
  	_, err := GetHeader(prop.Header)
  	if err != nil {
  		return nil, err
  	}
  	ccPropPayload, err := GetChaincodeProposalPayload(prop.Payload)
  	if err != nil {
  		return nil, err
  	}
  	cis := &peer.ChaincodeInvocationSpec{}
  	err = proto.Unmarshal(ccPropPayload.Input, cis)
  	return cis, errors.Wrap(err, "error unmarshaling ChaincodeInvocationSpec")
  }
docs: // GetChaincodeInvocationSpec get the ChaincodeInvocationSpec from the proposal