Skip to content

Commit c6ca56f

Browse files
committed
Activate improved compression.
1 parent 34823b1 commit c6ca56f

File tree

4 files changed

+19
-30
lines changed

4 files changed

+19
-30
lines changed

validator-session/candidate-serializer.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,9 @@ td::Result<td::BufferSlice> serialize_candidate(const tl_object_ptr<ton_api::val
2828
if (!compression_enabled) {
2929
return serialize_tl_object(block, true);
3030
}
31-
size_t decompressed_size;
32-
TRY_RESULT(compressed, compress_candidate_data(block->data_, block->collated_data_, decompressed_size))
33-
return create_serialize_tl_object<ton_api::validatorSession_compressedCandidate>(
34-
0, block->src_, block->round_, block->root_hash_, (int)decompressed_size, std::move(compressed));
31+
TRY_RESULT(compressed, compress_candidate_data(block->data_, block->collated_data_))
32+
return create_serialize_tl_object<ton_api::validatorSession_compressedCandidateV2>(
33+
0, block->src_, block->round_, block->root_hash_, std::move(compressed));
3534
}
3635

3736
td::Result<tl_object_ptr<ton_api::validatorSession_candidate>> deserialize_candidate(td::Slice data,
@@ -72,8 +71,7 @@ td::Result<tl_object_ptr<ton_api::validatorSession_candidate>> deserialize_candi
7271
return res;
7372
}
7473

