Skip to content

Commit

Permalink
feat(collator): use prev data accounts extra total count for finalize…
Browse files Browse the repository at this point in the history
… wu calculation
  • Loading branch information
serejkaaa512 committed Dec 6, 2024
1 parent 643cd25 commit a31e4de
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 19 deletions.
6 changes: 2 additions & 4 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ dirs = "5.0.1"
ed25519 = "2.0"
ed25519-dalek = "2.1"
everscale-crypto = { version = "0.2", features = ["tl-proto", "serde"] }
everscale-types = { version = "0.1.2", features = ["tycho"] }
everscale-types = { git = "https://github.com/broxus/everscale-types.git", features = ["tycho"], branch = "feature/depth-balance-update" }
exponential-backoff = "1"
fdlimit = "0.3.0"
futures-util = "0.3"
Expand Down Expand Up @@ -239,3 +239,6 @@ opt-level = 3
opt-level = 3
[profile.dev.package."*"]
opt-level = 1

[patch.crates-io]
everscale-types = { git = "https://github.com/broxus/everscale-types.git", features = ["tycho"], branch = "feature/depth-balance-update" }
3 changes: 1 addition & 2 deletions block-util/src/dict.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ where
Ok(Self {
dict_root: build_aug_dict_from_sorted_iter(
iter.into_iter().map(|(k, a, v)| {
// SAFETY: We know that this cell is not a library cell.
let value = unsafe { v.inner().as_slice_unchecked() };
let value = v.inner().as_slice_allow_pruned();
(k, a, value)
}),
K::BITS,
Expand Down
5 changes: 1 addition & 4 deletions cli/src/cmd/tools/gen_zerostate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -324,10 +324,7 @@ impl ZerostateConfig {

accounts.set(
account,
DepthBalanceInfo {
balance,
split_depth: 0,
},
DepthBalanceInfo { balance, count: 1 },
ShardAccount {
account: account_state_cell,
last_trans_hash: HashBytes::ZERO,
Expand Down
30 changes: 22 additions & 8 deletions collator/src/collator/do_collate/finalize.rs
Original file line number Diff line number Diff line change
Expand Up @@ -344,19 +344,27 @@ impl Phase<FinalizeState> {
);

let accounts_count = self.state.collation_data.accounts_count;
let old_accounts_count = self
.state
.prev_shard_data
.observable_accounts()
.root_extra()
.count as u64;
let in_msgs_len = self.state.collation_data.in_msgs.len() as u64;
let out_msgs_len = self.state.collation_data.out_msgs.len() as u64;

finalize_wu_total = Self::calc_finalize_wu_total(
old_accounts_count,
accounts_count,
in_msgs_len,
out_msgs_len,
wu_params_finalize,
);

tracing::debug!(target: tracing_targets::COLLATOR,
"finalize_wu_total: {}, accounts_count: {}, in_msgs: {}, out_msgs: {} ",
"finalize_wu_total: {}, old_state_accounts_count: {}, updated_accounts_count: {}, in_msgs: {}, out_msgs: {} ",
finalize_wu_total,
old_accounts_count,
accounts_count,
in_msgs_len,
out_msgs_len,
Expand Down Expand Up @@ -640,6 +648,7 @@ impl Phase<FinalizeState> {
}

fn calc_finalize_wu_total(
old_accounts_count: u64,
accounts_count: u64,
in_msgs_len: u64,
out_msgs_len: u64,
Expand All @@ -655,13 +664,18 @@ impl Phase<FinalizeState> {
serialize_msg,
state_update_min,
state_update_accounts,
state_update_msg,
..
} = wu_params_finalize;

let accounts_count_logarithm = accounts_count.checked_ilog2().unwrap_or_default() as u64;
let delimiter = 1000;

let old_accounts_count_logarithm =
((old_accounts_count as f64).log2() * delimiter as f64) as u64;

let build = accounts_count
.saturating_mul(accounts_count_logarithm)
.saturating_mul(build_accounts as u64);
.saturating_mul(old_accounts_count_logarithm)
.saturating_mul(build_accounts as u64)
.saturating_div(delimiter);
let build_in_msg = in_msgs_len
.saturating_mul(in_msgs_len.checked_ilog2().unwrap_or_default() as u64)
.saturating_mul(build_in_msg as u64);
Expand All @@ -677,9 +691,9 @@ impl Phase<FinalizeState> {
let merkle_calc = std::cmp::max(
state_update_min as u64,
accounts_count
.saturating_mul(accounts_count_logarithm)
.saturating_mul(state_update_accounts as u64)
.saturating_add(out_msgs_len.saturating_mul(state_update_msg as u64)),
.saturating_mul(old_accounts_count_logarithm)
.saturating_div(delimiter),
);

let serialize = std::cmp::max(
Expand Down Expand Up @@ -948,7 +962,7 @@ impl Phase<FinalizeState> {
shard_accounts.set_any(
&updated_account.account_addr,
&DepthBalanceInfo {
split_depth: 0, // NOTE: will need to set when we implement accounts split/merge logic
count: 1,
balance: account.balance.clone(),
},
&updated_account.shard_account,
Expand Down

0 comments on commit a31e4de

Please sign in to comment.