def proc_cmd_sign_request(self, dat): self.logger.info( "[%d] Recv SIGN_REQUEST from %s" % (self.idx, binascii.b2a_hex(dat[KeyType.source_user_id]))) if KeyType.transactions not in dat: self.logger.warn("message needs to include referred transactions") return txobj = bbclib.BBcTransaction() txobj.deserialize(dat[KeyType.transaction_data]) objs = dict() for txid, txdata in dat[KeyType.transactions].items(): txo = bbclib.BBcTransaction() txo.deserialize(txdata) objs[txid] = txo for i, reference in enumerate(txobj.references): event = objs[reference.transaction_id].events[ reference.event_index_in_ref] if clients[self.idx]['user_id'] in event.mandatory_approvers: signature = txobj.sign(keypair=clients[self.idx]['keypair']) clients[self.idx]['app'].sendback_signature( dat[KeyType.source_user_id], txobj.transaction_id, i, signature) return
def test_19_search_asset(self): print("\n-----", sys._getframe().f_code.co_name, "-----") clients[0]['app'].search_transaction_with_condition( asset_group_id=asset_group_id, asset_id=transactions[0].events[1].asset.asset_id) dat = msg_processor[0].synchronize() assert KeyType.transactions in dat txobj = bbclib.BBcTransaction(deserialize=dat[KeyType.transactions][0]) assert txobj.transaction_id == transactions[0].transaction_id
def test_20_search_transaction(self): print("\n-----", sys._getframe().f_code.co_name, "-----") transactions[0] = bbclib.BBcTransaction() transactions[0].deserialize(transaction_dat) print("find txid=", binascii.b2a_hex(transactions[0].transaction_id)) clients[4]['app'].search_transaction(transactions[0].transaction_id) dat = msg_processor[4].synchronize() assert dat[KeyType.status] == 0 assert KeyType.transaction_id in dat assert dat[KeyType.transaction_id] == transactions[0].transaction_id
def proc_resp_search_asset(self, dat): if KeyType.transaction_data in dat: self.logger.debug("OK: Asset [%s] is found." % binascii.b2a_hex(dat[KeyType.asset_id])) tx_obj = bbclib.BBcTransaction( deserialize=dat[KeyType.transaction_data]) for evt in tx_obj.events: if evt.asset.asset_body_size > 0: self.logger.debug( " [%s] asset_body --> %s" % (binascii.b2a_hex( evt.asset.asset_id[:4]), evt.asset.asset_body)) else: self.logger.debug("NG.....") dat = None self.queue.put(dat)
def test_07_search_transaction_direction_forward(self): print("\n-----", sys._getframe().f_code.co_name, "-----") clients[0]['app'].traverse_transactions(transactions2[4].transaction_id, direction=0, hop_count=10) dat = clients[0]['app'].callback.synchronize() assert dat[KeyType.status] == 0 assert KeyType.transaction_tree in dat assert KeyType.all_included in dat and not dat[KeyType.all_included] print("*Expected sequences: 4-5-6-7-8, 4-5-9-10-11-12-13-14 (total txobj count=11)") assert len(dat[KeyType.transaction_tree]) == 8 # "4-5-9-10-11-12-13-14" asset_bodies = list() for i, txtree in enumerate(dat[KeyType.transaction_tree]): for txdat in txtree: txobj = bbclib.BBcTransaction(deserialize=txdat) asset_body = txobj.events[0].asset.asset_body print("[%d] asset=%s" % (i, asset_body)) asset_bodies.append(asset_body)
def test_04_search_transaction_direction_backward(self): print("\n-----", sys._getframe().f_code.co_name, "-----") clients[0]['app'].traverse_transactions(transactions1[1].transaction_id, direction=1, hop_count=3) dat = clients[0]['app'].callback.synchronize() assert dat[KeyType.status] == 0 assert KeyType.transaction_tree in dat assert len(dat[KeyType.transaction_tree]) == 2 asset_bodies = list() for i, txtree in enumerate(dat[KeyType.transaction_tree]): for txdat in txtree: txobj = bbclib.BBcTransaction(deserialize=txdat) asset_body = txobj.relations[0].asset.asset_body print("[%d] asset=%s" % (i, asset_body)) asset_bodies.append(asset_body) assert b'transaction1_1' in asset_bodies assert b'transaction1_0' in asset_bodies