Skip to content

Commit

Permalink
Use witness trace computed by the detector instead of verifying again (
Browse files Browse the repository at this point in the history
  • Loading branch information
romac authored Apr 26, 2023
1 parent 28df2c0 commit 032a894
Showing 1 changed file with 16 additions and 11 deletions.
27 changes: 16 additions & 11 deletions crates/relayer/src/light_client/tendermint.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,13 +194,19 @@ impl super::LightClient<CosmosSdkChain> for LightClient {
Err(e) => error!("failed to report evidence to RPC witness node: {}", e),
}

// We redo verification one more time to get the trace of supporting headers
let verified = self.header_and_minimal_set(
update_header.trusted_height,
update_header.height(),
&AnyClientState::Tendermint(client_state.clone()),
now,
)?;
let target_block = self.fetch(update_header.height())?;
let trusted_height = TMHeight::from(update_header.trusted_height);
let trace = evidence
.witness_trace
.into_vec()
.into_iter()
.filter(|lb| {
lb.height() != target_block.height() && lb.height() != trusted_height
})
.collect();

let (target_header, supporting_headers) =
self.adjust_headers(update_header.trusted_height, target_block, trace)?;

let evidence = MisbehaviourEvidence {
misbehaviour: AnyMisbehaviour::Tendermint(TmMisbehaviour {
Expand All @@ -209,12 +215,11 @@ impl super::LightClient<CosmosSdkChain> for LightClient {
header2: TmHeader {
signed_header: challenging_block.signed_header,
validator_set: challenging_block.validators,
trusted_height: verified.target.trusted_height,
trusted_validator_set: verified.target.trusted_validator_set,
trusted_height: target_header.trusted_height,
trusted_validator_set: target_header.trusted_validator_set,
},
}),
supporting_headers: verified
.supporting
supporting_headers: supporting_headers
.into_iter()
.map(AnyHeader::Tendermint)
.collect(),
Expand Down

0 comments on commit 032a894

Please sign in to comment.