def create_tx(self, data): tx = Transaction() score_id = "" score_version = "" try: score_info = self._channel_service.score_info score_id = score_info[message_code.MetaParams.ScoreInfo.score_id] score_version = score_info[message_code.MetaParams.ScoreInfo.score_version] except KeyError as e: logging.debug(f"CreateTX : load score info fail\n" f"cause : {e}") send_tx_type = self._channel_service.get_channel_option()["send_tx_type"] tx.init_meta(ChannelProperty().peer_id, score_id, score_version, ChannelProperty().name, send_tx_type) tx.put_data(data) tx.sign_hash(self._channel_service.peer_auth) self._channel_service.broadcast_scheduler.schedule_job(BroadcastCommand.CREATE_TX, tx) try: data_log = json.loads(data) except Exception as e: data_log = {'tx_hash': tx.tx_hash} util.apm_event(ChannelProperty().peer_id, { 'event_type': 'CreateTx', 'peer_id': ChannelProperty().peer_id, 'peer_name': conf.PEER_NAME, 'channel_name': ChannelProperty().name, 'tx_hash': tx.tx_hash, 'data': data_log}) return tx.tx_hash
def test_generate_and_validate_hash(self): """트랜잭션 생성시 만들어진 hash 와 검증시 비교하는 hash 가 동일한지 확인하는 테스트 :return: """ # GIVEN tx = Transaction() tx.init_meta("AAAAA", "BBBBB", "CCCCC", conf.LOOPCHAIN_DEFAULT_CHANNEL) tx.put_meta("1234", "5678") tx.put_meta("1", "5") tx.put_meta("2", "5") tx.put_meta("3", "5") tx.put_meta("4", "5") txhash1 = tx.put_data("TEST DATA DATA") txtime = tx.get_timestamp() tx2 = Transaction() tx2.init_meta("AAAAA", "BBBBB", "CCCCC", conf.LOOPCHAIN_DEFAULT_CHANNEL) tx2.put_meta("1234", "5678") tx2.put_meta("1", "5") tx2.put_meta("2", "5") tx2.put_meta("3", "5") tx2.put_meta("4", "5") txhash2 = tx2.put_data("TEST DATA DATA", txtime) # WHEN txhash1_1 = Transaction.generate_transaction_hash(tx) # THEN logging.debug("txhash1: " + str(txhash1)) logging.debug("txhash1_1: " + str(txhash1_1)) logging.debug("txhash2: " + str(txhash2)) self.assertEqual(txhash1, txhash2) self.assertEqual(txhash1, txhash1_1) self.assertEqual(txhash2, txhash1_1)