Example #1
0
 def post(self):
     print("ApiGetTxByConHashId")
     contract_hash_id = request.get_json()["contract_hash_id"]
     if not check_request(request, "contract_hash_id"):
         return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                              constant.RESPONSE_CODE_PARAM_ERROE,
                              "param contract_hash_id not exist")
     pool = current_app.config['bigchain_pool']
     with pool() as bigchain:
         try:
             result = bigchain.get_tx_by_contract_hash_id(contract_hash_id)
             # print(result)
         except(Exception):
             return make_response(constant.RESPONSE_STATUS_SERVER_ERROE,
                                  constant.RESPONSE_CODE_SERVER_ERROR,
                                  "get output failed.")
         if not result:
             result = {}
             return make_response(constant.RESPONSE_STATUS_SUCCESS_NODATA,
                                  constant.RESPONSE_CODE_SUCCESS_NODATA,
                                  "no asset exist!",
                                  result)
         else:
             return make_response(constant.RESPONSE_STATUS_SUCCESS,
                                  constant.RESPONSE_CODE_SUCCESS,
                                  "query success",
                                  list(result))
Example #2
0
    def post(self):
        print("txCreateAvgTime")
        if not check_request(request, "beginTime"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param beginTime not exist")
        if not check_request(request, "endTime"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param endTime not exist")
        begintime = request.json.get("beginTime")
        endtime = request.json.get("endTime")

        pool = current_app.config['bigchain_pool']
        with pool() as unichain:
            avgtime, status = unichain.get_txCreateAvgTimeByRange(
                begintime, endtime)
        if not status:
            return make_response(constant.RESPONSE_STATUS_SERVER_ERROR,
                                 constant.RESPONSE_CODE_SERVER_ERROR,
                                 "response is none")
        avgtime_dict = {'avgTime': avgtime}
        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS, "query success",
                             avgtime_dict)
Example #3
0
    def post(self):
        # 获取指定时间区间内的无效区块集
        if not check_request(request, "beginTime"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param beginTime not exist")
        if not check_request(request, "endTime"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param endTime not exist")

        startTime = request.json.get("beginTime")
        endTime = request.json.get("endTime")
        pool = current_app.config['bigchain_pool']
        with pool() as b:
            try:
                invalidBlockIdList = b.get_invalidBlockIdList(
                    startTime=startTime, endTime=endTime)
            except:
                return make_response(constant.RESPONSE_STATUS_SERVER_ERROR,
                                     constant.RESPONSE_CODE_SERVER_ERROR,
                                     "None")
        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS, "query success",
                             list(invalidBlockIdList))
Example #4
0
 def post(self):
     pool = current_app.config['bigchain_pool']
     with pool() as b:
         try:
             pubkeyList = b.get_allPublicKey()
         except:
             return make_response(constant.RESPONSE_STATUS_SERVER_ERROR,
                                  constant.RESPONSE_CODE_SERVER_ERROR,
                                  "None")
     return make_response(constant.RESPONSE_STATUS_SUCCESS,
                          constant.RESPONSE_CODE_SUCCESS, "query success",
                          pubkeyList)
Example #5
0
 def post(self):
     # 获取区块链中的总区块数
     pool = current_app.config['bigchain_pool']
     with pool() as b:
         try:
             number = b.get_BlockNumber()
         except:
             return make_response(constant.RESPONSE_STATUS_SERVER_ERROR,
                                  constant.RESPONSE_CODE_SERVER_ERROR,
                                  "None")
     return make_response(constant.RESPONSE_STATUS_SUCCESS,
                          constant.RESPONSE_CODE_SUCCESS, "query success",
                          number)
Example #6
0
 def post(self):
     # 获取所有无效区块集
     pool = current_app.config['bigchain_pool']
     with pool() as b:
         try:
             invalidBlockIdList = b.get_invalidBlockIdList()
         except:
             return make_response(constant.RESPONSE_STATUS_SERVER_ERROR,
                                  constant.RESPONSE_CODE_SERVER_ERROR,
                                  "None")
     return make_response(constant.RESPONSE_STATUS_SUCCESS,
                          constant.RESPONSE_CODE_SUCCESS, "query success",
                          list(invalidBlockIdList))
Example #7
0
    def get(self):
        print('ApiGetFreezeUnspentTx')
        parser = reqparse.RequestParser()
        parser.add_argument('public_key',
                            type=parameters.valid_ed25519,
                            required=True)
        parser.add_argument('unspent', type=parameters.valid_bool)
        parser.add_argument('contract_id')
        parser.add_argument('task_id')
        parser.add_argument('task_num')
        args = parser.parse_args()

        include_spent = not args['unspent']
        contract_id = args['contract_id']
        task_id = args['task_id']
        pub_key = args['public_key']
        task_num = args['task_num']

        pool = current_app.config['bigchain_pool']
        with pool() as bigchain:
            outputs = bigchain.get_freeze_output(pub_key, contract_id, task_id,
                                                 task_num, include_spent)
            return make_response(constant.RESPONSE_STATUS_SUCCESS,
                                 constant.RESPONSE_CODE_SUCCESS, "sucess",
                                 outputs)
    def post(self):
        # print("ApiOnlySaveData:--",request.get_json())
        pool = current_app.config['bigchain_pool']
        monitor = current_app.config['monitor']
        fromuser = request.get_json()['fromUser']
        touser = request.get_json()['toUser']
        amount = int(request.get_json()['amount'])
        metadata = request.get_json(force=True)['dataStr']

        with pool() as b:
            tx = Transaction.savedata([fromuser], [([touser], amount)],
                                      metadata)

            rate = bigchaindb.config['statsd']['rate']
            with monitor.timer('write_transaction', rate=rate):
                b.write_transaction(tx)

        # tx = tx.to_dict()
        # return rapidjson.dumps(tx)

        if not tx:
            tx_result = {}
            result_messages = "tx not exist!"
        else:
            tx_result = tx.to_dict()
            result_messages = "create transaction success"

        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS, result_messages,
                             tx_result)
    def post(self):
        # 单条payload创建交易
        # @common_api.route('/createTxByPayload/', methods=['POST'])
        # def createTxByPayload():
        pool = current_app.config['bigchain_pool']
        monitor = current_app.config['monitor']

        payload_dict = request.get_json(force=True)

        with pool() as b:
            tx = Transaction.create([b.me], [([b.me], 1)],
                                    metadata=payload_dict)
            tx = tx.sign([b.me_private])
            rate = bigchaindb.config['statsd']['rate']
            with monitor.timer('write_transaction', rate=rate):
                b.write_transaction(tx)

        # tx = tx.to_dict()
        # return rapidjson.dumps(tx)

        if not tx:
            tx_result = {}
            result_messages = "tx not exist!"
        else:
            tx_result = tx.to_dict()
            result_messages = "create transaction success"

        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS, result_messages,
                             tx_result)
