cl: InputWitness does not need utxo_balance_blinding
This commit is contained in:
parent
247f3f042b
commit
c5bcf3ebe7
|
@ -21,7 +21,6 @@ pub struct Input {
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
pub struct InputWitness {
|
pub struct InputWitness {
|
||||||
pub note: NoteWitness,
|
pub note: NoteWitness,
|
||||||
pub utxo_balance_blinding: BalanceWitness,
|
|
||||||
pub balance_blinding: BalanceWitness,
|
pub balance_blinding: BalanceWitness,
|
||||||
pub nf_sk: NullifierSecret,
|
pub nf_sk: NullifierSecret,
|
||||||
pub nonce: NullifierNonce,
|
pub nonce: NullifierNonce,
|
||||||
|
@ -36,7 +35,6 @@ impl InputWitness {
|
||||||
assert_eq!(nf_sk.commit(), output.nf_pk);
|
assert_eq!(nf_sk.commit(), output.nf_pk);
|
||||||
Self {
|
Self {
|
||||||
note: output.note,
|
note: output.note,
|
||||||
utxo_balance_blinding: output.balance_blinding,
|
|
||||||
balance_blinding: BalanceWitness::random(&mut rng),
|
balance_blinding: BalanceWitness::random(&mut rng),
|
||||||
nf_sk,
|
nf_sk,
|
||||||
nonce: output.nonce,
|
nonce: output.nonce,
|
||||||
|
@ -55,13 +53,8 @@ impl InputWitness {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn to_output(&self) -> crate::OutputWitness {
|
pub fn note_commitment(&self) -> crate::NoteCommitment {
|
||||||
crate::OutputWitness {
|
self.note.commit(self.nf_sk.commit(), self.nonce)
|
||||||
note: self.note,
|
|
||||||
balance_blinding: self.utxo_balance_blinding,
|
|
||||||
nf_pk: self.nf_sk.commit(),
|
|
||||||
nonce: self.nonce,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ pub struct ProvedInput {
|
||||||
|
|
||||||
impl ProvedInput {
|
impl ProvedInput {
|
||||||
pub fn prove(input: &cl::InputWitness, note_commitments: &[cl::NoteCommitment]) -> Self {
|
pub fn prove(input: &cl::InputWitness, note_commitments: &[cl::NoteCommitment]) -> Self {
|
||||||
let output_cm = input.to_output().commit_note();
|
let output_cm = input.note_commitment();
|
||||||
|
|
||||||
let cm_leaves = note_commitment_leaves(note_commitments);
|
let cm_leaves = note_commitment_leaves(note_commitments);
|
||||||
let cm_idx = note_commitments
|
let cm_idx = note_commitments
|
||||||
|
@ -95,13 +95,12 @@ mod test {
|
||||||
|
|
||||||
let input = cl::InputWitness {
|
let input = cl::InputWitness {
|
||||||
note: cl::NoteWitness::basic(32, "NMO"),
|
note: cl::NoteWitness::basic(32, "NMO"),
|
||||||
utxo_balance_blinding: cl::BalanceWitness::random(&mut rng),
|
|
||||||
balance_blinding: cl::BalanceWitness::random(&mut rng),
|
balance_blinding: cl::BalanceWitness::random(&mut rng),
|
||||||
nf_sk: cl::NullifierSecret::random(&mut rng),
|
nf_sk: cl::NullifierSecret::random(&mut rng),
|
||||||
nonce: cl::NullifierNonce::random(&mut rng),
|
nonce: cl::NullifierNonce::random(&mut rng),
|
||||||
};
|
};
|
||||||
|
|
||||||
let notes = vec![input.to_output().commit_note()];
|
let notes = vec![input.note_commitment()];
|
||||||
|
|
||||||
let mut proved_input = ProvedInput::prove(&input, ¬es);
|
let mut proved_input = ProvedInput::prove(&input, ¬es);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ impl PartialTxInputPrivate {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn cm_root(&self) -> [u8; 32] {
|
pub fn cm_root(&self) -> [u8; 32] {
|
||||||
let leaf = merkle::leaf(self.input.to_output().commit_note().as_bytes());
|
let leaf = merkle::leaf(self.input.note_commitment().as_bytes());
|
||||||
merkle::path_root(leaf, &self.cm_path)
|
merkle::path_root(leaf, &self.cm_path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ use risc0_zkvm::guest::env;
|
||||||
fn main() {
|
fn main() {
|
||||||
let secret: InputPrivate = env::read();
|
let secret: InputPrivate = env::read();
|
||||||
|
|
||||||
let out_cm = secret.input.to_output().commit_note();
|
let out_cm = secret.input.note_commitment();
|
||||||
let cm_leaf = merkle::leaf(out_cm.as_bytes());
|
let cm_leaf = merkle::leaf(out_cm.as_bytes());
|
||||||
let cm_root = merkle::path_root(cm_leaf, &secret.cm_path);
|
let cm_root = merkle::path_root(cm_leaf, &secret.cm_path);
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ fn main() {
|
||||||
spend_event_state_path,
|
spend_event_state_path,
|
||||||
} = env::read();
|
} = env::read();
|
||||||
|
|
||||||
let cm_root = in_zone_funds.cm_root();
|
|
||||||
let ptx_root = in_zone_funds.ptx_root();
|
let ptx_root = in_zone_funds.ptx_root();
|
||||||
let nf = Nullifier::new(in_zone_funds.input.nf_sk, in_zone_funds.input.nonce);
|
let nf = Nullifier::new(in_zone_funds.input.nf_sk, in_zone_funds.input.nonce);
|
||||||
// check the zone funds note is the one in the spend event
|
// check the zone funds note is the one in the spend event
|
||||||
|
@ -78,7 +77,6 @@ fn main() {
|
||||||
assert_eq!(spent_note.output.nf_pk, spend_event.to);
|
assert_eq!(spent_note.output.nf_pk, spend_event.to);
|
||||||
|
|
||||||
env::commit(&DeathConstraintPublic {
|
env::commit(&DeathConstraintPublic {
|
||||||
cm_root,
|
|
||||||
ptx_root,
|
ptx_root,
|
||||||
nf,
|
nf,
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue