From 3a888d6ef305c3f82bdaeb57af248d3cc916edaa Mon Sep 17 00:00:00 2001 From: Pawan Dhananjay Date: Wed, 22 Jul 2020 10:24:37 +0000 Subject: [PATCH] Fix early return from DepositLog parsing (#1382) ## Issue Addressed N/A ## Proposed Changes When parsing deposit logs, we were returning an error in case `PublicKeyBytes` or `SignatureBytes` didn't convert to valid bls `PublicKey` or `Signature` types. This would stall our import of deposit logs. Fixes this by returning `signature_is_valid` as `false` in `DepositLog` if the bytes are invalid `PublicKey/Signature` types. Tested this fix on the Onyx deposit contract where the bug was observed and it works correctly as expected. --- beacon_node/eth1/src/deposit_log.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/beacon_node/eth1/src/deposit_log.rs b/beacon_node/eth1/src/deposit_log.rs index 2173ab778a..44a437e2e3 100644 --- a/beacon_node/eth1/src/deposit_log.rs +++ b/beacon_node/eth1/src/deposit_log.rs @@ -63,9 +63,8 @@ impl DepositLog { .map_err(|e| format!("Invalid signature ssz: {:?}", e))?, }; - let deposit_signature_message = deposit_pubkey_signature_message(&deposit_data, spec) - .ok_or_else(|| "Unable to prepare deposit signature verification".to_string())?; - let signature_is_valid = deposit_signature_set(&deposit_signature_message).is_valid(); + let signature_is_valid = deposit_pubkey_signature_message(&deposit_data, spec) + .map_or(false, |msg| deposit_signature_set(&msg).is_valid()); Ok(DepositLog { deposit_data,