def sign_multi_transction(self, task, judge=True, process_log=True): if task.node_index() != None: logger.info("sign transction with other node: " + str(task.node_index())) task.set_type("st") request = task.request() task.set_request({ "method": "siginvoketx", "jsonrpc": "2.0", "id": 0, }) request["account"] = Config.NODES[task.node_index()]["address"] request["pwd"] = "123456" task.request()["params"] = request (result, response) = TaskRunner.run_single_task(task, False, process_log) if result: response = response["result"] return (result, response) else: task.set_type("cli") request = task.request() request["account"] = Config.NODES[ nodeapi.get_current_node()]["address"] request["pwd"] = "123456" task.set_request(request) (result, response) = TaskRunner.run_single_task(task, False, process_log) return (result, response)
def getbestblockhash(self): task = Task(Config.BASEAPI_PATH + "/rpc/getbestblockhash.json") taskrequest = task.request() params = [] taskrequest["params"] = params task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getsmartcodeeventbyhash(self, txhash): task = Task(Config.BASEAPI_PATH + "/restful/get_smtcode_evts.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/smartcode/event/txhash/" + str(txhash) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def call_signed_contract(self, signed_tx, pre=True, node_index=None): sendrawtxtask = Task(Config.BASEAPI_PATH + "/rpc/sendrawtransaction.json") if pre: sendrawtxtask.request()["params"] = [signed_tx, 1] else: sendrawtxtask.request()["params"] = [signed_tx] if node_index != None: sendrawtxtask.data()["NODE_INDEX"] = node_index (result, response) = TaskRunner.run_single_task(sendrawtxtask, True, False) sendrawtxtask.data()["RESPONSE"] = response if not response is None and ("result" in response and "Result" in response["result"]) and not isinstance( response["result"]["Result"], list): response["result"]["Result String"] = HexToByte( response["result"]["Result"]).decode('iso-8859-1') logger.print("[ CALL CONTRACT ] " + json.dumps(sendrawtxtask.data(), indent=4)) return (result, response)
def getblockhashbyheight(self, height): task = Task(Config.BASEAPI_PATH + "/restful/get_blk_hash.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/block/hash/" + str(height) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def simplerun(self, rpcmethod, params, jsonrpc='2.0', id=1): request = copy.copy(CLIRPCApi.REQUEST_BODY) request["method"] = rpcmethod request["params"] = params request["jsonrpc"] = jsonrpc request["id"] = id ijson = {} ijson["TYPE"] = "ST" ijson["NODE_INDEX"] = int(self.currentnode) ijson["REQUEST"] = request ijson["RESPONSE"] = None task = Task(name=rpcmethod, ijson=ijson) (result, response) = TaskRunner.run_single_task(task, False) if response is None: raise Exception("cli rpc connect error") if response["jsonrpc"] != jsonrpc: raise Exception("cli rpc connect jsonrpc not valid: " + response["jsonrpc"]) if response["id"] != id: raise Exception("cli rpc connect id not valid: " + str(response["id"])) if "error" in response.keys() and response["error"] != 0: raise RPCError(json.dumps(response["error"])) return response["result"]
def test_abnormal_097_getmerkleproof(self): try: task = Task(testpath + "/resource/rpc/97_getmerkleproof.1.json") (process, response) = TaskRunner.run_single_task(task) self.ASSERT(not process, "") except Exception as e: logger.print(e.args[0])
def getmerkleproofbytxhash(self, _hash): task = Task(Config.BASEAPI_PATH + "/restful/get_merkle_proof.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/merkleproof/" + str(_hash) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getcontract(self, script_hash): task = Task(Config.BASEAPI_PATH + "/restful/get_contract_state.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/contract/" + str(script_hash) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getbalance(self, addr): task = Task(Config.BASEAPI_PATH + "/restful/get_balance.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/balance/" + str(addr) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getbalance(self, address): task = Task(Config.BASEAPI_PATH + "/rpc/getbalance.json") taskrequest = task.request() params = [] if address != None: params.append(address) taskrequest["params"] = params return TaskRunner.run_single_task(task)
def gettransactionbytxhash(self, _hash, raw=0): task = Task(Config.BASEAPI_PATH + "/restful/get_tx.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/transaction/" + str( _hash) + "?raw=" + str(raw) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getblockbyhash(self, _hash, raw=0): task = Task(Config.BASEAPI_PATH + "/restful/get_blk_by_hash.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/block/details/hash/" + str( _hash) + "?raw=" + str(raw) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getblocktxsbyheight(self, height): task = Task(Config.BASEAPI_PATH + "/restful/get_blk_txs_by_height.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/block/transactions/height/" + str(height) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getblockheightbytxhash(self, txhash): task = Task(Config.BASEAPI_PATH + "/restful/get_blk_hgt_by_txhash.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/block/height/txhash/" + str(txhash) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getsmartcodeeventbyheight(self, height): task = Task(Config.BASEAPI_PATH + "/restful/get_smtcode_evt_txs.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/smartcode/event/transactions/" + str( height) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getmerkleproof(self, tx_hash): task = Task(Config.BASEAPI_PATH + "/rpc/getmerkleproof.json") taskrequest = task.request() params = [] if tx_hash != None: params.append(tx_hash) taskrequest["params"] = params return TaskRunner.run_single_task(task)
def getstorage(self, script_hash, key): task = Task(Config.BASEAPI_PATH + "/restful/get_storage.json") task.set_type("restful") taskrequest = task.request() taskrequest["api"] = "/api/v1/storage/" + str(script_hash) + "/" + str( key) task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def test_normal_095_getmerkleproof(self): try: task = Task(testpath + "/resource/rpc/95_getmerkleproof.json") task.request()["params"] = [test_config.m_txhash_right] (process, response) = TaskRunner.run_single_task(task) self.ASSERT(process, "") except Exception as e: logger.print(e.args[0])
def getmerkleproof(self, _hash): task = Task(Config.BASEAPI_PATH + "/ws/getmerkleproof.json") task.set_type("ws") taskrequest = task.request() taskrequest["Hash"] = _hash task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getblocktxsbyheight(self, height): task = Task(Config.BASEAPI_PATH + "/ws/getblocktxsbyheight.json") task.set_type("ws") taskrequest = task.request() taskrequest["Height"] = height task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getblockheightbytxhash(self, _hash): task = Task(Config.BASEAPI_PATH + "/ws/getblockheightbytxhash.json") task.set_type("ws") taskrequest = task.request() taskrequest["Hash"] = _hash task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getbalancebyaddr(self, addr): task = Task(Config.BASEAPI_PATH + "/ws/getbalance.json") task.set_type("ws") taskrequest = task.request() taskrequest["Addr"] = addr task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def gettransaction(self, _hash, raw=0): task = Task(Config.BASEAPI_PATH + "/ws/gettransaction.json") task.set_type("ws") taskrequest = task.request() taskrequest["Hash"] = _hash taskrequest["Raw"] = raw task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def sendrawtransaction(self, _hex, pre=0): task = Task(Config.BASEAPI_PATH + "/ws/sendrawtransaction.json") task.set_type("ws") taskrequest = task.request() taskrequest["Data"] = _hex taskrequest["PreExec"] = pre task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getstorage(self, _hex, key): task = Task(Config.BASEAPI_PATH + "/ws/getstorage.json") task.set_type("ws") taskrequest = task.request() taskrequest["Hash"] = _hex taskrequest["Key"] = key task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getmempooltxstate(self, tx_hash): task = Task(Config.BASEAPI_PATH + "/rpc/getmempooltxstate.json") taskrequest = task.request() params = [] if tx_hash != None: params.append(tx_hash) taskrequest["params"] = params task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getblockhash(self, height): task = Task(Config.BASEAPI_PATH + "/rpc/getblockhash.json") taskrequest = task.request() params = [] if height != None: params.append(height) taskrequest["params"] = params task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getconnectioncount(self, param=None): task = Task(Config.BASEAPI_PATH + "/ws/getconnectioncount.json") task.set_type("ws") if param and isinstance(param, dict): taskrequest = task.request() for key in param: taskrequest[key] = param[key] task.set_request(taskrequest) return TaskRunner.run_single_task(task)
def getallowance(self, asset, _from, to): task = Task(Config.BASEAPI_PATH + "/ws/getallowance.json") task.set_type("ws") taskrequest = task.request() taskrequest["Asset"] = asset taskrequest["From"] = _from taskrequest["To"] = to task.set_request(taskrequest) return TaskRunner.run_single_task(task)