Example #10
0
 def post(self):
     # 根据区块ID获取区块中的交易条数
     if not check_request(request, "block_id"):
         return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                              constant.RESPONSE_CODE_PARAM_ERROE,
                              "param block id not exist")
     block_id = request.get_json()["block_id"]
     pool = current_app.config['bigchain_pool']
     with pool() as b:
         try:
             number = b.get_txNumber(block_id)
         except:
             return make_response(constant.RESPONSE_STATUS_SERVER_ERROR,
                                  constant.RESPONSE_CODE_SERVER_ERROR,
                                  "None")
     return make_response(constant.RESPONSE_STATUS_SUCCESS,
                          constant.RESPONSE_CODE_SUCCESS, "query success",
                          number)
Example #11
0
    def post(self):
        if not check_request(request, "block_id"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param block id not exist")
        block_id = request.json.get("block_id")

        pool = current_app.config['bigchain_pool']
        with pool() as unichain:
            avgtime, status = unichain.get_voteTimeByBlockID(block_id)
        if not status:
            return make_response(constant.RESPONSE_STATUS_SUCCESS_NODATA,
                                 constant.RESPONSE_CODE_SUCCESS_NODATA,
                                 "response is none")
        avgtime_dict = {'avgTime': avgtime}
        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS, "query success",
                             avgtime_dict)
 def post(self):
     # 获取区块链中的总交易条数
     # @common_api.route('/getTxNumberInUnichain/', methods=['POST'])
     # def getTxNumberInUnichain():
     pool = current_app.config['bigchain_pool']
     with pool() as b:
         number = b.get_txNumber()
     return make_response(constant.RESPONSE_STATUS_SUCCESS,
                          constant.RESPONSE_CODE_SUCCESS, "query success",
                          number)
    def post(self):
        # 根据交易ID获取交易
        # @common_api.route('/getTxById/', methods=['POST'])
        # def getTxById():
        type = request.get_json()["type"]

        if not check_request(request, "type"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param type not exist.")
        tx_id = request.get_json()["tx_id"]
        if not check_request(request, "tx_id"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param tx_id not exist")

        pool = current_app.config['bigchain_pool']
        with pool() as b:
            if type == '0':
                # get single tx by txid without vaildate
                tx = list(b.get_transaction_no_valid(tx_id))
            if type == '1':
                # get all block which contains the tx without validate.
                tx = list(b.get_tx_by_id(tx_id))
            elif type == '2':
                # get block status which contains the tx
                tx = b.get_blocks_status_containing_tx(tx_id)
            elif type == '3':
                # get signle validate tx in validate block
                tx = b.get_transaction(tx_id)
                tx = tx.to_dict()

        if not tx:
            tx = {}
            return make_response(constant.RESPONSE_STATUS_SUCCESS_NODATA,
                                 constant.RESPONSE_CODE_SUCCESS_NODATA,
                                 "tx not exist!", tx)
        else:
            # tx_result = tx.to_dict()
            return make_response(constant.RESPONSE_STATUS_SUCCESS,
                                 constant.RESPONSE_CODE_SUCCESS,
                                 "query success", tx)
Example #14
0
 def post(self):
     # 根据区块ID获取区块中的交易
     if not check_request(request, "block_id"):
         return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                              constant.RESPONSE_CODE_PARAM_ERROE,
                              "param block id not exist")
     block_id = request.get_json()["block_id"]
     pool = current_app.config['bigchain_pool']
     with pool() as b:
         try:
             block = b.get_block(block_id)
         except:
             return make_response(constant.RESPONSE_STATUS_SERVER_ERROR,
                                  constant.RESPONSE_CODE_SERVER_ERROR,
                                  "None")
     print(block)
     txList = block["block"]['transactions']
     return make_response(constant.RESPONSE_STATUS_SUCCESS,
                          constant.RESPONSE_CODE_SUCCESS, "query success",
                          txList)
Example #15
0
    def get(self):
        pool = current_app.config['bigchain_pool']
        with pool() as bigchain:
            new_keypair = generate_key_pair()
            new_keypair_dict = {
                'private': new_keypair[0],
                'public': new_keypair[1]
            }

        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS,
                             "generate success", new_keypair_dict)
