From 9f66471a11a384d325d520e0f24a59ed8d74235d Mon Sep 17 00:00:00 2001 From: Karim Date: Tue, 20 Sep 2022 00:15:09 +0100 Subject: [PATCH] Eth2OnNearClient: optimizations and improvements (#804) * Eth2 client: optimize error handling. * Add additional validation checks. * Fix tests. * Update build files. Co-authored-by: Kirill --- contracts/near/eth2-client/src/lib.rs | 135 ++++++++++-------- .../near/eth2-client/src/tests/unit_tests.rs | 3 + contracts/near/res/eth2_client.wasm | Bin 238440 -> 236874 bytes 3 files changed, 76 insertions(+), 62 deletions(-) diff --git a/contracts/near/eth2-client/src/lib.rs b/contracts/near/eth2-client/src/lib.rs index cc2fa5e4a..a01fa700b 100644 --- a/contracts/near/eth2-client/src/lib.rs +++ b/contracts/near/eth2-client/src/lib.rs @@ -10,7 +10,7 @@ use eth2_utility::types::*; use eth_types::eth2::*; use eth_types::{BlockHeader, H256}; use near_sdk::collections::{LookupMap, UnorderedMap}; -use near_sdk::{assert_self, env, near_bindgen, AccountId, PanicOnDefault}; +use near_sdk::{assert_self, env, near_bindgen, require, AccountId, PanicOnDefault}; use near_sdk_inner::collections::LazyOption; use near_sdk_inner::{Balance, BorshStorageKey, Promise}; use tree_hash::TreeHash; @@ -82,21 +82,21 @@ impl Eth2Client { #[cfg(feature = "mainnet")] { - assert!( + require!( args.validate_updates, "The updates validation can't be disabled for mainnet" ); - assert!( + require!( (cfg!(feature = "bls") && args.verify_bls_signatures) || args.trusted_signer.is_some(), "The client can't be executed in the trustless mode without BLS sigs verification on Mainnet" ); } - assert_eq!( - args.finalized_execution_header.calculate_hash(), - args.finalized_beacon_header.execution_block_hash, + require!( + args.finalized_execution_header.calculate_hash() + == args.finalized_beacon_header.execution_block_hash, "Invalid execution block" ); @@ -194,15 +194,14 @@ impl Eth2Client { #[payable] pub fn register_submitter(&mut self) { let account_id = env::predecessor_account_id(); - assert!( + require!( !self.submitters.contains_key(&account_id), "The account is already registered" ); let amount = env::attached_deposit(); - assert!( + require!( amount >= self.min_storage_balance_for_submitter, - "{}", format!( "The attached deposit {} is less than the minimum required storage balance {}", amount, self.min_storage_balance_for_submitter @@ -218,7 +217,6 @@ impl Eth2Client { } } - #[payable] pub fn unregister_submitter(&mut self) -> Promise { let account_id = env::predecessor_account_id(); if let Some(num_of_submitted_blocks) = self.submitters.remove(&account_id) { @@ -261,15 +259,16 @@ impl Eth2Client { #[result_serializer(borsh)] pub fn submit_execution_header(&mut self, #[serializer(borsh)] block_header: BlockHeader) { - #[cfg(feature = "logs")] - env::log_str(format!("Submitted header number {}", block_header.number).as_str()); if self.finalized_beacon_header.execution_block_hash != block_header.parent_hash { self.unfinalized_headers .get(&block_header.parent_hash) .unwrap_or_else(|| { - panic!( - "Header has unknown parent {:?}. Parent should be submitted first.", - block_header.parent_hash + env::panic_str( + format!( + "Header has unknown parent {:?}. Parent should be submitted first.", + block_header.parent_hash + ) + .as_str(), ) }); } @@ -278,7 +277,13 @@ impl Eth2Client { self.update_submitter(&submitter, 1); let block_hash = block_header.calculate_hash(); #[cfg(feature = "logs")] - env::log_str(format!("Submitted header hash {:?}", block_hash).as_str()); + env::log_str( + format!( + "Submitted header number {}, hash {:?}", + block_header.number, block_hash + ) + .as_str(), + ); let block_info = ExecutionHeaderInfo { parent_hash: block_header.parent_hash, @@ -286,10 +291,9 @@ impl Eth2Client { submitter, }; let insert_result = self.unfinalized_headers.insert(&block_hash, &block_info); - assert!( + require!( insert_result.is_none(), - "The block {} already submitted!", - &block_hash + format!("The block {} already submitted!", &block_hash) ); } @@ -317,15 +321,20 @@ impl Eth2Client { BitVec::::from_slice(&update.sync_aggregate.sync_committee_bits.0); let sync_committee_bits_sum: u64 = sync_committee_bits.count_ones().try_into().unwrap(); - assert!( + require!( sync_committee_bits_sum >= MIN_SYNC_COMMITTEE_PARTICIPANTS, - "Invalid sync committee bits sum: {}", - sync_committee_bits_sum + format!( + "Invalid sync committee bits sum: {}", + sync_committee_bits_sum + ) ); - assert!( + + require!( sync_committee_bits_sum * 3 >= (sync_committee_bits.len() * 2).try_into().unwrap(), - "Sync committee bits sum is less than 2/3 threshold, bits sum: {}", - sync_committee_bits_sum + format!( + "Sync committee bits sum is less than 2/3 threshold, bits sum: {}", + sync_committee_bits_sum + ) ); #[cfg(feature = "bls")] @@ -341,24 +350,37 @@ impl Eth2Client { // The active header will always be the finalized header because we don't accept updates without the finality update. let active_header = &update.finality_update.header_update.beacon_header; - assert!( + require!( active_header.slot > self.finalized_beacon_header.header.slot, "The active header slot number should be higher than the finalized slot" ); + require!( + update.attested_beacon_header.slot + >= update.finality_update.header_update.beacon_header.slot, + "The attested header slot should be equal to or higher than the finalized header slot" + ); + + require!( + update.signature_slot > update.attested_beacon_header.slot, + "The signature slot should be higher than the attested header slot" + ); + let update_period = compute_sync_committee_period(active_header.slot); - assert!( + require!( update_period == finalized_period || update_period == finalized_period + 1, - "The acceptable update periods are '{}' and '{}' but got {}", - finalized_period, - finalized_period + 1, - update_period + format!( + "The acceptable update periods are '{}' and '{}' but got {}", + finalized_period, + finalized_period + 1, + update_period + ) ); // Verify that the `finality_branch`, confirms `finalized_header` // to match the finalized checkpoint root saved in the state of `attested_header`. let branch = convert_branch(&update.finality_update.finality_branch); - assert!( + require!( merkle_proof::verify_merkle_proof( update .finality_update @@ -372,7 +394,7 @@ impl Eth2Client { ), "Invalid finality proof" ); - assert!( + require!( validate_beacon_block_header_update(&update.finality_update.header_update), "Invalid execution block hash proof" ); @@ -385,7 +407,7 @@ impl Eth2Client { .as_ref() .unwrap_or_else(|| env::panic_str("The sync committee update is missed")); let branch = convert_branch(&sync_committee_update.next_sync_committee_branch); - assert!( + require!( merkle_proof::verify_merkle_proof( sync_committee_update.next_sync_committee.tree_hash_root(), &branch, @@ -418,7 +440,7 @@ impl Eth2Client { get_participant_pubkeys(&sync_committee.pubkeys.0, &sync_committee_bits); let fork_version = config .compute_fork_version_by_slot(update.signature_slot) - .expect("Unsupported fork"); + .unwrap_or_else(|| env::panic_str("Unsupported fork")); let domain = compute_domain( DOMAIN_SYNC_COMMITTEE, fork_version, @@ -436,7 +458,7 @@ impl Eth2Client { .into_iter() .map(|x| bls::PublicKey::deserialize(&x.0).unwrap()) .collect(); - assert!( + require!( aggregate_signature .fast_aggregate_verify(signing_root.0, &pubkeys.iter().collect::>()), "Failed to verify the bls signature" @@ -449,8 +471,7 @@ impl Eth2Client { let finalized_execution_header_info = self .unfinalized_headers .get(&finalized_header.execution_block_hash) - .expect("Unknown execution block hash"); - + .unwrap_or_else(|| env::panic_str("Unknown execution block hash")); #[cfg(feature = "logs")] env::log_str( format!( @@ -483,9 +504,12 @@ impl Eth2Client { .unfinalized_headers .get(&cursor_header.parent_hash) .unwrap_or_else(|| { - panic!( - "Header has unknown parent {:?}. Parent should be submitted first.", - cursor_header.parent_hash + env::panic_str( + format!( + "Header has unknown parent {:?}. Parent should be submitted first.", + cursor_header.parent_hash + ) + .as_str(), ) }); } @@ -507,7 +531,7 @@ impl Eth2Client { ); if finalized_execution_header_info.block_number > self.hashes_gc_threshold { - self.gc_headers( + self.gc_finalized_execution_blocks( finalized_execution_header_info.block_number - self.hashes_gc_threshold, ); } @@ -532,11 +556,9 @@ impl Eth2Client { } /// Remove information about the headers that are at least as old as the given block number. - fn gc_headers(&mut self, mut header_number: u64) { + fn gc_finalized_execution_blocks(&mut self, mut header_number: u64) { loop { - if self.finalized_execution_blocks.contains_key(&header_number) { - self.finalized_execution_blocks.remove(&header_number); - + if self.finalized_execution_blocks.remove(&header_number).is_some() { if header_number == 0 { break; } else { @@ -553,25 +575,15 @@ impl Eth2Client { .submitters .get(submitter) .unwrap_or_else(|| { - env::panic_str( - format!( - "The account {} can't submit blocks because it is not registered", - &submitter - ) - .as_str(), - ) + env::panic_str("The account can't submit blocks because it is not registered") }) .into(); num_of_submitted_headers += value; - assert!( + require!( num_of_submitted_headers <= self.max_submitted_blocks_by_account.into(), - "{}", - format!( - "The submitter {} exhausted the limit of blocks ({})", - &submitter, self.max_submitted_blocks_by_account - ), + "The submitter exhausted the limit of blocks" ); self.submitters @@ -582,9 +594,8 @@ impl Eth2Client { self.check_not_paused(PAUSE_SUBMIT_UPDATE); if let Some(trusted_signer) = &self.trusted_signer { - assert_eq!( - &env::predecessor_account_id(), - trusted_signer, + require!( + &env::predecessor_account_id() == trusted_signer, "Eth-client is deployed as trust mode, only trusted_signer can update the client" ); } diff --git a/contracts/near/eth2-client/src/tests/unit_tests.rs b/contracts/near/eth2-client/src/tests/unit_tests.rs index cbb864909..8e1ad1a72 100644 --- a/contracts/near/eth2-client/src/tests/unit_tests.rs +++ b/contracts/near/eth2-client/src/tests/unit_tests.rs @@ -358,6 +358,9 @@ mod tests { let mut update = updates[1].clone(); update.finality_update.header_update.beacon_header.slot = update.signature_slot + EPOCHS_PER_SYNC_COMMITTEE_PERIOD * SLOTS_PER_EPOCH * 10; + update.attested_beacon_header.slot = + update.finality_update.header_update.beacon_header.slot; + update.signature_slot = update.attested_beacon_header.slot + 1; contract.submit_beacon_chain_light_client_update(update); } diff --git a/contracts/near/res/eth2_client.wasm b/contracts/near/res/eth2_client.wasm index 44146f1a6351e00fc1388ca83d9aee0d95b42533..1d1b1fae20c914fb66df44d4eb8cd4c531d78354 100755 GIT binary patch delta 60476 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

g;<>%#D_kc_K?SH%`g-{cWUc2)e&&P8s~iRR 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ⅈp>hg$m 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 delta 61351 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