Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Adding autogenerated variants for the reset circuit #6508

Merged
merged 21 commits into from
May 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion noir-projects/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ FROM aztecprotocol/noir as noir
FROM aztecprotocol/avm-transpiler as transpiler

FROM ubuntu:lunar AS builder
RUN apt-get update && apt-get install -y parallel
RUN apt-get update && apt-get install -y parallel nodejs npm
RUN npm install --global yarn
# Copy in nargo
COPY --from=noir /usr/src/noir/noir-repo/target/release/nargo /usr/src/noir/noir-repo/target/release/nargo
ENV PATH="/usr/src/noir/noir-repo/target/release:${PATH}"
Expand Down
2 changes: 2 additions & 0 deletions noir-projects/noir-protocol-circuits/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
Prover.toml
Verifier.toml
target
crates/autogenerated
Nargo.toml
3 changes: 3 additions & 0 deletions noir-projects/noir-protocol-circuits/bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ if [ -n "$CMD" ]; then
fi
fi

yarn
node ./index.js

echo "Compiling protocol circuits..."
NARGO=${NARGO:-../../noir/noir-repo/target/release/nargo}
$NARGO compile --silence-warnings
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::private_kernel_circuit_public_inputs_composer::PrivateKernelCircuitPublicInputsComposer;
use dep::reset_kernel_lib::{
NoteHashReadRequestHints, NullifierReadRequestHints, PrivateValidationRequestProcessor,
verify_squashed_transient_note_hashes_and_nullifiers
verify_squashed_transient_note_hashes_and_nullifiers, reset::nullifier_key::NullifierKeyHint
};
use dep::types::{
abis::{
Expand All @@ -25,22 +25,22 @@ struct PrivateKernelResetOutputs {
note_encrypted_log_hashes: [NoteLogHash; MAX_NOTE_ENCRYPTED_LOGS_PER_TX],
}

struct PrivateKernelResetHints {
struct PrivateKernelResetHints<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS> {
transient_nullifier_indexes_for_note_hashes: [u64; MAX_NEW_NOTE_HASHES_PER_TX],
transient_note_hash_indexes_for_nullifiers: [u64; MAX_NEW_NULLIFIERS_PER_TX],
transient_note_hash_indexes_for_logs: [u64; MAX_NOTE_ENCRYPTED_LOGS_PER_TX],
note_hash_read_request_hints: NoteHashReadRequestHints,
nullifier_read_request_hints: NullifierReadRequestHints,
master_nullifier_secret_keys: [GrumpkinPrivateKey; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX],
note_hash_read_request_hints: NoteHashReadRequestHints<NH_RR_PENDING, NH_RR_SETTLED>,
nullifier_read_request_hints: NullifierReadRequestHints<NLL_RR_PENDING, NLL_RR_SETTLED>,
master_nullifier_secret_keys: [NullifierKeyHint; NLL_KEYS],
}

struct PrivateKernelResetCircuitPrivateInputs {
struct PrivateKernelResetCircuitPrivateInputs<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS> {
previous_kernel: PrivateKernelData,
outputs: PrivateKernelResetOutputs,
hints: PrivateKernelResetHints,
hints: PrivateKernelResetHints<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS>,
}

impl PrivateKernelResetCircuitPrivateInputs {
impl<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS> PrivateKernelResetCircuitPrivateInputs<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS> {
pub fn execute(self) -> PrivateKernelCircuitPublicInputs {
let mut previous_public_inputs = self.previous_kernel.public_inputs;

Expand Down Expand Up @@ -86,7 +86,8 @@ mod tests {
nullifier_read_request_hints_builder::NullifierReadRequestHintsBuilder,
squash_transient_data::{squash_transient_note_hashes, squash_transient_nullifiers, squash_transient_logs}
},
reset::read_request::{PendingReadHint, ReadRequestState, ReadRequestStatus}
reset::read_request::{PendingReadHint, ReadRequestState, ReadRequestStatus},
reset::nullifier_key::NullifierKeyHint
};
use dep::types::constants::{
MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NEW_NOTE_HASHES_PER_TX, MAX_NEW_NULLIFIERS_PER_TX,
Expand Down Expand Up @@ -178,7 +179,7 @@ mod tests {
transient_note_hash_indexes_for_logs: self.transient_note_hash_indexes_for_logs,
note_hash_read_request_hints: self.note_hash_read_request_hints_builder.to_hints(),
nullifier_read_request_hints: self.nullifier_read_request_hints_builder.to_hints(),
master_nullifier_secret_keys: [GrumpkinPrivateKey::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX]
master_nullifier_secret_keys: [NullifierKeyHint::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX]
};

let kernel = PrivateKernelResetCircuitPrivateInputs { previous_kernel: self.previous_kernel.to_private_kernel_data(), outputs, hints };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,6 @@ mod tests {
// TODO: Reduce the duplicated code/tests for PrivateKernelTailInputs and PrivateKernelTailToPublicInputs.
struct PrivateKernelTailInputsBuilder {
previous_kernel: FixtureBuilder,
transient_nullifier_indexes_for_note_hashes: [u64; MAX_NEW_NOTE_HASHES_PER_TX],
transient_note_hash_indexes_for_nullifiers: [u64; MAX_NEW_NULLIFIERS_PER_TX],
transient_note_hash_indexes_for_logs: [u64; MAX_NOTE_ENCRYPTED_LOGS_PER_TX],
note_hash_read_request_hints_builder: NoteHashReadRequestHintsBuilder,
nullifier_read_request_hints_builder: NullifierReadRequestHintsBuilder,
}

impl PrivateKernelTailInputsBuilder {
Expand All @@ -106,14 +101,7 @@ mod tests {

previous_kernel.append_new_nullifiers(1);

PrivateKernelTailInputsBuilder {
previous_kernel,
transient_nullifier_indexes_for_note_hashes: [MAX_NEW_NULLIFIERS_PER_TX; MAX_NEW_NOTE_HASHES_PER_TX],
transient_note_hash_indexes_for_nullifiers: [MAX_NEW_NOTE_HASHES_PER_TX; MAX_NEW_NULLIFIERS_PER_TX],
transient_note_hash_indexes_for_logs: [MAX_NEW_NOTE_HASHES_PER_TX; MAX_NOTE_ENCRYPTED_LOGS_PER_TX],
note_hash_read_request_hints_builder: NoteHashReadRequestHintsBuilder::new(MAX_NOTE_HASH_READ_REQUESTS_PER_TX),
nullifier_read_request_hints_builder: NullifierReadRequestHintsBuilder::new(MAX_NULLIFIER_READ_REQUESTS_PER_TX)
}
PrivateKernelTailInputsBuilder { previous_kernel }
}

// A helper function that uses the first nullifer in the previous kernel to compute the unique siloed
Expand Down Expand Up @@ -177,24 +165,6 @@ mod tests {
let sorted_unencrypted_log_hashes = sorted.sorted_array;
let sorted_unencrypted_log_hashes_indexes = sorted.sorted_index_hints;

let mut sorted_transient_nullifier_indexes_for_note_hashes = [MAX_NEW_NULLIFIERS_PER_TX; MAX_NEW_NOTE_HASHES_PER_TX];
for i in 0..self.transient_nullifier_indexes_for_note_hashes.len() {
let old_index = self.transient_nullifier_indexes_for_note_hashes[i];
if old_index != MAX_NEW_NULLIFIERS_PER_TX {
let new_note_hash_index = sorted_new_note_hashes_indexes[i];
sorted_transient_nullifier_indexes_for_note_hashes[new_note_hash_index] = sorted_new_nullifiers_indexes[old_index];
}
}

let mut sorted_transient_note_hash_indexes_for_nullifiers = [MAX_NEW_NOTE_HASHES_PER_TX; MAX_NEW_NULLIFIERS_PER_TX];
for i in 0..self.transient_note_hash_indexes_for_nullifiers.len() {
let old_index = self.transient_note_hash_indexes_for_nullifiers[i];
if old_index != MAX_NEW_NOTE_HASHES_PER_TX {
let new_nullifier_index = sorted_new_nullifiers_indexes[i];
sorted_transient_note_hash_indexes_for_nullifiers[new_nullifier_index] = sorted_new_note_hashes_indexes[old_index];
}
}

let hints = PrivateKernelTailHints {
sorted_new_note_hashes,
sorted_new_note_hashes_indexes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,11 +89,6 @@ mod tests {
// TODO: Reduce the duplicated code/tests for PrivateKernelTailToPublicInputs and PrivateKernelTailInputs.
struct PrivateKernelTailToPublicInputsBuilder {
previous_kernel: FixtureBuilder,
transient_nullifier_indexes_for_note_hashes: [u64; MAX_NEW_NOTE_HASHES_PER_TX],
transient_note_hash_indexes_for_nullifiers: [u64; MAX_NEW_NULLIFIERS_PER_TX],
transient_note_hash_indexes_for_logs: [u64; MAX_NOTE_ENCRYPTED_LOGS_PER_TX],
note_hash_read_request_hints_builder: NoteHashReadRequestHintsBuilder,
nullifier_read_request_hints_builder: NullifierReadRequestHintsBuilder,
}

impl PrivateKernelTailToPublicInputsBuilder {
Expand All @@ -103,14 +98,7 @@ mod tests {
previous_kernel.append_new_nullifiers(1);
previous_kernel.push_public_call_request(1, false);

PrivateKernelTailToPublicInputsBuilder {
previous_kernel,
transient_nullifier_indexes_for_note_hashes: [MAX_NEW_NULLIFIERS_PER_TX; MAX_NEW_NOTE_HASHES_PER_TX],
transient_note_hash_indexes_for_nullifiers: [MAX_NEW_NOTE_HASHES_PER_TX; MAX_NEW_NULLIFIERS_PER_TX],
transient_note_hash_indexes_for_logs: [MAX_NEW_NOTE_HASHES_PER_TX; MAX_NOTE_ENCRYPTED_LOGS_PER_TX],
note_hash_read_request_hints_builder: NoteHashReadRequestHintsBuilder::new(MAX_NOTE_HASH_READ_REQUESTS_PER_TX),
nullifier_read_request_hints_builder: NullifierReadRequestHintsBuilder::new(MAX_NULLIFIER_READ_REQUESTS_PER_TX)
}
PrivateKernelTailToPublicInputsBuilder { previous_kernel }
}

// A helper function that uses the first nullifer in the previous kernel to compute the unique siloed
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
use dep::private_kernel_lib::PrivateKernelResetCircuitPrivateInputs;
use dep::types::PrivateKernelCircuitPublicInputs;
use dep::types::{
PrivateKernelCircuitPublicInputs,
constants::{
MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX,
MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX
}
};

global NOTE_HASH_PENDING_AMOUNT = MAX_NOTE_HASH_READ_REQUESTS_PER_TX; // 128
global NOTE_HASH_SETTLED_AMOUNT = MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
global NULLIFIER_PENDING_AMOUNT = MAX_NULLIFIER_READ_REQUESTS_PER_TX; // 8
global NULLIFIER_SETTLED_AMOUNT = MAX_NULLIFIER_READ_REQUESTS_PER_TX;
global NULLIFIER_KEYS = MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX; // 4

unconstrained fn main(input: PrivateKernelResetCircuitPrivateInputs) -> pub PrivateKernelCircuitPublicInputs {
unconstrained fn main(input: PrivateKernelResetCircuitPrivateInputs<NOTE_HASH_PENDING_AMOUNT, NOTE_HASH_SETTLED_AMOUNT, NULLIFIER_PENDING_AMOUNT, NULLIFIER_SETTLED_AMOUNT, NULLIFIER_KEYS>) -> pub PrivateKernelCircuitPublicInputs {
input.execute()
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
use dep::private_kernel_lib::PrivateKernelResetCircuitPrivateInputs;
use dep::types::PrivateKernelCircuitPublicInputs;
use dep::types::{
PrivateKernelCircuitPublicInputs,
constants::{
MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX,
MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX
}
};

global NOTE_HASH_PENDING_AMOUNT = MAX_NOTE_HASH_READ_REQUESTS_PER_TX; // 128
global NOTE_HASH_SETTLED_AMOUNT = MAX_NOTE_HASH_READ_REQUESTS_PER_TX;
global NULLIFIER_PENDING_AMOUNT = MAX_NULLIFIER_READ_REQUESTS_PER_TX; // 8
global NULLIFIER_SETTLED_AMOUNT = MAX_NULLIFIER_READ_REQUESTS_PER_TX;
global NULLIFIER_KEYS = MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX; // 4

#[recursive]
fn main(input: PrivateKernelResetCircuitPrivateInputs) -> pub PrivateKernelCircuitPublicInputs {
fn main(input: PrivateKernelResetCircuitPrivateInputs<NOTE_HASH_PENDING_AMOUNT, NOTE_HASH_SETTLED_AMOUNT, NULLIFIER_PENDING_AMOUNT, NULLIFIER_SETTLED_AMOUNT, NULLIFIER_KEYS>) -> pub PrivateKernelCircuitPublicInputs {
input.execute()
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ use dep::types::{
accumulated_data::CombinedAccumulatedData, kernel_circuit_public_inputs::KernelCircuitPublicInputs,
public_kernel_data::PublicKernelData
},
constants::MAX_PUBLIC_DATA_HINTS,
constants::{MAX_PUBLIC_DATA_HINTS, MAX_NULLIFIER_READ_REQUESTS_PER_TX},
merkle_tree::{conditionally_assert_check_membership, MembershipWitness},
partial_state_reference::PartialStateReference, utils::{arrays::array_length}
};

struct PublicKernelTailCircuitPrivateInputs {
previous_kernel: PublicKernelData,
nullifier_read_request_hints: NullifierReadRequestHints,
nullifier_read_request_hints: NullifierReadRequestHints<MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX>,
nullifier_non_existent_read_request_hints: NullifierNonExistentReadRequestHints,
public_data_hints: [PublicDataHint; MAX_PUBLIC_DATA_HINTS],
public_data_read_request_hints: PublicDataReadRequestHints,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ impl SettledReadHint<NOTE_HASH_TREE_HEIGHT, NoteHashLeafPreimage> for NoteHashSe
}
}

struct NoteHashReadRequestHints {
struct NoteHashReadRequestHints<PENDING, SETTLED> {
read_request_statuses: [ReadRequestStatus; MAX_NOTE_HASH_READ_REQUESTS_PER_TX],
pending_read_hints: [PendingReadHint; MAX_NOTE_HASH_READ_REQUESTS_PER_TX],
settled_read_hints: [NoteHashSettledReadHint; MAX_NOTE_HASH_READ_REQUESTS_PER_TX],
pending_read_hints: [PendingReadHint; PENDING],
settled_read_hints: [NoteHashSettledReadHint; SETTLED],
}

mod tests {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ impl SettledReadHint<NULLIFIER_TREE_HEIGHT, NullifierLeafPreimage> for Nullifier
}
}

struct NullifierReadRequestHints {
struct NullifierReadRequestHints<PENDING, SETTLED> {
read_request_statuses: [ReadRequestStatus; MAX_NULLIFIER_READ_REQUESTS_PER_TX],
pending_read_hints: [PendingReadHint; MAX_NULLIFIER_READ_REQUESTS_PER_TX],
settled_read_hints: [NullifierSettledReadHint; MAX_NULLIFIER_READ_REQUESTS_PER_TX],
pending_read_hints: [PendingReadHint; PENDING],
settled_read_hints: [NullifierSettledReadHint; SETTLED],
}

mod tests {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::{
note_hash_read_request_reset::NoteHashReadRequestHints,
nullifier_read_request_reset::NullifierReadRequestHints, reset::read_request::reset_read_requests
nullifier_read_request_reset::NullifierReadRequestHints, reset::read_request::reset_read_requests,
reset::nullifier_key::{NullifierKeyHint, reset_nullifier_keys}
};
use dep::types::{
abis::{
Expand All @@ -16,18 +17,18 @@ use dep::types::{
utils::arrays::filter_array_to_bounded_vec
};

struct PrivateValidationRequestProcessor {
struct PrivateValidationRequestProcessor<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS> {
validation_requests: ValidationRequests,
note_hash_read_request_hints: NoteHashReadRequestHints,
note_hash_read_request_hints: NoteHashReadRequestHints<NH_RR_PENDING, NH_RR_SETTLED>,
pending_note_hashes: [ScopedNoteHash; MAX_NEW_NOTE_HASHES_PER_TX],
note_hash_tree_root: Field,
nullifier_read_request_hints: NullifierReadRequestHints,
nullifier_read_request_hints: NullifierReadRequestHints<NLL_RR_PENDING, NLL_RR_SETTLED>,
pending_nullifiers: [ScopedNullifier; MAX_NEW_NULLIFIERS_PER_TX],
nullifier_tree_root: Field,
master_nullifier_secret_keys: [GrumpkinPrivateKey; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX],
master_nullifier_secret_keys: [NullifierKeyHint; NLL_KEYS],
}

impl PrivateValidationRequestProcessor {
impl<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS> PrivateValidationRequestProcessor<NH_RR_PENDING, NH_RR_SETTLED, NLL_RR_PENDING, NLL_RR_SETTLED, NLL_KEYS> {
pub fn validate(self) -> ValidationRequests {
let remaining_note_hash_read_requests = self.validate_note_hash_read_requests();
let remaining_nullifier_read_requests = self.validate_nullifier_read_requests();
Expand Down Expand Up @@ -66,36 +67,9 @@ impl PrivateValidationRequestProcessor {
}

fn validate_nullifier_keys(self) -> BoundedVec<ScopedNullifierKeyValidationRequest, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX> {
let mut should_propagate = [false; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX];
let requests = self.validation_requests.nullifier_key_validation_requests;
for i in 0..MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX {
let request = requests[i].request;
if !is_empty(request) {
let contract_address = requests[i].contract_address;
let master_nullifier_secret_key = self.master_nullifier_secret_keys[i];
if !is_empty(master_nullifier_secret_key) {
// First we check that derived public key matches master nullifier public key from request
let master_nullifier_public_key = master_nullifier_secret_key.derive_public_key();
assert(
master_nullifier_public_key.eq(request.master_nullifier_public_key), "Failed to derive matching master nullifier public key from the secret key."
);

// Then we check that siloing the master secret key with the contract address gives the app nullifier secret key

let app_nullifier_secret_key = poseidon2_hash(
[
master_nullifier_secret_key.high, master_nullifier_secret_key.low, contract_address.to_field(), GENERATOR_INDEX__NSK_M
]
);
assert(
app_nullifier_secret_key.eq(request.app_nullifier_secret_key), "Failed to derive matching app nullifier secret key from the secret key."
);
} else {
should_propagate[i] = true;
}
}
}

filter_array_to_bounded_vec(requests, should_propagate)
reset_nullifier_keys(
self.validation_requests.nullifier_key_validation_requests,
self.master_nullifier_secret_keys
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use dep::types::{
kernel_circuit_public_inputs::PublicKernelCircuitPublicInputs, nullifier::Nullifier,
public_data_update_request::PublicDataUpdateRequest, validation_requests::ValidationRequests
},
constants::{MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX},
constants::{MAX_NEW_NULLIFIERS_PER_TX, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX},
hash::silo_nullifier, traits::is_empty,
utils::arrays::{array_merge, array_to_bounded_vec, assert_sorted_array}
};
Expand All @@ -21,7 +21,7 @@ struct PublicValidationRequestProcessor<N> {
validation_requests: ValidationRequests,
pending_nullifiers: [Nullifier; MAX_NEW_NULLIFIERS_PER_TX],
pending_public_data_writes: [PublicDataUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX],
nullifier_read_request_hints: NullifierReadRequestHints,
nullifier_read_request_hints: NullifierReadRequestHints<MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX>,
nullifier_non_existent_read_request_hints: NullifierNonExistentReadRequestHints,
nullifier_tree_root: Field,
public_data_read_request_hints: PublicDataReadRequestHints,
Expand All @@ -31,7 +31,7 @@ struct PublicValidationRequestProcessor<N> {
impl<N> PublicValidationRequestProcessor<N> {
pub fn new(
public_inputs: PublicKernelCircuitPublicInputs,
nullifier_read_request_hints: NullifierReadRequestHints,
nullifier_read_request_hints: NullifierReadRequestHints<MAX_NULLIFIER_READ_REQUESTS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX>,
nullifier_non_existent_read_request_hints: NullifierNonExistentReadRequestHints,
nullifier_tree_root: Field,
public_data_read_request_hints: PublicDataReadRequestHints,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ mod mutable_data_read_request;
mod non_existent_read_request;
mod read_request;
mod transient_data;
mod nullifier_key;
Loading
Loading