Example #16
0
    def post(self):
        print("ApiUserAccountChangeRecord")
        pool = current_app.config['bigchain_pool']
        param = request.get_json(force=True)
        print("1:", param)
        with pool() as bigchain:
            account_record = bigchain.getAccountRecord(param)

        print(account_record)

        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS, "query success",
                             list(account_record))
    def post(self):
        # 获取每区块中包含的交易条数
        # @common_api.route('/getTxNumOfAllBlock/', methods=['POST'])
        # def getTxNumOfAllBlock():
        pool = current_app.config['bigchain_pool']
        with pool() as b:
            blockIdTxList = b.get_txNumberOfAllBlock()

        blockIdTxList = list(blockIdTxList)
        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS,
                             "query success",
                             blockIdTxList) \
    def post(self):
        # 根据指定时间区间获取交易集
        # @common_api.route('/getTxsByTime/', methods=['POST'])
        # def getTxsByTime():
        startTime = request.get_json()['beginTime']
        if not check_request(request, "beginTime"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param beginTime not exist")

        endTime = request.get_json()['endTime']
        if not check_request(request, "endTime"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param endTime not exist")

        pool = current_app.config['bigchain_pool']
        with pool() as b:
            txIdList = b.get_TxIdByTime(startTime, endTime)

        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS, "query success",
                             txIdList)
Example #19
0
    def post(self):
        print("getContractTx")

        tx_id = request.get_json()["tx_id"]
        if not check_request(request, "tx_id"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                 constant.RESPONSE_CODE_PARAM_ERROE,
                                 "param tx_id not exist")
        pool = current_app.config['bigchain_pool']
        with pool() as bigchain:
            txs = bigchain.get_contract_txs_by_tx_id(tx_id)

        if not txs:
            txs = {}
            return make_response(constant.RESPONSE_STATUS_SUCCESS_NODATA,
                                 constant.RESPONSE_CODE_SUCCESS_NODATA,
                                 "contract or tx not exist!",
                                 list(txs))
        else:
            return make_response(constant.RESPONSE_STATUS_SUCCESS,
                                 constant.RESPONSE_CODE_SUCCESS,
                                 "query success",
                                 list(txs))
Example #20
0
    def post(self):
        print("getContract")

        contract_id = request.get_json()["contract_id"]
        if not check_request(request, "contract_id"):
            return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                             constant.RESPONSE_CODE_PARAM_ERROE,
                             "param contract_id not exist")
        pool = current_app.config['bigchain_pool']
        with pool() as bigchain:
            contract = bigchain.get_contract_by_id(contract_id)
        if not contract:
            contract = {}
            return make_response(constant.RESPONSE_STATUS_SUCCESS_NODATA,
                                 constant.RESPONSE_CODE_SUCCESS_NODATA,
                                 "contract not exist!",
                                 list(contract))
        else:
            res = list(contract)
            # print("getContract return", res)
            return make_response(constant.RESPONSE_STATUS_SUCCESS,
                                 constant.RESPONSE_CODE_SUCCESS,
                                 "query success",
                                 res)
