code: func (p *DeployedCCInfoProvider) ChaincodeInfo(chaincodeName string, qe ledger.SimpleQueryExecutor) (*ledger.DeployedChaincodeInfo, error) {
  	chaincodeDataBytes, err := qe.GetState(lsccNamespace, chaincodeName)
  	if err != nil || chaincodeDataBytes == nil {
  		return nil, err
  	}
  	chaincodeData := &ccprovider.ChaincodeData{}
  	if err := proto.Unmarshal(chaincodeDataBytes, chaincodeData); err != nil {
  		return nil, errors.Wrap(err, "error unmarshalling chaincode state data")
  	}
  	collConfigPkg, err := fetchCollConfigPkg(chaincodeName, qe)
  	if err != nil {
  		return nil, err
  	}
  	return &ledger.DeployedChaincodeInfo{
  		Name:                chaincodeName,
  		Hash:                chaincodeData.Id,
  		Version:             chaincodeData.Version,
  		CollectionConfigPkg: collConfigPkg,
  	}, nil
  }
docs: // ChaincodeInfo implements function in interface ledger.DeployedChaincodeInfoProvider