func endTxSimulationCDS(chainID string, txid string, txsim ledger.TxSimulator, payload []byte, commit bool, cds *pb.ChaincodeDeploymentSpec) error { // get serialized version of the signer ss, err := signer.Serialize() if err != nil { return err } // get a proposal - we need it to get a transaction prop, err := putils.CreateDeployProposalFromCDS(txid, chainID, cds, ss) if err != nil { return err } return endTxSimulation(chainID, txsim, payload, commit, prop) }
//deploy the command via Endorser func deploy(cmd *cobra.Command, cf *ChaincodeCmdFactory) (*protcommon.Envelope, error) { spec, err := getChaincodeSpecification(cmd) if err != nil { return nil, err } cds, err := getChaincodeBytes(spec) if err != nil { return nil, fmt.Errorf("Error getting chaincode code %s: %s", chainFuncName, err) } creator, err := cf.Signer.Serialize() if err != nil { return nil, fmt.Errorf("Error serializing identity for %s: %s\n", cf.Signer.GetIdentifier(), err) } uuid := util.GenerateUUID() prop, err := utils.CreateDeployProposalFromCDS(uuid, chainID, cds, creator) if err != nil { return nil, fmt.Errorf("Error creating proposal %s: %s\n", chainFuncName, err) } var signedProp *pb.SignedProposal signedProp, err = utils.GetSignedProposal(prop, cf.Signer) if err != nil { return nil, fmt.Errorf("Error creating signed proposal %s: %s\n", chainFuncName, err) } proposalResponse, err := cf.EndorserClient.ProcessProposal(context.Background(), signedProp) if err != nil { return nil, fmt.Errorf("Error endorsing %s: %s\n", chainFuncName, err) } if proposalResponse != nil { // assemble a signed transaction (it's an Envelope message) env, err := utils.CreateSignedTx(prop, cf.Signer, proposalResponse) if err != nil { return nil, fmt.Errorf("Could not assemble transaction, err %s", err) } return env, nil } return nil, nil }