Skip to content

Commit

Permalink
Merge pull request #94 from datachainlab/lc-message
Browse files Browse the repository at this point in the history
Refactor commitments

Signed-off-by: Jun Kimura <[email protected]>
  • Loading branch information
bluele authored Dec 14, 2023
2 parents 6eeedc7 + 1e0c373 commit b30213a
Show file tree
Hide file tree
Showing 29 changed files with 976 additions and 860 deletions.
4 changes: 2 additions & 2 deletions enclave-modules/ecall-handler/src/light_client/init_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ pub fn init_client<R: LightClientResolver, S: KVStore, K: Signer>(
ctx.increase_client_counter();

let proof = if res.prove {
prove_commitment(ek, input.signer, res.commitment)?
prove_commitment(ek, input.signer, res.message)?
} else {
CommitmentProof::new_with_no_signature(res.commitment.to_commitment_bytes())
CommitmentProof::new_with_no_signature(res.message.to_bytes())
};
Ok(LightClientResult::InitClient(InitClientResult {
client_id,
Expand Down
20 changes: 12 additions & 8 deletions enclave-modules/ecall-handler/src/light_client/update_client.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
use super::registry::get_light_client_by_client_id;
use crate::light_client::Error;
use crate::prelude::*;
use context::Context;
use crypto::Signer;
use ecall_commands::{LightClientResult, UpdateClientInput, UpdateClientResult};
use light_client::commitments::{
prove_commitment, Commitment, CommitmentProof, UpdateClientCommitment,
prove_commitment, CommitmentProof, EmittedState, Message, UpdateClientMessage,
};
use light_client::{ClientKeeper, LightClientResolver};
use store::KVStore;
Expand All @@ -19,21 +20,24 @@ pub fn update_client<R: LightClientResolver, S: KVStore, K: Signer>(
let ek = ctx.get_enclave_key();
let res = lc.update_client(ctx, input.client_id.clone(), input.any_header.into())?;

let commitment: Commitment = {
let mut commitment = UpdateClientCommitment::try_from(res.commitment)?;
if input.include_state && commitment.new_state.is_none() {
commitment.new_state = Some(res.new_any_client_state.clone());
let message: Message = {
let mut msg = UpdateClientMessage::try_from(res.message)?;
if input.include_state && !msg.emitted_states.is_empty() {
msg.emitted_states = vec![EmittedState(
res.height,
res.new_any_consensus_state.clone(),
)];
}
commitment.into()
msg.into()
};

ctx.store_any_client_state(input.client_id.clone(), res.new_any_client_state)?;
ctx.store_any_consensus_state(input.client_id, res.height, res.new_any_consensus_state)?;

let proof = if res.prove {
prove_commitment(ek, input.signer, commitment)?
prove_commitment(ek, input.signer, message)?
} else {
CommitmentProof::new_with_no_signature(commitment.to_commitment_bytes())
CommitmentProof::new_with_no_signature(message.to_bytes())
};
Ok(LightClientResult::UpdateClient(UpdateClientResult(proof)))
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ pub fn verify_membership<R: LightClientResolver, S: KVStore, K: Signer>(
)?;

Ok(LightClientResult::VerifyMembership(VerifyMembershipResult(
prove_commitment(ek, input.signer, res.state_commitment)?,
prove_commitment(ek, input.signer, res.message)?,
)))
}

Expand All @@ -49,6 +49,6 @@ pub fn verify_non_membership<R: LightClientResolver, S: KVStore, K: Signer>(
)?;

Ok(LightClientResult::VerifyNonMembership(
VerifyNonMembershipResult(prove_commitment(ek, input.signer, res.state_commitment)?),
VerifyNonMembershipResult(prove_commitment(ek, input.signer, res.message)?),
))
}
Loading

0 comments on commit b30213a

Please sign in to comment.