def random_transaction(api_name, send_account, receive_account): ''' :param api_name: :param receive_account: :return: ''' logging.info(receive_account) price = [ "0x168000000000000", "0x18800000000", "0x16600000000", '0x1580000000', "0x368000000000", "0x66800000000" ] for i in range(len(receive_account)): logging.info(receive_account[i]) receive_account = np.array(receive_account) logging.info(receive_account[i]) price = price[random.randint(0, len(price) - 1)] logging.info(price) logging.info("ra:{},reac{},pri{}".format(send_account, receive_account[i], price)) try: api_params = [ send_account, receive_account[i], price, "0x110", "0x30000", "" ] logging.info("api_params:{} ".format(api_params)) result = request_Api(api_name, api_params) # print("业务需求: 发送交易 transaction of 120,result:{}".format(result)) except Exception as e: logging.info("随机发送多笔交易失败{}".format(e)) continue return result
def create_account_100(peoples=100): """ 主业务函数 创建100账户 :return: """ api_name = "account_createAccount" params = [] account_all = [] for i in range(peoples): # 用户 xxx try: response = request_Api(api_name, params) print("创建用户:", response) result = response["result"] # sleep(2) account_all.append(result) except Exception as e: print("账户创建失败!".format(e)) sleep(3) print("账户创建失败!".format(e)) continue print(account_all) return account_all
def sendRawTransaction(api_name, params): try: transfer_result = request_Api(api_name, params) result = transfer_result["results"] print("交易池返回结果:{}".format(result)) logging.info("交易池返回结果:{}".format(result)) except Exception as e: print("交易池返回错误:{}".format(e))
def getCreditDetails(api_name, params): ''' 获得投票信息,查询投票信息 curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getCreditDetails","params":["0x0ad472fd967eb77fb6e36ec40901790065155d5e"], "id": 3}' -H "Content-Type:application/json" :param api_name: chain_getVoteCreditDetails :param params: 参数为to的地址,查询的投票的地址 :return: 1.投票信息 2.质押信息 ''' result = request_Api(api_name, params) print("投票信息返回为{}".format(result))
def cancelCandidateCredit(api_name, params): ''' #取消质押 可以查log curl -H "Content-Type: application/json" -X post --data '{"jsonrpc":"2.0","method":"account_cancelCandidateCredit","params":["0x0ad472fd967eb77fb6e36ec40901790065155d5e","0x2386f26fc10000","0x110","0x30000",""],"id":1}' http://127.0.0.1:15645 :param api_name: :param params: :return:交易哈希 ''' result = request_Api(api_name, params) print(result)
def getCancelCreditDetails(api_name, params): ''' #获取取消质押详情 可以查log curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getCancelCreditDetails","params":["0x0ad472fd967eb77fb6e36ec40901790065155d5e"], "id": 3}' -H "Content-Type:application/json" :param api_name: :param params: :return: 交易详情list,取消的列表 流水 ''' result = request_Api(api_name, params) print("获取取消质押详情,{}".format(result))
def cancelVoteCredit(api_name, params): ''' #撤销投票 curl -H "Content-Type: application/json" -X post --data '{"jsonrpc":"2.0","method":"account_cancelVoteCredit","params":["0x300fc5a14e578be28c64627c0e7e321771c58cd4","0x0ad472fd967eb77fb6e36ec40901790065155d5e","0xf4240","0x110","0x30000"],"id":1}' http://127.0.0.1:15645 :param api_name:account_cancelVoteCredit :param params: fromd地址,to地址,金额,gas价格,手续费 :return:交易hash ''' result = request_Api(api_name, params) print("撤销投票结果返回为{}".format(result))
def getPoolTransactions(api_name, params): ''' 获取交易池中的交易信息 :param api_name: :param params: 待查询地址 :return: 交易池中所有交易 示例代码 curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"blockmgr_getPoolTransactions","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" ''' result = request_Api(api_name, params) print(result)
def unlock(api_name, unlock_account): ''' account_account_unlockAccount 解锁账号 :param api_name: :param params: :return: ''' result = request_Api(api_name, unlock_account) print(result) logging.info("账号{}解锁成功{}".format(api_name, result))
def lock(api_name, lock_account): ''' account_lockAccount 锁定账号 :param api_name: account_lockAccount :param params: :return: ''' result = request_Api(api_name, lock_account) print(result) logging.info("账号{}锁住成功{}".format(api_name, result))
def getLogs(api_name, params): ''' 根据txhash获取交易log信息 示例代码 curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"chain_getLogs","params":["0x7d9dd32ca192e765ff2abd7c5f8931cc3f77f8f47d2d52170c7804c2ca2c5dd9"], "id": 3}' -H "Content-Type:application/json" :param api_name: :param params: txhash 交易哈希 :return: []log ''' result = request_Api(api_name, params) print(result)
def candidateCredit(api_name, params): ''' 质押成为候选节点 ,候选节点质押 curl -H "Content-Type: application/json" -X post --data '{"jsonrpc":"2.0","method":"account_candidateCredit","params":["0x12d11931447fa47827198c37e838feb52e41e0c9","0x23","0x110","0x30000","{\"Pubkey\":\"0x02e2122ea24230a23dbcaa7f65b268740e29aef65a2deb5bf9c81ec6745d44eafa\",\"Node\":\"192.168.31.51:44444\"}"],"id":1}' http://127.0.0.1:35645 :param api_name: :param params: :return: 交易hash ''' try: result = request_Api(api_name, params) print("质押成为候选节点,返回值为{}".format(result)) except Exception as e: print("质押成为候选节点报错,{}".format(e))
def voteCredit(api_name, params): ''' 投票 curl -H "Content-Type: application/json" -X post --data '{"jsonrpc":"2.0","method":"account_voteCredit","params":["0x300fc5a14e578be28c64627c0e7e321771c58cd4","0x0ad472fd967eb77fb6e36ec40901790065155d5e","0xf4240","0x110","0x30000"],"id":1}' http://127.0.0.1:15645 :param api_name: :param params:投票参数from地址与to地址 投多少钱 gas价格 手续费 :return:交易hash ''' try: result = request_Api(api_name, params) print("投票api返回值为{}".format(result)) except Exception as e: print("投票api返回错误:{}".format(e))
def create_account(api_name, params): """ 主业务函数 创建单账户 :return: """ people = 1 logging.info("业务需求: 创建一个账户 account_createAccount") try: result = request_Api(api_name, params) result = result["result"] except Exception as e: logging.info(e) return -1 #调用接口报错 return result
def blockmgrGetTxInPool(api_name, params): ''' 获得在交易池中的交易 :param api_name: :param params: :return: ''' try: pool = request_Api(api_name, params) pool_result = pool["results"] print("交易池返回结果:{}".format(pool_result)) logging.info("交易池返回结果:{}".format(pool_result)) except Exception as e: print("交易池返回错误:{}".format(e))
def getTransaction(api_name, params): ''' 根据交易hash查询交易详细信息 params = 交易hash curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"trace_getTransaction","params":["0x00001c9b8c8fdb1f53faf02321f76253704123e2b56cce065852bab93e526ae2"], "id": 3}' -H "Content-Type:application/json" :return: 交易详细信息 ''' try: transaction = request_Api(api_name, params) print(transaction) return transaction except Exception as e: print("根据交易hash查询交易详细信息,api返回错误".format(e)) logging.info("根据交易hash查询交易详细信息,api返回错误".format(e)) return -1
def creat_one_wallet_account(name, params): ''' :param name: api名字 :param params: api参数 :return: 创建的一个钱包地址 ''' try: address = request_Api(name, params) print(address) address = address['result'] print("result:{}".format(address)) return address except Exception as e: print(e) return None
def getReceiveTransactionByAd(api_name, params): ''' 根据地址查询该交易接受的交易,支持分页 e.g: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"trace_getReceiveTransactionByAddr","params":["0x3ebcbe7cb440dd8c52940a2963472380afbb56c5",1,10], "id": 3}' -H "Content-Type:application/json" :param api_name: :param params: 1. 交易地址; 2. 分页号(从1开始)3. 页大小 :return: 交易列表 ''' try: reTransaction = request_Api(api_name, params) print(reTransaction) return reTransaction except Exception as e: print("根据地址查询该交易接受的交易,支持分页,api返回错误".format(e)) logging.info("根据地址查询该交易接受的交易,支持分页,api返回错误".format(e)) return -1
def getSendTransactionByAddr(api_name, params): ''' 根据地址查询该交易发出的交易,支持分页,从0开始计数,返回结果中的nonce为交易序号 e.g: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"trace_getSendTransactionByAddr","params":["0x7923a30bbfbcb998a6534d56b313e68c8e0c594a",1,10], "id": 3}' -H "Content-Type:application/json" :param api_name: :param params: 1. 交易地址 2. 分页号(从1开始)3. 页大小 :return: 交易列表 ''' try: seTransaction = request_Api(api_name, params) print(seTransaction) return seTransaction except Exception as e: print("根据地址查询该交易发出的交易,支持分页,api返回错误".format(e)) logging.info("根据地址查询该交易发出的交易,支持分页,api返回错误".format(e)) return -1
def decodeTrasnaction(api_name, params): ''' 把交易字节信息反解析成交易详情 :e.g curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"trace_decodeTrasnaction","params":["0x02a7ae20007923a30bbfbcb998a6534d56b313e68c8e0c594a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002011102011003030000bc9889d00b004120eba14c77eab7a154833ff14832d8769cfc0b30db288445d6a83ef2fe337aa09042f8174a593543c4acabe7fadf1ad5fceea9c835682cb9dbea3f1d8fec181fb9"], "id": 3}' -H "Content-Type:application/json" :param api_name: :param params: 交易字节信息 必须为数组 :return: 交易详情 ''' try: deTransaction = request_Api(api_name, params) print(deTransaction) return deTransaction except Exception as e: print("把交易字节信息反解析成交易详情,api返回错误".format(e)) logging.info("把交易字节信息反解析成交易详情,api返回错误".format(e)) return -1
def getRawTransaction(api_name, params): ''' 根据交易hash查询交易字节 api_name = api_name params = 交易hash 示例代码 curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"trace_getRawTransaction","params":, "id": 3}' -H "Content-Type:application/json" :return: 交易字节信息 ''' try: rawTransaction = request_Api(api_name, params) print(rawTransaction) return rawTransaction except Exception as e: print("根据交易hash查询交易字节,api返回错误".format(e)) logging.info("根据交易hash查询交易字节,api返回错误".format(e)) return -1
def rebuild(api_name, params): ''' 重建trace中的区块记录 e.g: curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"trace_rebuild","params":[1,10], "id": 3}' -H "Content-Type:application/json" :param api_name: :param params: 1. 起始块(包含)2. 终止块(不包含) :return: ''' try: seTransaction = request_Api(api_name, params) print(seTransaction) return seTransaction except Exception as e: print("根据地址查询该交易发出的交易,支持分页,api返回错误".format(e)) logging.info("根据地址查询该交易发出的交易,支持分页,api返回错误".format(e)) return -1
def getTransactionCount(api_name, params): ''' 获取该地址发出的交易总数 示例代码 curl http://localhost:15645 -X POST --data '{"jsonrpc":"2.0","method":"blockmgr_getTransactionCount","params":["0x8a8e541ddd1272d53729164c70197221a3c27486"], "id": 3}' -H "Content-Type:application/json" :param api_name: :param params:待查询地址 :return:交易池中所有交易 ''' try: result = request_Api(api_name, params) # print("该地址发出的交易总数api的返回结果{}".format(result)) result = result["result"] print("该地址发出的交易总数为{}".format(result)) return result except Exception as e: print("该地址发出的交易总数api的返回结果{}".format(e)) return -1
def transaction_one(send_account, receive_account, price): ''' :param rootAccount: 发送账户 :param receive_account: 接收账户 :return: 1个账户的交易结果 ''' api_name = "account_transfer" try: api_params = [ send_account, receive_account, price, "0x110", "0x30000", "" ] result = request_Api(api_name, api_params) result = result['result'] except: print("发送一笔交易失败{}".format(result)) logging.info("发送一笔交易失败{}".format(result)) return -1 return result
def account_setAlias(set_account, set_name): params = [set_account, set_name, "0x110", "0x30000"] # api参数 result = request_Api("account_setAlias", params) return result