Example #21
0
    def post(self):
        print("createContractTx")

        pool = current_app.config['bigchain_pool']
        contractTx = request.get_json(force=True)
        # print(111)
        print(contractTx)

        contractTx_obj = Transaction.from_dict(contractTx)
        # TODO validate data structure /version=2;opercation=create/transfer;    has relation and contact?
        print("222====",contractTx_obj)
        with pool() as bigchain:
            try:
                # print("333")
                bigchain.validate_transaction(contractTx_obj)
                # print("444")
            except (ValueError,
                    OperationError,
                    TransactionDoesNotExist,
                    TransactionOwnerError,
                    FulfillmentNotInValidBlock,
                    DoubleSpend,
                    InvalidHash,
                    InvalidSignature,
                    AmountError) as e:
                return make_response(constant.RESPONSE_STATUS_PARAM_ERROE,
                                     constant.RESPONSE_CODE_PARAM_ERROE,
                                     "invalidate contract transaction.")
            # print(contractTx_obj.metadata.to_dict())
            tx_result = bigchain.write_transaction(contractTx_obj)
            result_messages = "add contract transaction success"

        return make_response(constant.RESPONSE_STATUS_SUCCESS,
                             constant.RESPONSE_CODE_SUCCESS,
                             result_messages,
                             tx_result)
Example #22
0
    def get(self):
        print('ApiGetFreezeByTransId')
        parser = reqparse.RequestParser()
        parser.add_argument('unspent', type=parameters.valid_bool)
        parser.add_argument('transaction_id')
        args = parser.parse_args()

        include_spent = not args['unspent']
        transaction_id = args['transaction_id']

        pool = current_app.config['bigchain_pool']
        with pool() as bigchain:
            outputs = bigchain.get_freeze_output_by_id(transaction_id,
                                                       include_spent)
            return make_response(constant.RESPONSE_STATUS_SUCCESS,
                                 constant.RESPONSE_CODE_SUCCESS, "sucess",
                                 outputs)
Example #23
0
    def get(self):
        """API endpoint to retrieve a list of links to transaction
        outputs.

            Returns:
                A :obj:`list` of :cls:`str` of links to outputs.
        """
        parser = reqparse.RequestParser()
        parser.add_argument('public_key',
                            type=parameters.valid_ed25519,
                            required=True)
        parser.add_argument('unspent', type=parameters.valid_bool)
        args = parser.parse_args()

        pool = current_app.config['bigchain_pool']
        include_spent = not args['unspent']

        with pool() as bigchain:
            outputs = bigchain.get_outputs_filtered_not_include_freeze(
                args['public_key'], include_spent)
            # NOTE: We pass '..' as a path to create a valid relative URI
            return make_response(constant.RESPONSE_STATUS_SUCCESS,
                                 constant.RESPONSE_CODE_SUCCESS, "sucess",
                                 outputs)