def getMixContractList(reqId=None, sync=False):
        if not reqId:
            reqId = str(uuid.uuid4())
        operatorId = RtConfig.operatorId
        sourceNodeId = RtConfig.nodeId

        commonReq = CommonReqField()
        commonReq.sourceNodeId = sourceNodeId
        commonReq.targetNodeId = 0
        commonReq.operatorId = operatorId
        commonReq.reqId = reqId

        rpcGetMixContractListReq = RpcGetMixContractListReq()

        rpcGetMixContractListReq.commonReq.CopyFrom(commonReq)

        if sync:
            RpcClientRspHandler.registerWaitReqId(reqId)

        sendResult = RpcClientProcessService.sendCoreRpc(
            0, rpcGetMixContractListReq.SerializeToString(), reqId,
            RpcId.GET_MIX_CONTRACT_LIST_REQ)

        if sync and not sendResult:
            RpcClientRspHandler.unregisterWaitReqId(reqId)
            return None

        if sync:
            startTime = time.time()
            while True:
                if time.time() - startTime < RtConfig.rpcTimeOut:
                    rpcGetMixContractListRsp = RpcClientRspHandler.getAndRemoveRpcGetMixContractListRsp(
                        reqId)
                    if not rpcGetMixContractListRsp:
                        rpcExceptionRsp = RpcClientRspHandler.getAndRemoveRpcExceptionRsp(
                            reqId)
                        if rpcExceptionRsp:
                            logger.error("获取混合合约列表错误,请求ID: %s, 远程错误回报 %s",
                                         reqId, rpcExceptionRsp.info)
                            return None
                        time.sleep(0.02)
                    else:
                        commonRsp = rpcGetMixContractListRsp.commonRsp
                        errorId = commonRsp.errorId
                        if errorId == 0:
                            return rpcGetMixContractListRsp.contract
                        else:
                            logger.error(
                                "获取混合合约列表错误,请求ID:%s,错误ID:%s,远程错误回报:%s", reqId,
                                errorId, commonRsp.errorMsg)
                            return None
                else:
                    RpcClientRspHandler.unregisterWaitReqId(reqId)
                    logger.error("获取混合合约列表错误,请求ID: %s,等待回报超时", reqId)
                    return None
    def getMixContractList(reqId=None, sync=False):
        if not reqId:
            reqId = str(uuid.uuid4())
        operatorId = Config.operatorId
        sourceNodeId = Config.nodeId

        commonReq = CommonReqField()
        commonReq.sourceNodeId = sourceNodeId
        commonReq.targetNodeId = 0
        commonReq.operatorId = operatorId
        commonReq.reqId = reqId

        rpcGetMixContractListReq = RpcGetMixContractListReq()

        rpcGetMixContractListReq.commonReq.CopyFrom(commonReq)

        if sync:
            RpcClientRspHandler.registerWaitReqId(reqId)

        sendResult = RpcClientProcessService.sendRoutineCoreRpc(
            0, rpcGetMixContractListReq.SerializeToString(), reqId,
            RpcId.GET_MIX_CONTRACT_LIST_REQ)

        if sync and not sendResult:
            RpcClientRspHandler.unregisterWaitReqId(reqId)
            return None

        if sync:
            startTime = time.time()
            while True:
                if time.time() - startTime < Config.rpcTimeOut:
                    rpcGetMixContractListRsp = RpcClientRspHandler.getAndRemoveRpcGetMixContractListRsp(
                        reqId)
                    if not rpcGetMixContractListRsp:
                        rpcExceptionRsp = RpcClientRspHandler.getAndRemoveRpcExceptionRsp(
                            reqId)
                        if rpcExceptionRsp:
                            logger.error("获取混合合约列表错误,请求ID: %s, 远程错误回报 %s",
                                         reqId, rpcExceptionRsp.info)
                            return None
                        time.sleep(0.02)
                    else:
                        commonRsp = rpcGetMixContractListRsp.commonRsp
                        requestStatus = commonRsp.requestStatus
                        if requestStatus == CommonStatusEnum.SUCCESS:
                            return rpcGetMixContractListRsp.contract
                        elif requestStatus == CommonStatusEnum.INFO:
                            logger.info("获取混合合约列表错误,请求ID:%s,远程信息回报:%s", reqId,
                                        commonRsp.info)
                            return rpcGetMixContractListRsp.contract
                        elif requestStatus == CommonStatusEnum.WARN:
                            logger.warning("获取混合合约列表错误,请求ID:%s,远程警告回报:%s",
                                           reqId, commonRsp.info)
                            return rpcGetMixContractListRsp.contract
                        elif requestStatus == CommonStatusEnum.ERROR:
                            logger.error("获取混合合约列表错误,请求ID:%s,远程错误回报:%s", reqId,
                                         commonRsp.info)
                            return None
                        else:
                            logger.error("获取混合合约列表错误,请求ID:%s,未知的请求状态", reqId)
                            return None
                else:
                    RpcClientRspHandler.unregisterWaitReqId(reqId)
                    logger.error("获取混合合约列表错误,请求ID: %s,等待回报超时", reqId)
                    return None