Skip to content

Commit 9359f9d

Browse files
committed
Activate improved compression.
1 parent 32189f1 commit 9359f9d

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
@@ -29,10 +29,9 @@ td::Result<td::BufferSlice> serialize_candidate(const tl_object_ptr<ton_api::val
2929
if (!compression_enabled) {
3030
return serialize_tl_object(block, true);
3131
}
32-
size_t decompressed_size;
33-
TRY_RESULT(compressed, compress_candidate_data(block->data_, block->collated_data_, decompressed_size))
34-
return create_serialize_tl_object<ton_api::validatorSession_compressedCandidate>(
35-
0, block->src_, block->round_, block->root_hash_, (int)decompressed_size, std::move(compressed));
32+
TRY_RESULT(compressed, compress_candidate_data(block->data_, block->collated_data_))
33+
return create_serialize_tl_object<ton_api::validatorSession_compressedCandidateV2>(
34+
0, block->src_, block->round_, block->root_hash_, std::move(compressed));
3635
}
3736

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

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

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
@@ -29,12 +29,10 @@ tl_object_ptr<ton_api::collatorNode_Candidate> serialize_candidate(const BlockCa
2929
PublicKey{pubkeys::Ed25519{block.pubkey.as_bits256()}}.tl(), create_tl_block_id(block.id), block.data.clone(),
3030
block.collated_data.clone());
3131
}
32-
size_t decompressed_size;
3332
td::BufferSlice compressed =
34-
validatorsession::compress_candidate_data(block.data, block.collated_data, decompressed_size).move_as_ok();
35-
return create_tl_object<ton_api::collatorNode_compressedCandidate>(
36-
0, PublicKey{pubkeys::Ed25519{block.pubkey.as_bits256()}}.tl(), create_tl_block_id(block.id),
37-
(int)decompressed_size, std::move(compressed));
33+
validatorsession::compress_candidate_data(block.data, block.collated_data).move_as_ok();
34+
return create_tl_object<ton_api::collatorNode_compressedCandidateV2>(
35+
0, PublicKey{pubkeys::Ed25519{block.pubkey.as_bits256()}}.tl(), create_tl_block_id(block.id), std::move(compressed));
3836
}
3937

4038
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
@@ -41,16 +41,13 @@ td::Result<td::BufferSlice> serialize_block_broadcast(const BlockBroadcast& broa
4141

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

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

@@ -207,10 +204,9 @@ td::Result<td::BufferSlice> serialize_block_candidate_broadcast(BlockIdExt block
207204
create_tl_object<ton_api::tonNode_blockSignature>(Bits256::zero(), td::BufferSlice()), td::BufferSlice(data));
208205
}
209206
TRY_RESULT(root, vm::std_boc_deserialize(data));
210-
TRY_RESULT(data_new, vm::std_boc_serialize(root, 2));
211-
td::BufferSlice compressed = td::lz4_compress(data_new);
207+
TRY_RESULT(compressed, vm::boc_compress({root}, vm::CompressionAlgorithm::ImprovedStructureLZ4));
212208
VLOG(FULL_NODE_DEBUG) << "Compressing block candidate broadcast: " << data.size() << " -> " << compressed.size();
213-
return create_serialize_tl_object<ton_api::tonNode_newBlockCandidateBroadcastCompressed>(
209+
return create_serialize_tl_object<ton_api::tonNode_newBlockCandidateBroadcastCompressedV2>(
214210
create_tl_block_id(block_id), cc_seqno, validator_set_hash,
215211
create_tl_object<ton_api::tonNode_blockSignature>(Bits256::zero(), td::BufferSlice()), 0, std::move(compressed));
216212
}

0 commit comments

Comments
 (0)