Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ template <typename NCT> struct CombinedAccumulatedData {

AggregationObject aggregation_object{};

std::array<fr, KERNEL_NEW_COMMITMENTS_LENGTH> new_commitments{};
std::array<fr, KERNEL_NEW_NULLIFIERS_LENGTH> new_nullifiers{};
std::array<fr, MAX_NEW_COMMITMENTS_PER_TX> new_commitments{};
std::array<fr, MAX_NEW_NULLIFIERS_PER_TX> new_nullifiers{};

std::array<fr, KERNEL_PRIVATE_CALL_STACK_LENGTH> private_call_stack{};
std::array<fr, KERNEL_PUBLIC_CALL_STACK_LENGTH> public_call_stack{};
std::array<fr, KERNEL_NEW_L2_TO_L1_MSGS_LENGTH> new_l2_to_l1_msgs{};
std::array<fr, MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX> private_call_stack{};
std::array<fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX> public_call_stack{};
std::array<fr, MAX_NEW_L2_TO_L1_MSGS_PER_TX> new_l2_to_l1_msgs{};

std::array<fr, NUM_FIELDS_PER_SHA256> encrypted_logs_hash{};
std::array<fr, NUM_FIELDS_PER_SHA256> unencrypted_logs_hash{};
Expand All @@ -40,12 +40,12 @@ template <typename NCT> struct CombinedAccumulatedData {
fr encrypted_log_preimages_length = 0;
fr unencrypted_log_preimages_length = 0;

std::array<NewContractData<NCT>, KERNEL_NEW_CONTRACTS_LENGTH> new_contracts{};
std::array<NewContractData<NCT>, MAX_NEW_CONTRACTS_PER_TX> new_contracts{};

std::array<OptionallyRevealedData<NCT>, KERNEL_OPTIONALLY_REVEALED_DATA_LENGTH> optionally_revealed_data{};
std::array<OptionallyRevealedData<NCT>, MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX> optionally_revealed_data{};

std::array<PublicDataUpdateRequest<NCT>, KERNEL_PUBLIC_DATA_UPDATE_REQUESTS_LENGTH> public_data_update_requests{};
std::array<PublicDataRead<NCT>, KERNEL_PUBLIC_DATA_READS_LENGTH> public_data_reads{};
std::array<PublicDataUpdateRequest<NCT>, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX> public_data_update_requests{};
std::array<PublicDataRead<NCT>, MAX_PUBLIC_DATA_READS_PER_TX> public_data_reads{};

// for serialization, update with new fields
MSGPACK_FIELDS(aggregation_object,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ template <typename NCT> class PrivateCircuitPublicInputs {

std::array<fr, READ_REQUESTS_LENGTH> read_requests{};

std::array<fr, NEW_COMMITMENTS_LENGTH> new_commitments{};
std::array<fr, NEW_NULLIFIERS_LENGTH> new_nullifiers{};
std::array<fr, MAX_NEW_COMMITMENTS_PER_CALL> new_commitments{};
std::array<fr, MAX_NEW_NULLIFIERS_PER_CALL> new_nullifiers{};

std::array<fr, PRIVATE_CALL_STACK_LENGTH> private_call_stack{};
std::array<fr, PUBLIC_CALL_STACK_LENGTH> public_call_stack{};
std::array<fr, NEW_L2_TO_L1_MSGS_LENGTH> new_l2_to_l1_msgs{};
std::array<fr, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> private_call_stack{};
std::array<fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL> public_call_stack{};
std::array<fr, MAX_NEW_L2_TO_L1_MSGS_PER_CALL> new_l2_to_l1_msgs{};

std::array<fr, NUM_FIELDS_PER_SHA256> encrypted_logs_hash{};
std::array<fr, NUM_FIELDS_PER_SHA256> unencrypted_logs_hash{};
Expand Down Expand Up @@ -303,12 +303,12 @@ template <typename NCT> class OptionalPrivateCircuitPublicInputs {

std::array<opt_fr, READ_REQUESTS_LENGTH> read_requests;

std::array<opt_fr, NEW_COMMITMENTS_LENGTH> new_commitments;
std::array<opt_fr, NEW_NULLIFIERS_LENGTH> new_nullifiers;
std::array<opt_fr, MAX_NEW_COMMITMENTS_PER_CALL> new_commitments;
std::array<opt_fr, MAX_NEW_NULLIFIERS_PER_CALL> new_nullifiers;

std::array<opt_fr, PRIVATE_CALL_STACK_LENGTH> private_call_stack;
std::array<opt_fr, PUBLIC_CALL_STACK_LENGTH> public_call_stack;
std::array<opt_fr, NEW_L2_TO_L1_MSGS_LENGTH> new_l2_to_l1_msgs;
std::array<opt_fr, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> private_call_stack;
std::array<opt_fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL> public_call_stack;
std::array<opt_fr, MAX_NEW_L2_TO_L1_MSGS_PER_CALL> new_l2_to_l1_msgs;

std::array<opt_fr, NUM_FIELDS_PER_SHA256> encrypted_logs_hash;
std::array<opt_fr, NUM_FIELDS_PER_SHA256> unencrypted_logs_hash;
Expand All @@ -328,35 +328,36 @@ template <typename NCT> class OptionalPrivateCircuitPublicInputs {

OptionalPrivateCircuitPublicInputs<NCT>() = default;

OptionalPrivateCircuitPublicInputs<NCT>(std::optional<CallContext<NCT>> const& call_context,
OptionalPrivateCircuitPublicInputs<NCT>(
std::optional<CallContext<NCT>> const& call_context,

opt_fr const& args_hash,
std::array<opt_fr, RETURN_VALUES_LENGTH> const& return_values,
opt_fr const& args_hash,
std::array<opt_fr, RETURN_VALUES_LENGTH> const& return_values,

std::array<opt_fr, READ_REQUESTS_LENGTH> const& read_requests,
std::array<opt_fr, READ_REQUESTS_LENGTH> const& read_requests,

std::array<opt_fr, NEW_COMMITMENTS_LENGTH> const& new_commitments,
std::array<opt_fr, NEW_NULLIFIERS_LENGTH> const& new_nullifiers,
std::array<opt_fr, MAX_NEW_COMMITMENTS_PER_CALL> const& new_commitments,
std::array<opt_fr, MAX_NEW_NULLIFIERS_PER_CALL> const& new_nullifiers,

std::array<opt_fr, PRIVATE_CALL_STACK_LENGTH> const& private_call_stack,
std::array<opt_fr, PUBLIC_CALL_STACK_LENGTH> const& public_call_stack,
std::array<opt_fr, NEW_L2_TO_L1_MSGS_LENGTH> const& new_l2_to_l1_msgs,
std::array<opt_fr, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> const& private_call_stack,
std::array<opt_fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL> const& public_call_stack,
std::array<opt_fr, MAX_NEW_L2_TO_L1_MSGS_PER_CALL> const& new_l2_to_l1_msgs,

std::array<opt_fr, NUM_FIELDS_PER_SHA256> const& encrypted_logs_hash,
std::array<opt_fr, NUM_FIELDS_PER_SHA256> const& unencrypted_logs_hash,
std::array<opt_fr, NUM_FIELDS_PER_SHA256> const& encrypted_logs_hash,
std::array<opt_fr, NUM_FIELDS_PER_SHA256> const& unencrypted_logs_hash,

opt_fr const& encrypted_log_preimages_length,
opt_fr const& unencrypted_log_preimages_length,
opt_fr const& encrypted_log_preimages_length,
opt_fr const& unencrypted_log_preimages_length,

opt_fr const& historic_private_data_tree_root,
opt_fr const& historic_nullifier_tree_root,
opt_fr const& historic_contract_tree_root,
opt_fr const& historic_l1_to_l2_messages_tree_root,
opt_fr const& historic_private_data_tree_root,
opt_fr const& historic_nullifier_tree_root,
opt_fr const& historic_contract_tree_root,
opt_fr const& historic_l1_to_l2_messages_tree_root,

std::optional<ContractDeploymentData<NCT>> const& contract_deployment_data,
std::optional<ContractDeploymentData<NCT>> const& contract_deployment_data,

opt_fr const& chain_id,
opt_fr const& version)
opt_fr const& chain_id,
opt_fr const& version)
: call_context(call_context)
, args_hash(args_hash)
, return_values(return_values)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,16 @@
// * This class needs an explanation...
// *
// */
// std::array<CallContext<NCT>, PRIVATE_CALL_STACK_LENGTH> private_call_contexts;
// std::array<fr, PRIVATE_CALL_STACK_LENGTH> private_counterparts;
// std::array<CallContext<NCT>, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> private_call_contexts;
// std::array<fr, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> private_counterparts;

// std::array<CallContext<NCT>, PUBLIC_CALL_STACK_LENGTH> public_call_contexts;
// std::array<fr, PUBLIC_CALL_STACK_LENGTH> public_counterparts;
// std::array<CallContext<NCT>, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL> public_call_contexts;
// std::array<fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL> public_counterparts;

// // std::array<fr, CONTRACT_DEPLOYMENT_CALL_STACK_LENGTH> contract_deployment_call_stack;

// std::array<CallContext<NCT>, NEW_L2_TO_L1_MSGS_LENGTH> l1_call_contexts;
// std::array<fr, NEW_L2_TO_L1_MSGS_LENGTH> l1_counterparts; // TODO: this is probably wrong.
// std::array<CallContext<NCT>, MAX_NEW_L2_TO_L1_MSGS_PER_CALL> l1_call_contexts;
// std::array<fr, MAX_NEW_L2_TO_L1_MSGS_PER_CALL> l1_counterparts; // TODO: this is probably wrong.

// template <typename Builder>
// CallContextReconciliationData<CircuitTypes<Builder>> to_circuit_type(Builder& builder) const
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,10 @@ template <typename NCT> struct PrivateCallData {

CallStackItem<NCT, PrivateTypes> call_stack_item{};

std::array<CallStackItem<NCT, PrivateTypes>, PRIVATE_CALL_STACK_LENGTH> private_call_stack_preimages{};
std::array<CallStackItem<NCT, PrivateTypes>, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> private_call_stack_preimages{};

// std::array<CallStackItem<NCT, CallType::Public>, PUBLIC_CALL_STACK_LENGTH> public_call_stack_preimages;
// std::array<CallStackItem<NCT, CallType::Public>, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>
// public_call_stack_preimages;

NativeTypes::Proof proof{}; // TODO: how to express proof as native/circuit type when it gets used as a buffer?
std::shared_ptr<VK> vk;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@ template <typename NCT> struct PublicCircuitPublicInputs {
fr args_hash = 0;
std::array<fr, RETURN_VALUES_LENGTH> return_values{};

std::array<ContractStorageUpdateRequest<NCT>, KERNEL_PUBLIC_DATA_UPDATE_REQUESTS_LENGTH>
std::array<ContractStorageUpdateRequest<NCT>, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>
contract_storage_update_requests{};
std::array<ContractStorageRead<NCT>, KERNEL_PUBLIC_DATA_READS_LENGTH> contract_storage_reads{};
std::array<ContractStorageRead<NCT>, MAX_PUBLIC_DATA_READS_PER_CALL> contract_storage_reads{};

std::array<fr, PUBLIC_CALL_STACK_LENGTH> public_call_stack{};
std::array<fr, NEW_COMMITMENTS_LENGTH> new_commitments{};
std::array<fr, NEW_NULLIFIERS_LENGTH> new_nullifiers{};
std::array<fr, NEW_L2_TO_L1_MSGS_LENGTH> new_l2_to_l1_msgs{};
std::array<fr, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL> public_call_stack{};
std::array<fr, MAX_NEW_COMMITMENTS_PER_CALL> new_commitments{};
std::array<fr, MAX_NEW_NULLIFIERS_PER_CALL> new_nullifiers{};
std::array<fr, MAX_NEW_L2_TO_L1_MSGS_PER_CALL> new_l2_to_l1_msgs{};

std::array<fr, NUM_FIELDS_PER_SHA256> unencrypted_logs_hash{};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ template <typename NCT> struct PublicCallData {

CallStackItem<NCT, PublicTypes> call_stack_item{};

std::array<CallStackItem<NCT, PublicTypes>, PUBLIC_CALL_STACK_LENGTH> public_call_stack_preimages{};
std::array<CallStackItem<NCT, PublicTypes>, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL> public_call_stack_preimages{};

NativeTypes::Proof proof{}; // TODO: how to express proof as native/circuit type when it gets used as a buffer?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,18 @@ template <typename NCT> struct BaseRollupInputs {
AppendOnlyTreeSnapshot<NCT> start_contract_tree_snapshot;
fr start_public_data_tree_root;

std::array<NullifierLeafPreimage<NCT>, 2 * KERNEL_NEW_NULLIFIERS_LENGTH> low_nullifier_leaf_preimages;
std::array<MembershipWitness<NCT, NULLIFIER_TREE_HEIGHT>, 2 * KERNEL_NEW_NULLIFIERS_LENGTH>
std::array<NullifierLeafPreimage<NCT>, 2 * MAX_NEW_NULLIFIERS_PER_TX> low_nullifier_leaf_preimages;
std::array<MembershipWitness<NCT, NULLIFIER_TREE_HEIGHT>, 2 * MAX_NEW_NULLIFIERS_PER_TX>
low_nullifier_membership_witness;

// For inserting the new subtrees into their respective trees:
// Note: the insertion leaf index can be derived from the above snapshots' `next_available_leaf_index` values.
std::array<fr, PRIVATE_DATA_SUBTREE_INCLUSION_CHECK_DEPTH> new_commitments_subtree_sibling_path;
std::array<fr, NULLIFIER_SUBTREE_INCLUSION_CHECK_DEPTH> new_nullifiers_subtree_sibling_path;
std::array<fr, CONTRACT_SUBTREE_INCLUSION_CHECK_DEPTH> new_contracts_subtree_sibling_path;
std::array<std::array<fr, PUBLIC_DATA_TREE_HEIGHT>, 2 * KERNEL_PUBLIC_DATA_UPDATE_REQUESTS_LENGTH>
std::array<fr, PRIVATE_DATA_SUBTREE_SIBLING_PATH_LENGTH> new_commitments_subtree_sibling_path;
std::array<fr, NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH> new_nullifiers_subtree_sibling_path;
std::array<fr, CONTRACT_SUBTREE_SIBLING_PATH_LENGTH> new_contracts_subtree_sibling_path;
std::array<std::array<fr, PUBLIC_DATA_TREE_HEIGHT>, 2 * MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX>
new_public_data_update_requests_sibling_paths;
std::array<std::array<fr, PUBLIC_DATA_TREE_HEIGHT>, 2 * KERNEL_PUBLIC_DATA_READS_LENGTH>
std::array<std::array<fr, PUBLIC_DATA_TREE_HEIGHT>, 2 * MAX_PUBLIC_DATA_READS_PER_TX>
new_public_data_reads_sibling_paths;

std::array<MembershipWitness<NCT, PRIVATE_DATA_TREE_ROOTS_TREE_HEIGHT>, 2>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ template <typename NCT> struct RootRollupInputs {

// inputs required to process l1 to l2 messages
std::array<fr, NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP> l1_to_l2_messages;
std::array<fr, L1_TO_L2_MSG_SUBTREE_INCLUSION_CHECK_DEPTH> new_l1_to_l2_message_tree_root_sibling_path;
std::array<fr, L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH> new_l1_to_l2_message_tree_root_sibling_path;
std::array<fr, L1_TO_L2_MSG_TREE_ROOTS_TREE_HEIGHT> new_historic_l1_to_l2_message_roots_tree_sibling_path;

AppendOnlyTreeSnapshot<NCT> start_l1_to_l2_message_tree_snapshot;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ template <typename Builder> class FunctionExecutionContext {

Contract<NT>* contract = nullptr;

std::array<std::shared_ptr<FunctionExecutionContext<Builder>>, PRIVATE_CALL_STACK_LENGTH>
std::array<std::shared_ptr<FunctionExecutionContext<Builder>>, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>
nested_private_call_exec_ctxs;

// TODO: make this private!
Expand Down Expand Up @@ -124,9 +124,9 @@ template <typename Builder> class FunctionExecutionContext {
/**
* @brief Get the call_stack_items of any nested function calls made by this exec_ctx's function.
*/
std::array<CallStackItem<NT, PrivateTypes>, PRIVATE_CALL_STACK_LENGTH> get_private_call_stack_items()
std::array<CallStackItem<NT, PrivateTypes>, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> get_private_call_stack_items()
{
std::array<CallStackItem<NT, PrivateTypes>, PRIVATE_CALL_STACK_LENGTH> result;
std::array<CallStackItem<NT, PrivateTypes>, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL> result;

for (size_t i = 0; i < result.size(); ++i) {
auto& nested_exec_ctx = nested_private_call_exec_ctxs[i];
Expand Down
6 changes: 3 additions & 3 deletions circuits/cpp/src/aztec3/circuits/kernel/private/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -141,13 +141,13 @@ void common_update_end_values(DummyBuilder& builder,

// Enhance commitments and nullifiers with domain separation whereby domain is the contract.
{ // commitments & nullifiers
std::array<NT::fr, NEW_COMMITMENTS_LENGTH> siloed_new_commitments{};
std::array<NT::fr, MAX_NEW_COMMITMENTS_PER_CALL> siloed_new_commitments{};
for (size_t i = 0; i < new_commitments.size(); ++i) {
siloed_new_commitments[i] =
new_commitments[i] == 0 ? 0 : silo_commitment<NT>(storage_contract_address, new_commitments[i]);
}

std::array<NT::fr, NEW_NULLIFIERS_LENGTH> siloed_new_nullifiers{};
std::array<NT::fr, MAX_NEW_NULLIFIERS_PER_CALL> siloed_new_nullifiers{};
for (size_t i = 0; i < new_nullifiers.size(); ++i) {
siloed_new_nullifiers[i] =
new_nullifiers[i] == 0 ? 0 : silo_nullifier<NT>(storage_contract_address, new_nullifiers[i]);
Expand All @@ -168,7 +168,7 @@ void common_update_end_values(DummyBuilder& builder,
{ // new l2 to l1 messages
const auto& portal_contract_address = private_call.portal_contract_address;
const auto& new_l2_to_l1_msgs = private_call_public_inputs.new_l2_to_l1_msgs;
std::array<NT::fr, NEW_L2_TO_L1_MSGS_LENGTH> new_l2_to_l1_msgs_to_insert{};
std::array<NT::fr, MAX_NEW_L2_TO_L1_MSGS_PER_CALL> new_l2_to_l1_msgs_to_insert{};
for (size_t i = 0; i < new_l2_to_l1_msgs.size(); ++i) {
if (!new_l2_to_l1_msgs[i].is_zero()) {
new_l2_to_l1_msgs_to_insert[i] = compute_l2_to_l1_hash<NT>(storage_contract_address,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,8 @@ TEST_F(native_private_kernel_inner_tests, private_kernel_should_fail_if_aggregat
do_private_call_get_kernel_inputs_inner(false, deposit, standard_test_args());

// Mock the previous new commitments to be full, therefore no need commitments can be added
std::array<fr, KERNEL_NEW_COMMITMENTS_LENGTH> full_new_commitments{};
for (size_t i = 0; i < KERNEL_NEW_COMMITMENTS_LENGTH; ++i) {
std::array<fr, MAX_NEW_COMMITMENTS_PER_TX> full_new_commitments{};
for (size_t i = 0; i < MAX_NEW_COMMITMENTS_PER_TX; ++i) {
full_new_commitments[i] = i + 1;
}
private_inputs.previous_kernel.public_inputs.end.new_commitments = full_new_commitments;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,21 @@ void chop_pending_commitments(DummyBuilder& builder,
std::array<NT::fr, READ_REQUESTS_LENGTH> const& read_requests,
std::array<MembershipWitness<NT, PRIVATE_DATA_TREE_HEIGHT>, READ_REQUESTS_LENGTH> const&
read_request_membership_witnesses,
std::array<NT::fr, KERNEL_NEW_COMMITMENTS_LENGTH>& new_commitments)
std::array<NT::fr, MAX_NEW_COMMITMENTS_PER_TX>& new_commitments)
{
// chop commitments from the previous call(s)
for (size_t i = 0; i < READ_REQUESTS_LENGTH; i++) {
const auto& read_request = read_requests[i];
const auto is_transient_read = (read_request_membership_witnesses[i].leaf_index == NT::fr(-1));

if (is_transient_read) {
size_t match_pos = KERNEL_NEW_COMMITMENTS_LENGTH;
for (size_t j = 0; j < KERNEL_NEW_COMMITMENTS_LENGTH; j++) {
size_t match_pos = MAX_NEW_COMMITMENTS_PER_TX;
for (size_t j = 0; j < MAX_NEW_COMMITMENTS_PER_TX; j++) {
match_pos = (read_request == new_commitments[j]) ? j : match_pos;
}

// chop the pending commitment, i.e., replacing with 0.
if (match_pos != KERNEL_NEW_COMMITMENTS_LENGTH) {
if (match_pos != MAX_NEW_COMMITMENTS_PER_TX) {
new_commitments[match_pos] = fr(0);
} else {
builder.do_assert(
Expand All @@ -52,7 +52,7 @@ void chop_pending_commitments(DummyBuilder& builder,
}

// Move all zero entries of this array to the end and preserve ordering of other entries
utils::array_rearrange<NT::fr, KERNEL_NEW_COMMITMENTS_LENGTH>(new_commitments);
utils::array_rearrange<NT::fr, MAX_NEW_COMMITMENTS_PER_TX>(new_commitments);
}

KernelCircuitPublicInputs<NT> native_private_kernel_circuit_ordering(
Expand Down
Loading