75-
td::Result<td::BufferSlice> compress_candidate_data(td::Slice block, td::Slice collated_data,
76-
size_t& decompressed_size) {
74+
td::Result<td::BufferSlice> compress_candidate_data(td::Slice block, td::Slice collated_data) {
7775
vm::BagOfCells boc1, boc2;
7876
TRY_STATUS(boc1.deserialize(block));
7977
if (boc1.get_root_count() != 1) {
@@ -84,9 +82,7 @@ td::Result<td::BufferSlice> compress_candidate_data(td::Slice block, td::Slice c
8482
for (int i = 0; i < boc2.get_root_count(); ++i) {
8583
roots.push_back(boc2.get_root_cell(i));
8684
}
87-
TRY_RESULT(data, vm::std_boc_serialize_multi(std::move(roots), 2));
88-
decompressed_size = data.size();
89-
td::BufferSlice compressed = td::lz4_compress(data);
85+
TRY_RESULT(compressed, vm::boc_compress(roots, vm::CompressionAlgorithm::ImprovedStructureLZ4));
9086
LOG(DEBUG) << "Compressing block candidate: " << block.size() + collated_data.size() << " -> " << compressed.size();
9187
return compressed;
9288
}

validator-session/candidate-serializer.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ td::Result<tl_object_ptr<ton_api::validatorSession_candidate>> deserialize_candi
2727
int max_decompressed_data_size,
2828
int proto_version);
2929

30-
td::Result<td::BufferSlice> compress_candidate_data(td::Slice block, td::Slice collated_data,
31-
size_t& decompressed_size);
30+
td::Result<td::BufferSlice> compress_candidate_data(td::Slice block, td::Slice collated_data);
3231
td::Result<std::pair<td::BufferSlice, td::BufferSlice>> decompress_candidate_data(td::Slice compressed,
3332
bool improved_compression,
3433
int decompressed_size,

validator/collator-node/utils.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,10 @@ tl_object_ptr<ton_api::collatorNode_Candidate> serialize_candidate(const BlockCa
2828
PublicKey{pubkeys::Ed25519{block.pubkey.as_bits256()}}.tl(), create_tl_block_id(block.id), block.data.clone(),
2929
block.collated_data.clone());
3030
}
31-
size_t decompressed_size;
3231
td::BufferSlice compressed =
33-
validatorsession::compress_candidate_data(block.data, block.collated_data, decompressed_size).move_as_ok();
34-
return create_tl_object<ton_api::collatorNode_compressedCandidate>(
35-
0, PublicKey{pubkeys::Ed25519{block.pubkey.as_bits256()}}.tl(), create_tl_block_id(block.id),
36-
(int)decompressed_size, std::move(compressed));
32+
validatorsession::compress_candidate_data(block.data, block.collated_data).move_as_ok();
33+
return create_tl_object<ton_api::collatorNode_compressedCandidateV2>(
34+
0, PublicKey{pubkeys::Ed25519{block.pubkey.as_bits256()}}.tl(), create_tl_block_id(block.id), std::move(compressed));
3735
}
3836

3937
td::Result<BlockCandidate> deserialize_candidate(tl_object_ptr<ton_api::collatorNode_Candidate> f,

validator/full-node-serializer.cpp

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,13 @@ td::Result<td::BufferSlice> serialize_block_broadcast(const BlockBroadcast& broa
4040

4141
TRY_RESULT(proof_root, vm::std_boc_deserialize(broadcast.proof));
4242
TRY_RESULT(data_root, vm::std_boc_deserialize(broadcast.data));
43-
TRY_RESULT(boc, vm::std_boc_serialize_multi({proof_root, data_root}, 2));
44-
td::BufferSlice data =
45-
create_serialize_tl_object<ton_api::tonNode_blockBroadcastCompressed_data>(std::move(sigs), std::move(boc));
46-
td::BufferSlice compressed = td::lz4_compress(data);
43+
TRY_RESULT(compressed_boc, vm::boc_compress({proof_root, data_root}, vm::CompressionAlgorithm::ImprovedStructureLZ4));
4744
VLOG(FULL_NODE_DEBUG) << "Compressing block broadcast: "
4845
<< broadcast.data.size() + broadcast.proof.size() + broadcast.signatures.size() * 96 << " -> "
49-
<< compressed.size();
50-
return create_serialize_tl_object<ton_api::tonNode_blockBroadcastCompressed>(
51-
create_tl_block_id(broadcast.block_id), broadcast.catchain_seqno, broadcast.validator_set_hash, 0,
52-
std::move(compressed));
46+
<< compressed_boc.size() + broadcast.signatures.size() * 96;
47+
return create_serialize_tl_object<ton_api::tonNode_blockBroadcastCompressedV2>(
48+
create_tl_block_id(broadcast.block_id), broadcast.catchain_seqno, broadcast.validator_set_hash, std::move(sigs),
49+
0, std::move(compressed_boc));
5350
}
5451

5552
static td::Result<BlockBroadcast> deserialize_block_broadcast(ton_api::tonNode_blockBroadcast& f) {
@@ -134,10 +131,10 @@ td::Result<td::BufferSlice> serialize_block_full(const BlockIdExt& id, td::Slice
134131
}
135132
TRY_RESULT(proof_root, vm::std_boc_deserialize(proof));
136133
TRY_RESULT(data_root, vm::std_boc_deserialize(data));
137-
TRY_RESULT(boc, vm::std_boc_serialize_multi({proof_root, data_root}, 2));
138-
td::BufferSlice compressed = td::lz4_compress(boc);
134+
TRY_RESULT(compressed, vm::boc_compress({proof_root, data_root}, vm::CompressionAlgorithm::ImprovedStructureLZ4));
135+
139136
VLOG(FULL_NODE_DEBUG) << "Compressing block full: " << data.size() + proof.size() << " -> " << compressed.size();
140-
return create_serialize_tl_object<ton_api::tonNode_dataFullCompressed>(create_tl_block_id(id), 0,
137+
return create_serialize_tl_object<ton_api::tonNode_dataFullCompressedV2>(create_tl_block_id(id), 0,
141138
std::move(compressed), is_proof_link);
142139
}
143140

@@ -204,10 +201,9 @@ td::Result<td::BufferSlice> serialize_block_candidate_broadcast(BlockIdExt block
204201
create_tl_object<ton_api::tonNode_blockSignature>(Bits256::zero(), td::BufferSlice()), td::BufferSlice(data));
205202
}
206203
TRY_RESULT(root, vm::std_boc_deserialize(data));
207-
TRY_RESULT(data_new, vm::std_boc_serialize(root, 2));
208-
td::BufferSlice compressed = td::lz4_compress(data_new);
204+
TRY_RESULT(compressed, vm::boc_compress({root}, vm::CompressionAlgorithm::ImprovedStructureLZ4));
209205
VLOG(FULL_NODE_DEBUG) << "Compressing block candidate broadcast: " << data.size() << " -> " << compressed.size();
210-
return create_serialize_tl_object<ton_api::tonNode_newBlockCandidateBroadcastCompressed>(
206+
return create_serialize_tl_object<ton_api::tonNode_newBlockCandidateBroadcastCompressedV2>(
211207
create_tl_block_id(block_id), cc_seqno, validator_set_hash,
212208
create_tl_object<ton_api::tonNode_blockSignature>(Bits256::zero(), td::BufferSlice()), 0, std::move(compressed));
213209
}

0 commit comments

Comments
 (0)