use NullifierNonce::evolve
This commit is contained in:
parent
ca42d3ed4f
commit
ca2c141d91
|
@ -2,11 +2,10 @@
|
||||||
///
|
///
|
||||||
/// Our goal: prove the zone authorized spending of funds
|
/// Our goal: prove the zone authorized spending of funds
|
||||||
use cl::merkle;
|
use cl::merkle;
|
||||||
use cl::nullifier::{Nullifier, NullifierNonce, NullifierSecret};
|
use cl::nullifier::{Nullifier, NullifierSecret};
|
||||||
use goas_proof_statements::zone_funds::SpendFundsPrivate;
|
use goas_proof_statements::zone_funds::SpendFundsPrivate;
|
||||||
use proof_statements::death_constraint::DeathConstraintPublic;
|
use proof_statements::death_constraint::DeathConstraintPublic;
|
||||||
use risc0_zkvm::guest::env;
|
use risc0_zkvm::guest::env;
|
||||||
use sha2::{Digest, Sha256};
|
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let SpendFundsPrivate {
|
let SpendFundsPrivate {
|
||||||
|
@ -41,10 +40,10 @@ fn main() {
|
||||||
let spend_event_leaf = merkle::leaf(&spend_event.to_bytes());
|
let spend_event_leaf = merkle::leaf(&spend_event.to_bytes());
|
||||||
let event_root = merkle::path_root(spend_event_leaf, &spend_event_state_path);
|
let event_root = merkle::path_root(spend_event_leaf, &spend_event_state_path);
|
||||||
|
|
||||||
let io_root = merkle::node(event_root, txs_root);
|
assert_eq!(
|
||||||
let state_root = merkle::node(zone_id, balances_root);
|
merkle::root([event_root, txs_root, zone_id, balances_root]),
|
||||||
let root = merkle::node(io_root, state_root);
|
zone_note.output.note.state
|
||||||
assert_eq!(root, zone_note.output.note.state);
|
);
|
||||||
|
|
||||||
assert_eq!(ptx_root, out_zone_funds.ptx_root());
|
assert_eq!(ptx_root, out_zone_funds.ptx_root());
|
||||||
|
|
||||||
|
@ -76,7 +75,10 @@ fn main() {
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
out_zone_funds.output.nonce,
|
out_zone_funds.output.nonce,
|
||||||
NullifierNonce::from_bytes(Sha256::digest(&out_zone_funds.output.nonce.as_bytes()).into())
|
in_zone_funds
|
||||||
|
.input
|
||||||
|
.nonce
|
||||||
|
.evolve(&NullifierSecret::from_bytes([0; 16]))
|
||||||
);
|
);
|
||||||
// the state is propagated
|
// the state is propagated
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
use cl::{
|
use cl::{
|
||||||
input::InputWitness,
|
input::InputWitness,
|
||||||
merkle,
|
merkle,
|
||||||
nullifier::{Nullifier, NullifierNonce, NullifierSecret},
|
nullifier::{Nullifier, NullifierSecret},
|
||||||
partial_tx::{MAX_INPUTS, MAX_OUTPUTS},
|
partial_tx::{MAX_INPUTS, MAX_OUTPUTS},
|
||||||
PtxRoot,
|
PtxRoot,
|
||||||
};
|
};
|
||||||
|
@ -13,7 +13,6 @@ use proof_statements::{
|
||||||
ptx::{PartialTxInputPrivate, PartialTxOutputPrivate},
|
ptx::{PartialTxInputPrivate, PartialTxOutputPrivate},
|
||||||
};
|
};
|
||||||
use risc0_zkvm::guest::env;
|
use risc0_zkvm::guest::env;
|
||||||
use sha2::{Digest, Sha256};
|
|
||||||
|
|
||||||
fn withdraw(mut state: StateWitness, withdraw: Withdraw) -> StateWitness {
|
fn withdraw(mut state: StateWitness, withdraw: Withdraw) -> StateWitness {
|
||||||
state.included_txs.push(Input::Withdraw(withdraw));
|
state.included_txs.push(Input::Withdraw(withdraw));
|
||||||
|
@ -100,7 +99,9 @@ fn deposit(
|
||||||
// nonce is correctly evolved
|
// nonce is correctly evolved
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
zone_funds_out.nonce,
|
zone_funds_out.nonce,
|
||||||
NullifierNonce::from_bytes(Sha256::digest(&zone_funds_in.nonce.as_bytes()).into())
|
zone_funds_in
|
||||||
|
.nonce
|
||||||
|
.evolve(&NullifierSecret::from_bytes([0; 16]))
|
||||||
);
|
);
|
||||||
|
|
||||||
// 5) Check zone state notes are correctly created
|
// 5) Check zone state notes are correctly created
|
||||||
|
@ -115,7 +116,9 @@ fn deposit(
|
||||||
// nonce is correctly evolved
|
// nonce is correctly evolved
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
zone_note_out.nonce,
|
zone_note_out.nonce,
|
||||||
NullifierNonce::from_bytes(Sha256::digest(&zone_note_in.nonce.as_bytes()).into())
|
zone_note_in
|
||||||
|
.nonce
|
||||||
|
.evolve(&NullifierSecret::from_bytes([0; 16]))
|
||||||
);
|
);
|
||||||
let nullifier = Nullifier::new(zone_note_in.nf_sk, zone_note_in.nonce);
|
let nullifier = Nullifier::new(zone_note_in.nf_sk, zone_note_in.nonce);
|
||||||
assert_eq!(nullifier, pub_inputs.nf);
|
assert_eq!(nullifier, pub_inputs.nf);
|
||||||
|
@ -166,7 +169,7 @@ fn validate_zone_output(
|
||||||
// the nonce is correctly evolved
|
// the nonce is correctly evolved
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
output.nonce,
|
output.nonce,
|
||||||
NullifierNonce::from_bytes(Sha256::digest(&input.nonce.as_bytes()).into())
|
input.nonce.evolve(&NullifierSecret::from_bytes([0; 16]))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue