def old_broadcast_message( self, original_message: BroadcastMessage) -> BroadcastMessageV8: return BroadcastMessageV8(original_message.block_hash(), original_message.network_num(), original_message.source_id(), original_message.is_encrypted(), bytearray(original_message.blob()))
def test_bx_block_to_block__full_txs_success(self): tx_count = 150 txs = [] short_txs = [] short_ids = [] for i in range(1, tx_count): tx = mock_eth_messages.get_dummy_transaction(1) txs.append(tx) tx_bytes = rlp.encode(tx, Transaction) if i % 2 == 0: tx_hash = hashlib.sha256(tx_bytes).digest() self.tx_service.assign_short_id(tx_hash, i) self.tx_service.set_transaction_contents(tx_hash, tx_bytes) short_tx = ShortTransaction(0, bytes()) short_txs.append(short_tx) short_ids.append(i) else: short_tx = ShortTransaction(1, tx_bytes) short_txs.append(short_tx) dummy_chain_difficulty = 20 dummy_block_number = 10 compact_block = CompactBlock(mock_eth_messages.get_dummy_block_header(8), short_txs, [ mock_eth_messages.get_dummy_block_header(2), mock_eth_messages.get_dummy_block_header(3) ], dummy_chain_difficulty, dummy_block_number) compact_block_msg_bytes = bytearray(constants.UL_ULL_SIZE_IN_BYTES) compact_block_msg_bytes.extend(rlp.encode(compact_block, CompactBlock)) short_ids_offset = len(compact_block_msg_bytes) struct.pack_into("<Q", compact_block_msg_bytes, 0, short_ids_offset) compact_block_bytes = compact_block_short_ids_serializer.serialize_short_ids_into_bytes(short_ids) compact_block_msg_bytes.extend(compact_block_bytes) compact_block_hash_bytes = hashlib.sha256(compact_block_msg_bytes).digest() compact_block_hash = Sha256Hash(compact_block_hash_bytes) bx_block_msg = BroadcastMessage(compact_block_hash, self.test_network_num, is_encrypted=True, blob=compact_block_msg_bytes) block_msg, block_info, unknown_tx_sids, unknown_tx_hashes = self.eth_message_converter.bx_block_to_block( bx_block_msg.blob(), self.tx_service) self.assertTrue(block_msg) self.assertIsInstance(block_msg, InternalEthBlockInfo) new_block_msg = block_msg.to_new_block_msg() block = new_block_msg.get_block() self._assert_values_equal(compact_block.header, block.header) self._assert_values_equal(compact_block.uncles, block.uncles) self.assertEqual(len(compact_block.transactions), len(block.transactions)) for block_tx, i in zip(block.transactions, range(0, tx_count - 1)): self.assertIsInstance(block_tx, Transaction) self._assert_values_equal(block_tx, txs[i]) self.assertEqual(compact_block.chain_difficulty, new_block_msg.chain_difficulty)