From 35de1f2769fbd9df97153512712394dfe449dfe1 Mon Sep 17 00:00:00 2001 From: Adrian Catangiu Date: Wed, 13 Sep 2023 10:33:12 +0300 Subject: [PATCH] pallet-beefy-mmr: better logging on BEEFY key to ETH address conversion (#1520) # Description Each time the validator set changes, BEEFY validator keys are converted to ETH addresses and merkelised into a `keyset_commitment` to be used by light clients. This commit downgrades `error` to `debug` when individual conversions from BEEFY keys to ETH addresses fail, and adds cumulative check that reports total number of failed conversions, if any, on `error` log-level. Fixes https://github.com/paritytech/polkadot-sdk/issues/1305 Signed-off-by: Adrian Catangiu --- substrate/frame/beefy-mmr/src/lib.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/substrate/frame/beefy-mmr/src/lib.rs b/substrate/frame/beefy-mmr/src/lib.rs index b12eb95f65..a0bf7cdcf8 100644 --- a/substrate/frame/beefy-mmr/src/lib.rs +++ b/substrate/frame/beefy-mmr/src/lib.rs @@ -79,7 +79,7 @@ impl Convert> for BeefyEc .to_eth_address() .map(|v| v.to_vec()) .map_err(|_| { - log::error!(target: "runtime::beefy", "Failed to convert BEEFY PublicKey to ETH address!"); + log::debug!(target: "runtime::beefy", "Failed to convert BEEFY PublicKey to ETH address!"); }) .unwrap_or_default() } @@ -199,7 +199,20 @@ impl Pallet { .cloned() .map(T::BeefyAuthorityToMerkleLeaf::convert) .collect::>(); + let default_eth_addr = [0u8; 20]; let len = beefy_addresses.len() as u32; + let uninitialized_addresses = beefy_addresses + .iter() + .filter(|&addr| addr.as_slice().eq(&default_eth_addr)) + .count(); + if uninitialized_addresses > 0 { + log::error!( + target: "runtime::beefy", + "Failed to convert {} out of {} BEEFY PublicKeys to ETH addresses!", + uninitialized_addresses, + len, + ); + } let keyset_commitment = binary_merkle_tree::merkle_root::< ::Hashing, _,