Skip to content

Commit

Permalink
fix: Randomness in AddressNote (#2965)
Browse files Browse the repository at this point in the history
+ Fixes #2921
+ minor ValueNote improvement
  • Loading branch information
benesjan authored Oct 23, 2023
1 parent 3a8f54a commit 4dc49a9
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 17 deletions.
37 changes: 25 additions & 12 deletions yarn-project/aztec-nr/address-note/src/address_note.nr
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,62 @@ use dep::aztec::{
note::{
note_header::NoteHeader,
note_interface::NoteInterface,
utils::compute_siloed_note_hash,
utils::compute_note_hash_for_read_or_nullify,
},
oracle::{
rand::rand,
get_secret_key::get_secret_key,
get_public_key::get_public_key,
},
hash::pedersen_hash,
context::PrivateContext,
};

global ADDRESS_NOTE_LEN: Field = 2;
global ADDRESS_NOTE_LEN: Field = 3;

// Stores an address
struct AddressNote {
address: Field,
owner: Field,
randomness: Field,
header: NoteHeader,
}

impl AddressNote {
pub fn new(address: Field, owner: Field) -> Self {
let randomness = rand();
AddressNote {
address,
owner,
randomness,
header: NoteHeader::empty(),
}
}

pub fn serialize(self) -> [Field; ADDRESS_NOTE_LEN]{
[self.address, self.owner]
[self.address, self.owner, self.randomness]
}

pub fn deserialize(preimage: [Field; ADDRESS_NOTE_LEN]) -> Self {
AddressNote {
address: preimage[0],
owner: preimage[1],
randomness: preimage[2],
header: NoteHeader::empty(),
}
}

pub fn compute_note_hash(self) -> Field {
// TODO(#1205) Should use a non-zero generator index.
pedersen_hash(self.serialize(), 0)
}

pub fn compute_nullifier(self) -> Field {
let siloed_note_hash = compute_siloed_note_hash(AddressNoteMethods, self);
let note_hash_for_nullify = compute_note_hash_for_read_or_nullify(AddressNoteMethods, self);
let secret = get_secret_key(self.owner);
// TODO(#1205) Should use a non-zero generator index.
pedersen_hash([
siloed_note_hash,
note_hash_for_nullify,
secret.low,
secret.high,
],0)
Expand All @@ -68,20 +86,15 @@ impl AddressNote {
}

fn deserialize(preimage: [Field; ADDRESS_NOTE_LEN]) -> AddressNote {
AddressNote {
address: preimage[0],
owner: preimage[1],
header: NoteHeader::empty(),
}
AddressNote::deserialize(preimage)
}

fn serialize(note: AddressNote) -> [Field; ADDRESS_NOTE_LEN]{
note.serialize()
}

fn compute_note_hash(note: AddressNote) -> Field {
// TODO(#1205) Should use a non-zero generator index.
pedersen_hash(note.serialize(),0)
note.compute_note_hash()
}

fn compute_nullifier(note: AddressNote) -> Field {
Expand Down
6 changes: 1 addition & 5 deletions yarn-project/aztec-nr/value-note/src/value_note.nr
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,7 @@ impl ValueNote {

pub fn compute_note_hash(self) -> Field {
// TODO(#1205) Should use a non-zero generator index.
pedersen_hash([
self.value,
self.owner,
self.randomness,
],0)
pedersen_hash(self.serialize(),0)
}

// docs:start:nullifier
Expand Down

0 comments on commit 4dc49a9

Please sign in to comment.