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

chore: Remove handling of duplicates from the note hash tree #10016

Merged
merged 47 commits into from
Nov 25, 2024

Conversation

PhilWindle
Copy link
Collaborator

This PR removes the abilitity to handle duplicates in the note hash tree. Since #9492, all trees now contain unique leaves only. Removing the handling of duplicates reduces the complexity and storage requirements of the trees.

@PhilWindle PhilWindle added the e2e-all CI: Enables this CI job. label Nov 17, 2024
@PhilWindle PhilWindle changed the base branch from master to pw/data-config November 17, 2024 18:45
Base automatically changed from pw/data-config to master November 19, 2024 12:04
Copy link
Collaborator

@spalladino spalladino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not too familiar with this part of the code, but it looks good!

Comment on lines 632 to 635
if (dataPresent) {
// data is present, hydrate persisted indices
hydrate_indices_from_persisted_store(*tx);
// hydrate_indices_from_persisted_store(*tx);
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can delete this whole block

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

}
return std::nullopt;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to confirm: in this branch, since we know the data is in uncommitted (but it's outside the requested range), we know it cannot be in committed, so we can return early and don't need to look for it in the datastore, right?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. Leaves never change index, so if it's found in uncommitted it won't be at a different index in committed if it is there at all.

Comment on lines 426 to 430
// const auto [it, success] = indices_.insert({ uint256_t(leaf), index });
// if (!success) {
// std::cout << "Attempting to set leaf " << leaf << " at index " << index << " failed, leaf already found at
// index " << it->second << std::endl;
// }
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// const auto [it, success] = indices_.insert({ uint256_t(leaf), index });
// if (!success) {
// std::cout << "Attempting to set leaf " << leaf << " at index " << index << " failed, leaf already found at
// index " << it->second << std::endl;
// }

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

result = std::min(ind, result.value());
if (it != indices_.end()) {
// we have an uncommitted value, we will return from here
if (it->second >= start_index) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Curious: why do we still use the start_index?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The query is specifically looking for the index of the given leaf, provided it is beyond a certain index. It's possible, that this query is no longer used at all. I can take a look and remove completely in a future PR.

void remove_leaf_indices(const fr& key, const index_t& maxIndex, WriteTransaction& tx);

void remove_leaf_indices_after_or_equal_index(const index_t& maxIndex, WriteTransaction& tx);
void remove_leaf_index(const fr& key, const index_t& maxIndex, WriteTransaction& tx);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same question here: could we remove the maxIndex? What is it used for?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where you see maxIndex, we are executing the function from the point of view of a specific block number. So in the case of a read query we limit the results returned to include those leaves present at the time that block was included.

In the case of a write transaction (an unwind specifically) we only delete the leaf if it was included after the new pending chian tip. It might not seem obvious why we need to check this. When a public data value is updated, it's value changes producing a new leaf node hash. The leaf index however is based on slot number which does not change. If you unwind a block from the public data tree, the tree search will return leaf nodes at the indices that the slot was originally inserted, which means that slot should not be removed from the index store unless the index is beyond the new pending chain (i.e. the block you are unwinding introduced the slot for the first time).

transaction->commit();
}
}
// TEST_F(LMDBTreeStoreTest, can_read_write_key_by_index)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why all the commented-out tests? Let's reenable or delete them.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, they are no longer relevant

@PhilWindle PhilWindle enabled auto-merge (squash) November 25, 2024 10:38
Copy link
Contributor

Changes to public function bytecode sizes

Generated at commit: 6f899ed74cf78c51dfab64b5e2143158b1145415, compared to commit: 2add6ae2b1c1011bf61525c2c3c96f5bdeb34f6c

🧾 Summary (100% most significant diffs)

Program Bytecode size in bytes (+/-) %
AvmTest::set_read_storage_single +590 ❌ +421.43%
DocsExample::initialize_shared_immutable +722 ❌ +320.89%
DocsExample::initialize_public_immutable +722 ❌ +320.89%
AvmTest::read_storage_single +399 ❌ +302.27%
EasyPrivateVoting::end_vote +586 ❌ +257.02%
NFT::set_admin +586 ❌ +255.90%
Token::set_admin +586 ❌ +255.90%
FeeJuice::set_portal +775 ❌ +255.78%
Child::pub_inc_value +581 ❌ +242.08%
StaticChild::pub_inc_value +581 ❌ +242.08%
AvmInitializerTest::read_storage_immutable +399 ❌ +214.52%
StaticChild::pub_illegal_inc_value +581 ❌ +206.76%
Child::pub_inc_value_internal +581 ❌ +203.15%
DocsExample::get_shared_immutable_constrained_public +416 ❌ +194.39%
NFT::public_get_symbol +403 ❌ +180.72%
TokenBridge::get_token +403 ❌ +180.72%
Token::get_admin +403 ❌ +180.72%
NFT::get_admin +399 ❌ +171.98%
NFT::public_get_name +399 ❌ +171.98%
Token::public_get_name +399 ❌ +171.98%
Token::public_get_symbol +399 ❌ +171.98%
Token::public_get_decimals +399 ❌ +161.54%
TokenBridge::get_portal_address_public +399 ❌ +151.14%
TokenBridge::_assert_token_is_same +399 ❌ +151.14%
AvmTest::read_storage_list +416 ❌ +146.48%
AvmTest::set_storage_single +184 ❌ +143.75%
AvmTest::set_storage_list +187 ❌ +128.97%
TokenBlacklist::total_supply +399 ❌ +115.65%
Token::total_supply +399 ❌ +115.65%
DocsExample::get_shared_immutable_constrained_public_multiple +416 ❌ +112.13%
Token::_reduce_total_supply +586 ❌ +108.92%
TokenBlacklist::_reduce_total_supply +581 ❌ +107.99%
AvmTest::variable_base_msm +241 ❌ +107.59%
Child::set_value_twice_with_nested_last +635 ❌ +107.08%
Child::set_value_twice_with_nested_first +635 ❌ +107.08%
AvmTest::external_call_to_divide_by_zero +448 ❌ +95.73%
DocsExample::update_leader +187 ❌ +92.12%
Child::pub_set_value +179 ❌ +78.17%
StaticChild::pub_set_value +179 ❌ +78.17%
Lending::get_assets +399 ❌ +77.03%
AvmTest::nested_call_to_add_with_gas +406 ❌ +74.09%
StaticParent::public_get_value_from_child +406 ❌ +72.63%
AvmTest::nested_call_to_add +406 ❌ +70.86%
AvmTest::nested_call_to_assert_same +406 ❌ +70.86%
AvmTest::nested_static_call_to_add +406 ❌ +70.86%
TestLog::emit_unencrypted_events +736 ❌ +64.06%
Benchmarking::increment_balance +1,323 ❌ +55.36%
DocsExample::get_shared_immutable_constrained_public_indirect +365 ❌ +55.30%
Uniswap::_assert_token_is_same +397 ❌ +55.06%
ImportTest::public_dispatch +550 ❌ +51.64%
StaticChild::public_dispatch +1,066 ❌ +50.47%
Crowdfunding::_publish_donation_receipts +450 ❌ +47.22%
Benchmarking::public_dispatch +1,688 ❌ +42.50%
TokenBridge::constructor +993 ❌ +42.13%
StatefulTest::public_constructor +1,091 ❌ +39.09%
TestLog::public_dispatch +904 ❌ +38.00%
FPC::constructor +834 ❌ +35.98%
EasyPrivateVoting::constructor +843 ❌ +35.10%
Crowdfunding::public_dispatch +1,603 ❌ +34.30%
Claim::constructor +816 ❌ +33.27%
StatefulTest::public_dispatch +2,034 ❌ +33.12%
Auth::set_authorized +1,500 ❌ +32.94%
Claim::public_dispatch +1,053 ❌ +32.38%
AvmInitializerTest::constructor +615 ❌ +31.51%
PriceFeed::public_dispatch +974 ❌ +31.44%
AppSubscription::constructor +878 ❌ +30.98%
Crowdfunding::init +841 ❌ +30.96%
Uniswap::constructor +713 ❌ +30.15%
Auth::constructor +713 ❌ +29.63%
DocsExample::public_dispatch +1,376 ❌ +29.18%
Child::public_dispatch +1,367 ❌ +28.63%
Auth::set_authorized_delay +1,323 ❌ +28.48%
StaticParent::public_dispatch +1,593 ❌ +27.54%
TokenBridge::exit_to_l1_public +1,737 ❌ +27.40%
AvmInitializerTest::public_dispatch +742 ❌ +27.38%
TokenBlacklist::constructor +1,696 ❌ +27.17%
AppSubscription::public_dispatch +1,065 ❌ +26.66%
TokenBlacklist::update_roles +1,552 ❌ +25.25%
Token::constructor +1,035 ❌ +25.06%
Auth::public_dispatch +2,108 ❌ +23.95%
EasyPrivateVoting::add_to_tally_public +489 ❌ +23.76%
Token::mint_to_public +657 ❌ +22.91%
StatefulTest::increment_public_value_no_init_check +391 ❌ +22.91%
StatefulTest::increment_public_value +391 ❌ +22.27%
NFT::set_minter +396 ❌ +21.89%
Token::set_minter +391 ❌ +21.61%
AvmTest::add_storage_map +410 ❌ +21.51%
Lending::_borrow +1,592 ❌ +21.46%
FeeJuice::public_dispatch +1,057 ❌ +19.97%
NFT::_store_payload_in_transient_storage_unsafe +230 ❌ +19.41%
Token::_store_payload_in_transient_storage_unsafe +230 ❌ +19.41%
AuthWitTest::public_dispatch +321 ❌ +19.30%
Lending::_deposit +491 ❌ +19.25%
NFT::constructor +754 ❌ +18.59%
Child::set_value_with_two_nested_calls +174 ❌ +18.55%
Spam::public_dispatch +594 ❌ +18.28%
NFT::mint +519 ❌ +18.24%
StaticParent::public_nested_static_call +370 ❌ +18.00%
EasyPrivateVoting::public_dispatch +931 ❌ +17.89%
Auth::get_authorized_delay +347 ❌ +16.92%
FPC::public_dispatch +1,215 ❌ +16.74%
FeeJuice::_increase_public_balance +362 ❌ +16.28%
TokenBlacklist::mint_public +632 ❌ +15.80%
Test::emit_unencrypted +230 ❌ +15.50%
AvmTest::keccak_hash +371 ❌ +15.47%
TokenBridge::claim_public +1,754 ❌ +15.41%
TokenBlacklist::mint_private +574 ❌ +15.34%
NFT::finalize_transfer_to_private +841 ❌ +15.03%
NFT::_finalize_transfer_to_private_unsafe +841 ❌ +14.91%
NFT::owner_of +362 ❌ +14.87%
Spam::public_spam +362 ❌ +14.87%
InclusionProofs::constructor +342 ❌ +14.86%
TokenBlacklist::_increase_public_balance +362 ❌ +14.52%
Token::_increase_public_balance +362 ❌ +14.52%
Token::transfer_in_public +589 ❌ +13.92%
Token::finalize_mint_to_private +823 ❌ +13.10%
PriceFeed::get_price +230 ❌ +13.08%
Token::_finalize_mint_to_private_unsafe +823 ❌ +13.00%
AvmTest::read_storage_map +218 ❌ +12.74%
Token::burn_public +531 ❌ +12.70%
TokenBlacklist::transfer_public +713 ❌ +12.69%
TokenBlacklist::burn_public +660 ❌ +12.60%
StatefulTest::get_public_value +218 ❌ +12.51%
InclusionProofs::public_dispatch +470 ❌ +12.49%
AuthRegistry::is_reject_all +218 ❌ +12.44%
NFT::is_minter +218 ❌ +12.07%
Token::is_minter +218 ❌ +12.07%
Benchmarking::broadcast +214 ❌ +12.02%
NFT::transfer_in_public +396 ❌ +11.86%
FeeJuice::balance_of_public +218 ❌ +11.78%
AuthRegistry::is_consumable +224 ❌ +11.71%
TokenBlacklist::balance_of_public +218 ❌ +11.45%
Token::balance_of_public +218 ❌ +11.45%
Router::public_dispatch +264 ❌ +11.18%
NFT::public_dispatch +2,641 ❌ +11.09%
TokenBlacklist::shield +630 ❌ +10.85%
AuthRegistry::consume +310 ❌ +10.57%
Parent::public_dispatch +791 ❌ +10.24%
Token::finalize_transfer_to_private +676 ❌ +10.18%
Token::_finalize_transfer_to_private_unsafe +676 ❌ +10.11%
AvmTest::returndata_copy_oracle +177 ❌ +9.66%
FeeJuice::check_balance +214 ❌ +9.61%
TokenBlacklist::public_dispatch +2,153 ❌ +9.27%
Uniswap::public_dispatch +2,120 ❌ +9.16%
Lending::_repay +491 ❌ +8.63%
AvmTest::set_storage_map +152 ❌ +8.43%
AvmTest::emit_unencrypted_log +230 ❌ +8.28%
AuthRegistry::set_reject_all +138 ❌ +8.08%
TokenBridge::public_dispatch +1,672 ❌ +8.06%
AuthRegistry::set_authorized +148 ❌ +7.96%
Test::public_dispatch +1,517 ❌ +7.92%
Lending::init +234 ❌ +7.91%
AuthRegistry::_set_authorized +148 ❌ +7.76%
NFT::_finish_transfer_to_public +138 ❌ +7.71%
PriceFeed::set_price +136 ❌ +7.51%
AuthRegistry::public_dispatch +572 ❌ +7.20%
Auth::get_scheduled_authorized +128 ❌ +7.06%
Lending::_withdraw +609 ❌ +7.03%
Auth::get_authorized +128 ❌ +6.69%
Token::complete_refund +356 ❌ +6.48%
Token::public_dispatch +2,019 ❌ +6.38%
Lending::get_position +229 ❌ +4.57%
Lending::public_dispatch +1,183 ❌ +4.33%
AvmTest::bulk_testing +971 ❌ +4.20%
Uniswap::swap_public +633 ❌ +4.15%
TokenBlacklist::get_roles +108 ❌ +4.02%
Uniswap::_approve_bridge_and_exit_input_asset_to_L1 +249 ❌ +4.00%
Test::consume_mint_to_public_message +400 ❌ +3.68%
CardGame::public_dispatch +447 ❌ +2.76%
Test::consume_message_from_arbitrary_sender_public +206 ❌ +2.60%
CardGame::on_cards_claimed +155 ❌ +2.12%
AvmTest::public_dispatch +979 ❌ +1.61%
Lending::get_asset +4 ❌ +0.18%
CardGame::on_card_played -13 ✅ -0.22%
AvmTest::sha256_hash -13 ✅ -0.33%
AvmTest::pedersen_commit -8 ✅ -0.63%
Parent::public_nested_static_call -69 ✅ -2.01%
Lending::deposit_public -57 ✅ -2.18%
Lending::repay_public -57 ✅ -2.28%

Full diff report 👇
Program Bytecode size in bytes (+/-) %
AvmTest::set_read_storage_single 730 (+590) +421.43%
DocsExample::initialize_shared_immutable 947 (+722) +320.89%
DocsExample::initialize_public_immutable 947 (+722) +320.89%
AvmTest::read_storage_single 531 (+399) +302.27%
EasyPrivateVoting::end_vote 814 (+586) +257.02%
NFT::set_admin 815 (+586) +255.90%
Token::set_admin 815 (+586) +255.90%
FeeJuice::set_portal 1,078 (+775) +255.78%
Child::pub_inc_value 821 (+581) +242.08%
StaticChild::pub_inc_value 821 (+581) +242.08%
AvmInitializerTest::read_storage_immutable 585 (+399) +214.52%
StaticChild::pub_illegal_inc_value 862 (+581) +206.76%
Child::pub_inc_value_internal 867 (+581) +203.15%
DocsExample::get_shared_immutable_constrained_public 630 (+416) +194.39%
NFT::public_get_symbol 626 (+403) +180.72%
TokenBridge::get_token 626 (+403) +180.72%
Token::get_admin 626 (+403) +180.72%
NFT::get_admin 631 (+399) +171.98%
NFT::public_get_name 631 (+399) +171.98%
Token::public_get_name 631 (+399) +171.98%
Token::public_get_symbol 631 (+399) +171.98%
Token::public_get_decimals 646 (+399) +161.54%
TokenBridge::get_portal_address_public 663 (+399) +151.14%
TokenBridge::_assert_token_is_same 663 (+399) +151.14%
AvmTest::read_storage_list 700 (+416) +146.48%
AvmTest::set_storage_single 312 (+184) +143.75%
AvmTest::set_storage_list 332 (+187) +128.97%
TokenBlacklist::total_supply 744 (+399) +115.65%
Token::total_supply 744 (+399) +115.65%
DocsExample::get_shared_immutable_constrained_public_multiple 787 (+416) +112.13%
Token::_reduce_total_supply 1,124 (+586) +108.92%
TokenBlacklist::_reduce_total_supply 1,119 (+581) +107.99%
AvmTest::variable_base_msm 465 (+241) +107.59%
Child::set_value_twice_with_nested_last 1,228 (+635) +107.08%
Child::set_value_twice_with_nested_first 1,228 (+635) +107.08%
AvmTest::external_call_to_divide_by_zero 916 (+448) +95.73%
DocsExample::update_leader 390 (+187) +92.12%
Child::pub_set_value 408 (+179) +78.17%
StaticChild::pub_set_value 408 (+179) +78.17%
Lending::get_assets 917 (+399) +77.03%
AvmTest::nested_call_to_add_with_gas 954 (+406) +74.09%
StaticParent::public_get_value_from_child 965 (+406) +72.63%
AvmTest::nested_call_to_add 979 (+406) +70.86%
AvmTest::nested_call_to_assert_same 979 (+406) +70.86%
AvmTest::nested_static_call_to_add 979 (+406) +70.86%
TestLog::emit_unencrypted_events 1,885 (+736) +64.06%
Benchmarking::increment_balance 3,713 (+1,323) +55.36%
DocsExample::get_shared_immutable_constrained_public_indirect 1,025 (+365) +55.30%
Uniswap::_assert_token_is_same 1,118 (+397) +55.06%
ImportTest::public_dispatch 1,615 (+550) +51.64%
StaticChild::public_dispatch 3,178 (+1,066) +50.47%
Crowdfunding::_publish_donation_receipts 1,403 (+450) +47.22%
Benchmarking::public_dispatch 5,660 (+1,688) +42.50%
TokenBridge::constructor 3,350 (+993) +42.13%
StatefulTest::public_constructor 3,882 (+1,091) +39.09%
TestLog::public_dispatch 3,283 (+904) +38.00%
FPC::constructor 3,152 (+834) +35.98%
EasyPrivateVoting::constructor 3,245 (+843) +35.10%
Crowdfunding::public_dispatch 6,277 (+1,603) +34.30%
Claim::constructor 3,269 (+816) +33.27%
StatefulTest::public_dispatch 8,175 (+2,034) +33.12%
Auth::set_authorized 6,054 (+1,500) +32.94%
Claim::public_dispatch 4,305 (+1,053) +32.38%
AvmInitializerTest::constructor 2,567 (+615) +31.51%
PriceFeed::public_dispatch 4,072 (+974) +31.44%
AppSubscription::constructor 3,712 (+878) +30.98%
Crowdfunding::init 3,557 (+841) +30.96%
Uniswap::constructor 3,078 (+713) +30.15%
Auth::constructor 3,119 (+713) +29.63%
DocsExample::public_dispatch 6,092 (+1,376) +29.18%
Child::public_dispatch 6,141 (+1,367) +28.63%
Auth::set_authorized_delay 5,968 (+1,323) +28.48%
StaticParent::public_dispatch 7,378 (+1,593) +27.54%
TokenBridge::exit_to_l1_public 8,076 (+1,737) +27.40%
AvmInitializerTest::public_dispatch 3,452 (+742) +27.38%
TokenBlacklist::constructor 7,938 (+1,696) +27.17%
AppSubscription::public_dispatch 5,060 (+1,065) +26.66%
TokenBlacklist::update_roles 7,699 (+1,552) +25.25%
Token::constructor 5,165 (+1,035) +25.06%
Auth::public_dispatch 10,908 (+2,108) +23.95%
EasyPrivateVoting::add_to_tally_public 2,547 (+489) +23.76%
Token::mint_to_public 3,525 (+657) +22.91%
StatefulTest::increment_public_value_no_init_check 2,098 (+391) +22.91%
StatefulTest::increment_public_value 2,147 (+391) +22.27%
NFT::set_minter 2,205 (+396) +21.89%
Token::set_minter 2,200 (+391) +21.61%
AvmTest::add_storage_map 2,316 (+410) +21.51%
Lending::_borrow 9,009 (+1,592) +21.46%
FeeJuice::public_dispatch 6,349 (+1,057) +19.97%
NFT::_store_payload_in_transient_storage_unsafe 1,415 (+230) +19.41%
Token::_store_payload_in_transient_storage_unsafe 1,415 (+230) +19.41%
AuthWitTest::public_dispatch 1,984 (+321) +19.30%
Lending::_deposit 3,041 (+491) +19.25%
NFT::constructor 4,809 (+754) +18.59%
Child::set_value_with_two_nested_calls 1,112 (+174) +18.55%
Spam::public_dispatch 3,843 (+594) +18.28%
NFT::mint 3,364 (+519) +18.24%
StaticParent::public_nested_static_call 2,425 (+370) +18.00%
EasyPrivateVoting::public_dispatch 6,135 (+931) +17.89%
Auth::get_authorized_delay 2,398 (+347) +16.92%
FPC::public_dispatch 8,473 (+1,215) +16.74%
FeeJuice::_increase_public_balance 2,586 (+362) +16.28%
TokenBlacklist::mint_public 4,633 (+632) +15.80%
Test::emit_unencrypted 1,714 (+230) +15.50%
AvmTest::keccak_hash 2,769 (+371) +15.47%
TokenBridge::claim_public 13,136 (+1,754) +15.41%
TokenBlacklist::mint_private 4,316 (+574) +15.34%
NFT::finalize_transfer_to_private 6,435 (+841) +15.03%
NFT::_finalize_transfer_to_private_unsafe 6,482 (+841) +14.91%
NFT::owner_of 2,796 (+362) +14.87%
Spam::public_spam 2,796 (+362) +14.87%
InclusionProofs::constructor 2,643 (+342) +14.86%
TokenBlacklist::_increase_public_balance 2,855 (+362) +14.52%
Token::_increase_public_balance 2,855 (+362) +14.52%
Token::transfer_in_public 4,819 (+589) +13.92%
Token::finalize_mint_to_private 7,105 (+823) +13.10%
PriceFeed::get_price 1,988 (+230) +13.08%
Token::_finalize_mint_to_private_unsafe 7,152 (+823) +13.00%
AvmTest::read_storage_map 1,929 (+218) +12.74%
Token::burn_public 4,711 (+531) +12.70%
TokenBlacklist::transfer_public 6,333 (+713) +12.69%
TokenBlacklist::burn_public 5,900 (+660) +12.60%
StatefulTest::get_public_value 1,960 (+218) +12.51%
InclusionProofs::public_dispatch 4,232 (+470) +12.49%
AuthRegistry::is_reject_all 1,970 (+218) +12.44%
NFT::is_minter 2,024 (+218) +12.07%
Token::is_minter 2,024 (+218) +12.07%
Benchmarking::broadcast 1,994 (+214) +12.02%
NFT::transfer_in_public 3,736 (+396) +11.86%
FeeJuice::balance_of_public 2,068 (+218) +11.78%
AuthRegistry::is_consumable 2,137 (+224) +11.71%
TokenBlacklist::balance_of_public 2,122 (+218) +11.45%
Token::balance_of_public 2,122 (+218) +11.45%
Router::public_dispatch 2,625 (+264) +11.18%
NFT::public_dispatch 26,461 (+2,641) +11.09%
TokenBlacklist::shield 6,438 (+630) +10.85%
AuthRegistry::consume 3,244 (+310) +10.57%
Parent::public_dispatch 8,514 (+791) +10.24%
Token::finalize_transfer_to_private 7,315 (+676) +10.18%
Token::_finalize_transfer_to_private_unsafe 7,362 (+676) +10.11%
AvmTest::returndata_copy_oracle 2,010 (+177) +9.66%
FeeJuice::check_balance 2,441 (+214) +9.61%
TokenBlacklist::public_dispatch 25,366 (+2,153) +9.27%
Uniswap::public_dispatch 25,256 (+2,120) +9.16%
Lending::_repay 6,179 (+491) +8.63%
AvmTest::set_storage_map 1,956 (+152) +8.43%
AvmTest::emit_unencrypted_log 3,007 (+230) +8.28%
AuthRegistry::set_reject_all 1,845 (+138) +8.08%
TokenBridge::public_dispatch 22,412 (+1,672) +8.06%
AuthRegistry::set_authorized 2,007 (+148) +7.96%
Test::public_dispatch 20,664 (+1,517) +7.92%
Lending::init 3,192 (+234) +7.91%
AuthRegistry::_set_authorized 2,054 (+148) +7.76%
NFT::_finish_transfer_to_public 1,929 (+138) +7.71%
PriceFeed::set_price 1,946 (+136) +7.51%
AuthRegistry::public_dispatch 8,515 (+572) +7.20%
Auth::get_scheduled_authorized 1,941 (+128) +7.06%
Lending::_withdraw 9,273 (+609) +7.03%
Auth::get_authorized 2,041 (+128) +6.69%
Token::complete_refund 5,848 (+356) +6.48%
Token::public_dispatch 33,653 (+2,019) +6.38%
Lending::get_position 5,238 (+229) +4.57%
Lending::public_dispatch 28,533 (+1,183) +4.33%
AvmTest::bulk_testing 24,075 (+971) +4.20%
Uniswap::swap_public 15,903 (+633) +4.15%
TokenBlacklist::get_roles 2,795 (+108) +4.02%
Uniswap::_approve_bridge_and_exit_input_asset_to_L1 6,473 (+249) +4.00%
Test::consume_mint_to_public_message 11,284 (+400) +3.68%
CardGame::public_dispatch 16,643 (+447) +2.76%
Test::consume_message_from_arbitrary_sender_public 8,137 (+206) +2.60%
CardGame::on_cards_claimed 7,458 (+155) +2.12%
AvmTest::public_dispatch 61,741 (+979) +1.61%
Lending::get_asset 2,209 (+4) +0.18%
CardGame::on_card_played 5,987 (-13) -0.22%
AvmTest::sha256_hash 3,910 (-13) -0.33%
AvmTest::pedersen_commit 1,255 (-8) -0.63%
Parent::public_nested_static_call 3,364 (-69) -2.01%
Lending::deposit_public 2,555 (-57) -2.18%
Lending::repay_public 2,438 (-57) -2.28%

@PhilWindle PhilWindle merged commit ece1d45 into master Nov 25, 2024
102 of 104 checks passed
@PhilWindle PhilWindle deleted the pw/remove-duplicates-from-tree branch November 25, 2024 11:47
critesjosh pushed a commit that referenced this pull request Nov 25, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.64.0</summary>

##
[0.64.0](aztec-package-v0.63.1...aztec-package-v0.64.0)
(2024-11-25)


### Features

* Unify anvil versions
([#10143](#10143))
([adae143](adae143))


### Miscellaneous

* Fast epoch building test
([#10045](#10045))
([fb791a2](fb791a2)),
closes
[#9809](#9809)
</details>

<details><summary>barretenberg.js: 0.64.0</summary>

##
[0.64.0](barretenberg.js-v0.63.1...barretenberg.js-v0.64.0)
(2024-11-25)


### Features

* Single commitment key allocation in CIVC
([#9974](#9974))
([a0551ee](a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](#9987))
([62a6b66](62a6b66))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](#10064))
([8b4ebd1](8b4ebd1))
</details>

<details><summary>aztec-packages: 0.64.0</summary>

##
[0.64.0](aztec-packages-v0.63.1...aztec-packages-v0.64.0)
(2024-11-25)


### ⚠ BREAKING CHANGES

* rename SharedMutable methods
([#10165](#10165))
* add AztecAddress.isValid and make random be valid
([#10081](#10081))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)

### Features

* Add AztecAddress.isValid and make random be valid
([#10081](#10081))
([fbdf6b0](fbdf6b0))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)
([b8bace9](b8bace9))
* **avm:** Error handling for address resolution
([#9994](#9994))
([ceaeda5](ceaeda5)),
closes
[#9131](#9131)
* **avm:** Integrate ephemeral trees
([#9917](#9917))
([fbe1128](fbe1128))
* **avm:** More efficient low leaf search
([#9870](#9870))
([f7bbd83](f7bbd83))
* Avoid unnecessary ssa passes while loop unrolling
(noir-lang/noir#6509)
([b8bace9](b8bace9))
* Bb-prover AVM test crafts a test TX & properly plumbs
AvmCircuitPublicInputs to witgen
([#10083](#10083))
([55564aa](55564aa))
* Calls to non-existent contracts in the AVM simulator return failure
([#10051](#10051))
([133384c](133384c))
* Compute base-fee on l1
([#9986](#9986))
([4ab46fe](4ab46fe))
* Deduplicate instructions across blocks
(noir-lang/noir#6499)
([b8bace9](b8bace9))
* E2e metrics reporting
([#9776](#9776))
([9cab121](9cab121))
* Gating test
([#9918](#9918))
([c6b65ab](c6b65ab)),
closes
[#9883](#9883)
* Google Kubernetes Engine - Prover Agent Spot Node Support
([#10031](#10031))
([4d6da9b](4d6da9b))
* Improve trace utilization tracking
([#10008](#10008))
([4c560ab](4c560ab))
* Improved data storage metrics
([#10020](#10020))
([c6ab0c9](c6ab0c9))
* Initial gas oracle
([#9952](#9952))
([e740d42](e740d42))
* Insert public data tree leaves one by one
([#9989](#9989))
([a2c0701](a2c0701))
* Integrate base fee computation into rollup
([#10076](#10076))
([3417b22](3417b22))
* IPA accumulators setup for Rollup
([#10040](#10040))
([4129e27](4129e27))
* New proving agent
([#9999](#9999))
([9ad24dd](9ad24dd))
* **profiler:** Reduce memory in Brillig execution flamegraph
(noir-lang/noir#6538)
([b8bace9](b8bace9))
* Public network deployments
([#10089](#10089))
([570f70a](570f70a))
* PXE handles reorgs
([#9913](#9913))
([aafef9c](aafef9c))
* Rename SharedMutable methods
([#10165](#10165))
([4fd70e8](4fd70e8))
* Reset pxe indexes
([#10093](#10093))
([3848c01](3848c01))
* Simplify constant MSM calls in SSA
(noir-lang/noir#6547)
([b8bace9](b8bace9))
* Single commitment key allocation in CIVC
([#9974](#9974))
([a0551ee](a0551ee))
* SSA parser (noir-lang/noir#6489)
([b8bace9](b8bace9))
* **ssa:** Unroll small loops in brillig
(noir-lang/noir#6505)
([b8bace9](b8bace9))
* Sync from aztec-packages (noir-lang/noir#6557)
([b8bace9](b8bace9))
* Sync tags as sender
([#10071](#10071))
([122d2e4](122d2e4))
* Terraform for release deployments
([#10091](#10091))
([dc528da](dc528da)),
closes
[#10144](#10144)
* Trait aliases (noir-lang/noir#6431)
([b8bace9](b8bace9))
* Unify anvil versions
([#10143](#10143))
([adae143](adae143))
* Updating consensus payload
([#10017](#10017))
([85c8a3b](85c8a3b))
* Use a full `BlackBoxFunctionSolver` implementation when execution
brillig during acirgen (noir-lang/noir#6481)
([b8bace9](b8bace9))
* **val:** Reex
([#9768](#9768))
([2e58f0a](2e58f0a))


### Bug Fixes

* Add curl to aztec nargo container
([#10173](#10173))
([2add6ae](2add6ae))
* Add zod parsing for generated contract artifacts
([#9905](#9905))
([e1ef998](e1ef998))
* Allow range checks to be performed within the comptime intepreter
(noir-lang/noir#6514)
([b8bace9](b8bace9))
* Allow unwinding multiple empty blocks
([#10084](#10084))
([ec34442](ec34442))
* Boxes
([#10122](#10122))
([10df7c5](10df7c5))
* Check infix expression is valid in program input
(noir-lang/noir#6450)
([b8bace9](b8bace9))
* Disallow `#[test]` on associated functions
(noir-lang/noir#6449)
([b8bace9](b8bace9))
* Disallow contract registration in pxe of contract with duplicate
private function selectors
([#9773](#9773))
([2587ad5](2587ad5))
* Discard optimisation that would change execution ordering or that is
related to call outputs (noir-lang/noir#6461)
([b8bace9](b8bace9))
* Do a shallow follow_bindings before unification
(noir-lang/noir#6558)
([b8bace9](b8bace9))
* **docs:** Fix broken links in oracles doc
(noir-lang/noir#6488)
([b8bace9](b8bace9))
* Don't crash on AsTraitPath with empty path
(noir-lang/noir#6454)
([b8bace9](b8bace9))
* Fix poor handling of aliased references in flattening pass causing
some values to be zeroed (noir-lang/noir#6434)
([b8bace9](b8bace9))
* Let formatter respect newlines between comments
(noir-lang/noir#6458)
([b8bace9](b8bace9))
* Make bytecode part of artifact hash preimage again
([#9771](#9771))
([cdabd85](cdabd85))
* Parse Slice type in SSa (noir-lang/noir#6507)
([b8bace9](b8bace9))
* Perform arithmetic simplification through `CheckedCast`
(noir-lang/noir#6502)
([b8bace9](b8bace9))
* Potential e2e-p2p fix
([#10094](#10094))
([820bcc6](820bcc6))
* Prover-agent.yaml syntax
([#10131](#10131))
([a238fe6](a238fe6))
* Remove src build from doc build flow
([#10127](#10127))
([fbfe1b1](fbfe1b1))
* Revert "feat: integrate base fee computation into rollup"
([#10166](#10166))
([1a207f5](1a207f5))
* Right shift is not a regular division
(noir-lang/noir#6400)
([b8bace9](b8bace9))
* **sea:** Mem2reg to treat block input references as alias
(noir-lang/noir#6452)
([b8bace9](b8bace9))
* Set local_module before elaborating each trait
(noir-lang/noir#6506)
([b8bace9](b8bace9))
* Sorting artifact props and members in metadata
([#9772](#9772))
([aba568a](aba568a))
* **ssa:** Change array_set to not mutate slices coming from function
inputs (noir-lang/noir#6463)
([b8bace9](b8bace9))
* **ssa:** Resolve value IDs in terminator before comparing to array
(noir-lang/noir#6448)
([b8bace9](b8bace9))
* Strip wasm debug
([#9987](#9987))
([62a6b66](62a6b66))
* Take blackbox function outputs into account when merging expressions
(noir-lang/noir#6532)
([b8bace9](b8bace9))
* **tests:** Prevent EOF error while running test programs
(noir-lang/noir#6455)
([b8bace9](b8bace9))
* **tests:** Use a file lock as well as a mutex to isolate tests cases
(noir-lang/noir#6508)
([b8bace9](b8bace9))
* Treat all parameters as possible aliases of each other
(noir-lang/noir#6477)
([b8bace9](b8bace9))
* Zero index is not always 0
([#10135](#10135))
([bbac3d9](bbac3d9))


### Miscellaneous

* Add `Instruction::MakeArray` to SSA
(noir-lang/noir#6071)
([b8bace9](b8bace9))
* Added test showcasing performance regression
(noir-lang/noir#6566)
([b8bace9](b8bace9))
* **avm:** Remove initialization for non-derived polynomials
([#10103](#10103))
([c6fdf4b](c6fdf4b)),
closes
[#10096](#10096)
* Bump rust dependencies (noir-lang/noir#6482)
([b8bace9](b8bace9))
* **ci:** Bump mac github runner image to `macos-14`
(noir-lang/noir#6545)
([b8bace9](b8bace9))
* **ci:** Fix cargo deny (noir-lang/noir#6501)
([b8bace9](b8bace9))
* Convert some tests to use SSA parser
(noir-lang/noir#6543)
([b8bace9](b8bace9))
* Delete stray todos
([#10112](#10112))
([cc4139a](cc4139a))
* Do not run e2e-2-pxes along with e2e pxe test
([#10155](#10155))
([f0f8d22](f0f8d22))
* **docs:** Update How to Oracles
(noir-lang/noir#5675)
([b8bace9](b8bace9))
* Embed package name in logs
(noir-lang/noir#6564)
([b8bace9](b8bace9))
* Fast epoch building test
([#10045](#10045))
([fb791a2](fb791a2)),
closes
[#9809](#9809)
* Fix pool metrics
([#9652](#9652))
([233b387](233b387))
* Fix spartan deploy script
([#10078](#10078))
([368ac8b](368ac8b))
* Initial draft of testnet-runbook
([#10085](#10085))
([598c1b1](598c1b1))
* Lower throughput of ebs disks
([#9997](#9997))
([698cd3d](698cd3d))
* Make tests not silent if DEBUG set
([#10130](#10130))
([95e8406](95e8406))
* Move tests for arithmetic generics closer to the code
(noir-lang/noir#6497)
([b8bace9](b8bace9))
* Optimise polynomial initialisation
([#10073](#10073))
([e608742](e608742))
* Parse negatives in SSA parser
(noir-lang/noir#6510)
([b8bace9](b8bace9))
* Proptest for `canonicalize` on infix type expressions
(noir-lang/noir#6269)
([b8bace9](b8bace9))
* Pull across
noir-lang/noir[#6558](#6558)
([#10037](#10037))
([3014a69](3014a69))
* Pull out sync changes
([#10072](#10072))
([06ef61e](06ef61e))
* Release Noir(0.38.0) (noir-lang/noir#6422)
([b8bace9](b8bace9))
* Release Noir(0.39.0) (noir-lang/noir#6484)
([b8bace9](b8bace9))
* Remove handling of duplicates from the note hash tree
([#10016](#10016))
([ece1d45](ece1d45))
* Remove PublicExecutor
([#10028](#10028))
([9643dcd](9643dcd))
* Remove separate acvm versioning
(noir-lang/noir#6561)
([b8bace9](b8bace9))
* Remove some `_else_condition` tech debt
(noir-lang/noir#6522)
([b8bace9](b8bace9))
* Remove some unnecessary clones
([#10049](#10049))
([8628b32](8628b32))
* Remove unused imports
([#10134](#10134))
([8dbeda0](8dbeda0))
* Remove unused methods from implicit numeric generics
(noir-lang/noir#6541)
([b8bace9](b8bace9))
* Replace relative paths to noir-protocol-circuits
([ccf6695](ccf6695))
* Replace relative paths to noir-protocol-circuits
([fa225a2](fa225a2))
* Replace relative paths to noir-protocol-circuits
([98387b8](98387b8))
* Replace relative paths to noir-protocol-circuits
([94753d4](94753d4))
* Restructure `noirc_evaluator` crate
(noir-lang/noir#6534)
([b8bace9](b8bace9))
* Revamp attributes (noir-lang/noir#6424)
([b8bace9](b8bace9))
* Reverse ssa parser diff order
(noir-lang/noir#6511)
([b8bace9](b8bace9))
* Revert
[#6375](#6375)
(noir-lang/noir#6552)
([b8bace9](b8bace9))
* Skip emitting public bytecode
([#10009](#10009))
([280d169](280d169))
* Split path and import lookups
(noir-lang/noir#6430)
([b8bace9](b8bace9))
* **ssa:** Skip array_set pass for Brillig functions
(noir-lang/noir#6513)
([b8bace9](b8bace9))
* Switch to 1.0.0-beta versioning
(noir-lang/noir#6503)
([b8bace9](b8bace9))
* **test:** More descriptive labels in test matrix
(noir-lang/noir#6542)
([b8bace9](b8bace9))
* **test:** Remove duplicate brillig tests
(noir-lang/noir#6523)
([b8bace9](b8bace9))
* **test:** Run test matrix on test_programs
(noir-lang/noir#6429)
([b8bace9](b8bace9))
* Update example to show how to split public inputs in bash
(noir-lang/noir#6472)
([b8bace9](b8bace9))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](#10064))
([8b4ebd1](8b4ebd1))
* Re-arrange references section
([#10070](#10070))
([375482f](375482f))
</details>

<details><summary>barretenberg: 0.64.0</summary>

##
[0.64.0](barretenberg-v0.63.1...barretenberg-v0.64.0)
(2024-11-25)


### Features

* **avm:** Error handling for address resolution
([#9994](#9994))
([ceaeda5](ceaeda5)),
closes
[#9131](#9131)
* Improve trace utilization tracking
([#10008](#10008))
([4c560ab](4c560ab))
* Improved data storage metrics
([#10020](#10020))
([c6ab0c9](c6ab0c9))
* Insert public data tree leaves one by one
([#9989](#9989))
([a2c0701](a2c0701))
* IPA accumulators setup for Rollup
([#10040](#10040))
([4129e27](4129e27))
* Single commitment key allocation in CIVC
([#9974](#9974))
([a0551ee](a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](#9987))
([62a6b66](62a6b66))
* Zero index is not always 0
([#10135](#10135))
([bbac3d9](bbac3d9))


### Miscellaneous

* **avm:** Remove initialization for non-derived polynomials
([#10103](#10103))
([c6fdf4b](c6fdf4b)),
closes
[#10096](#10096)
* Delete stray todos
([#10112](#10112))
([cc4139a](cc4139a))
* Optimise polynomial initialisation
([#10073](#10073))
([e608742](e608742))
* Remove handling of duplicates from the note hash tree
([#10016](#10016))
([ece1d45](ece1d45))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
TomAFrench added a commit that referenced this pull request Nov 25, 2024
* master: (106 commits)
  feat: blobs. (#9302)
  chore(avm): operands reordering (#10182)
  feat: UltraRollupRecursiveFlavor (#10088)
  feat: one liner for nodes to join rough-rhino (#10168)
  feat!: rename sharedimmutable methods (#10164)
  chore(master): Release 0.64.0 (#10043)
  feat: e2e metrics reporting (#9776)
  chore: fix pool metrics (#9652)
  chore: Initial draft of testnet-runbook (#10085)
  feat: Improved data storage metrics (#10020)
  chore: Remove handling of duplicates from the note hash tree (#10016)
  fix: add curl to aztec nargo container (#10173)
  fix: Revert "feat: integrate base fee computation into rollup" (#10166)
  feat!: rename SharedMutable methods (#10165)
  git subrepo push --branch=master noir-projects/aztec-nr
  git_subrepo.sh: Fix parent in .gitrepo file. [skip ci]
  chore: replace relative paths to noir-protocol-circuits
  git subrepo push --branch=master barretenberg
  feat: sync tags as sender (#10071)
  feat: integrate base fee computation into rollup (#10076)
  ...
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Nov 26, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.64.0</summary>

##
[0.64.0](AztecProtocol/aztec-packages@aztec-package-v0.63.1...aztec-package-v0.64.0)
(2024-11-25)


### Features

* Unify anvil versions
([#10143](AztecProtocol/aztec-packages#10143))
([adae143](AztecProtocol/aztec-packages@adae143))


### Miscellaneous

* Fast epoch building test
([#10045](AztecProtocol/aztec-packages#10045))
([fb791a2](AztecProtocol/aztec-packages@fb791a2)),
closes
[#9809](AztecProtocol/aztec-packages#9809)
</details>

<details><summary>barretenberg.js: 0.64.0</summary>

##
[0.64.0](AztecProtocol/aztec-packages@barretenberg.js-v0.63.1...barretenberg.js-v0.64.0)
(2024-11-25)


### Features

* Single commitment key allocation in CIVC
([#9974](AztecProtocol/aztec-packages#9974))
([a0551ee](AztecProtocol/aztec-packages@a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](AztecProtocol/aztec-packages#9987))
([62a6b66](AztecProtocol/aztec-packages@62a6b66))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](AztecProtocol/aztec-packages#10064))
([8b4ebd1](AztecProtocol/aztec-packages@8b4ebd1))
</details>

<details><summary>aztec-packages: 0.64.0</summary>

##
[0.64.0](AztecProtocol/aztec-packages@aztec-packages-v0.63.1...aztec-packages-v0.64.0)
(2024-11-25)


### ⚠ BREAKING CHANGES

* rename SharedMutable methods
([#10165](AztecProtocol/aztec-packages#10165))
* add AztecAddress.isValid and make random be valid
([#10081](AztecProtocol/aztec-packages#10081))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)

### Features

* Add AztecAddress.isValid and make random be valid
([#10081](AztecProtocol/aztec-packages#10081))
([fbdf6b0](AztecProtocol/aztec-packages@fbdf6b0))
* Always Check Arithmetic Generics at Monomorphization
(noir-lang/noir#6329)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **avm:** Error handling for address resolution
([#9994](AztecProtocol/aztec-packages#9994))
([ceaeda5](AztecProtocol/aztec-packages@ceaeda5)),
closes
[#9131](AztecProtocol/aztec-packages#9131)
* **avm:** Integrate ephemeral trees
([#9917](AztecProtocol/aztec-packages#9917))
([fbe1128](AztecProtocol/aztec-packages@fbe1128))
* **avm:** More efficient low leaf search
([#9870](AztecProtocol/aztec-packages#9870))
([f7bbd83](AztecProtocol/aztec-packages@f7bbd83))
* Avoid unnecessary ssa passes while loop unrolling
(noir-lang/noir#6509)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Bb-prover AVM test crafts a test TX & properly plumbs
AvmCircuitPublicInputs to witgen
([#10083](AztecProtocol/aztec-packages#10083))
([55564aa](AztecProtocol/aztec-packages@55564aa))
* Calls to non-existent contracts in the AVM simulator return failure
([#10051](AztecProtocol/aztec-packages#10051))
([133384c](AztecProtocol/aztec-packages@133384c))
* Compute base-fee on l1
([#9986](AztecProtocol/aztec-packages#9986))
([4ab46fe](AztecProtocol/aztec-packages@4ab46fe))
* Deduplicate instructions across blocks
(noir-lang/noir#6499)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* E2e metrics reporting
([#9776](AztecProtocol/aztec-packages#9776))
([9cab121](AztecProtocol/aztec-packages@9cab121))
* Gating test
([#9918](AztecProtocol/aztec-packages#9918))
([c6b65ab](AztecProtocol/aztec-packages@c6b65ab)),
closes
[#9883](AztecProtocol/aztec-packages#9883)
* Google Kubernetes Engine - Prover Agent Spot Node Support
([#10031](AztecProtocol/aztec-packages#10031))
([4d6da9b](AztecProtocol/aztec-packages@4d6da9b))
* Improve trace utilization tracking
([#10008](AztecProtocol/aztec-packages#10008))
([4c560ab](AztecProtocol/aztec-packages@4c560ab))
* Improved data storage metrics
([#10020](AztecProtocol/aztec-packages#10020))
([c6ab0c9](AztecProtocol/aztec-packages@c6ab0c9))
* Initial gas oracle
([#9952](AztecProtocol/aztec-packages#9952))
([e740d42](AztecProtocol/aztec-packages@e740d42))
* Insert public data tree leaves one by one
([#9989](AztecProtocol/aztec-packages#9989))
([a2c0701](AztecProtocol/aztec-packages@a2c0701))
* Integrate base fee computation into rollup
([#10076](AztecProtocol/aztec-packages#10076))
([3417b22](AztecProtocol/aztec-packages@3417b22))
* IPA accumulators setup for Rollup
([#10040](AztecProtocol/aztec-packages#10040))
([4129e27](AztecProtocol/aztec-packages@4129e27))
* New proving agent
([#9999](AztecProtocol/aztec-packages#9999))
([9ad24dd](AztecProtocol/aztec-packages@9ad24dd))
* **profiler:** Reduce memory in Brillig execution flamegraph
(noir-lang/noir#6538)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Public network deployments
([#10089](AztecProtocol/aztec-packages#10089))
([570f70a](AztecProtocol/aztec-packages@570f70a))
* PXE handles reorgs
([#9913](AztecProtocol/aztec-packages#9913))
([aafef9c](AztecProtocol/aztec-packages@aafef9c))
* Rename SharedMutable methods
([#10165](AztecProtocol/aztec-packages#10165))
([4fd70e8](AztecProtocol/aztec-packages@4fd70e8))
* Reset pxe indexes
([#10093](AztecProtocol/aztec-packages#10093))
([3848c01](AztecProtocol/aztec-packages@3848c01))
* Simplify constant MSM calls in SSA
(noir-lang/noir#6547)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Single commitment key allocation in CIVC
([#9974](AztecProtocol/aztec-packages#9974))
([a0551ee](AztecProtocol/aztec-packages@a0551ee))
* SSA parser (noir-lang/noir#6489)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ssa:** Unroll small loops in brillig
(noir-lang/noir#6505)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Sync from aztec-packages (noir-lang/noir#6557)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Sync tags as sender
([#10071](AztecProtocol/aztec-packages#10071))
([122d2e4](AztecProtocol/aztec-packages@122d2e4))
* Terraform for release deployments
([#10091](AztecProtocol/aztec-packages#10091))
([dc528da](AztecProtocol/aztec-packages@dc528da)),
closes
[#10144](AztecProtocol/aztec-packages#10144)
* Trait aliases (noir-lang/noir#6431)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Unify anvil versions
([#10143](AztecProtocol/aztec-packages#10143))
([adae143](AztecProtocol/aztec-packages@adae143))
* Updating consensus payload
([#10017](AztecProtocol/aztec-packages#10017))
([85c8a3b](AztecProtocol/aztec-packages@85c8a3b))
* Use a full `BlackBoxFunctionSolver` implementation when execution
brillig during acirgen (noir-lang/noir#6481)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **val:** Reex
([#9768](AztecProtocol/aztec-packages#9768))
([2e58f0a](AztecProtocol/aztec-packages@2e58f0a))


### Bug Fixes

* Add curl to aztec nargo container
([#10173](AztecProtocol/aztec-packages#10173))
([2add6ae](AztecProtocol/aztec-packages@2add6ae))
* Add zod parsing for generated contract artifacts
([#9905](AztecProtocol/aztec-packages#9905))
([e1ef998](AztecProtocol/aztec-packages@e1ef998))
* Allow range checks to be performed within the comptime intepreter
(noir-lang/noir#6514)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Allow unwinding multiple empty blocks
([#10084](AztecProtocol/aztec-packages#10084))
([ec34442](AztecProtocol/aztec-packages@ec34442))
* Boxes
([#10122](AztecProtocol/aztec-packages#10122))
([10df7c5](AztecProtocol/aztec-packages@10df7c5))
* Check infix expression is valid in program input
(noir-lang/noir#6450)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Disallow `#[test]` on associated functions
(noir-lang/noir#6449)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Disallow contract registration in pxe of contract with duplicate
private function selectors
([#9773](AztecProtocol/aztec-packages#9773))
([2587ad5](AztecProtocol/aztec-packages@2587ad5))
* Discard optimisation that would change execution ordering or that is
related to call outputs (noir-lang/noir#6461)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Do a shallow follow_bindings before unification
(noir-lang/noir#6558)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **docs:** Fix broken links in oracles doc
(noir-lang/noir#6488)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Don't crash on AsTraitPath with empty path
(noir-lang/noir#6454)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Fix poor handling of aliased references in flattening pass causing
some values to be zeroed (noir-lang/noir#6434)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Let formatter respect newlines between comments
(noir-lang/noir#6458)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Make bytecode part of artifact hash preimage again
([#9771](AztecProtocol/aztec-packages#9771))
([cdabd85](AztecProtocol/aztec-packages@cdabd85))
* Parse Slice type in SSa (noir-lang/noir#6507)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Perform arithmetic simplification through `CheckedCast`
(noir-lang/noir#6502)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Potential e2e-p2p fix
([#10094](AztecProtocol/aztec-packages#10094))
([820bcc6](AztecProtocol/aztec-packages@820bcc6))
* Prover-agent.yaml syntax
([#10131](AztecProtocol/aztec-packages#10131))
([a238fe6](AztecProtocol/aztec-packages@a238fe6))
* Remove src build from doc build flow
([#10127](AztecProtocol/aztec-packages#10127))
([fbfe1b1](AztecProtocol/aztec-packages@fbfe1b1))
* Revert "feat: integrate base fee computation into rollup"
([#10166](AztecProtocol/aztec-packages#10166))
([1a207f5](AztecProtocol/aztec-packages@1a207f5))
* Right shift is not a regular division
(noir-lang/noir#6400)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **sea:** Mem2reg to treat block input references as alias
(noir-lang/noir#6452)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Set local_module before elaborating each trait
(noir-lang/noir#6506)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Sorting artifact props and members in metadata
([#9772](AztecProtocol/aztec-packages#9772))
([aba568a](AztecProtocol/aztec-packages@aba568a))
* **ssa:** Change array_set to not mutate slices coming from function
inputs (noir-lang/noir#6463)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ssa:** Resolve value IDs in terminator before comparing to array
(noir-lang/noir#6448)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Strip wasm debug
([#9987](AztecProtocol/aztec-packages#9987))
([62a6b66](AztecProtocol/aztec-packages@62a6b66))
* Take blackbox function outputs into account when merging expressions
(noir-lang/noir#6532)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **tests:** Prevent EOF error while running test programs
(noir-lang/noir#6455)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **tests:** Use a file lock as well as a mutex to isolate tests cases
(noir-lang/noir#6508)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Treat all parameters as possible aliases of each other
(noir-lang/noir#6477)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Zero index is not always 0
([#10135](AztecProtocol/aztec-packages#10135))
([bbac3d9](AztecProtocol/aztec-packages@bbac3d9))


### Miscellaneous

* Add `Instruction::MakeArray` to SSA
(noir-lang/noir#6071)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Added test showcasing performance regression
(noir-lang/noir#6566)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **avm:** Remove initialization for non-derived polynomials
([#10103](AztecProtocol/aztec-packages#10103))
([c6fdf4b](AztecProtocol/aztec-packages@c6fdf4b)),
closes
[#10096](AztecProtocol/aztec-packages#10096)
* Bump rust dependencies (noir-lang/noir#6482)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ci:** Bump mac github runner image to `macos-14`
(noir-lang/noir#6545)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ci:** Fix cargo deny (noir-lang/noir#6501)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Convert some tests to use SSA parser
(noir-lang/noir#6543)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Delete stray todos
([#10112](AztecProtocol/aztec-packages#10112))
([cc4139a](AztecProtocol/aztec-packages@cc4139a))
* Do not run e2e-2-pxes along with e2e pxe test
([#10155](AztecProtocol/aztec-packages#10155))
([f0f8d22](AztecProtocol/aztec-packages@f0f8d22))
* **docs:** Update How to Oracles
(noir-lang/noir#5675)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Embed package name in logs
(noir-lang/noir#6564)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Fast epoch building test
([#10045](AztecProtocol/aztec-packages#10045))
([fb791a2](AztecProtocol/aztec-packages@fb791a2)),
closes
[#9809](AztecProtocol/aztec-packages#9809)
* Fix pool metrics
([#9652](AztecProtocol/aztec-packages#9652))
([233b387](AztecProtocol/aztec-packages@233b387))
* Fix spartan deploy script
([#10078](AztecProtocol/aztec-packages#10078))
([368ac8b](AztecProtocol/aztec-packages@368ac8b))
* Initial draft of testnet-runbook
([#10085](AztecProtocol/aztec-packages#10085))
([598c1b1](AztecProtocol/aztec-packages@598c1b1))
* Lower throughput of ebs disks
([#9997](AztecProtocol/aztec-packages#9997))
([698cd3d](AztecProtocol/aztec-packages@698cd3d))
* Make tests not silent if DEBUG set
([#10130](AztecProtocol/aztec-packages#10130))
([95e8406](AztecProtocol/aztec-packages@95e8406))
* Move tests for arithmetic generics closer to the code
(noir-lang/noir#6497)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Optimise polynomial initialisation
([#10073](AztecProtocol/aztec-packages#10073))
([e608742](AztecProtocol/aztec-packages@e608742))
* Parse negatives in SSA parser
(noir-lang/noir#6510)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Proptest for `canonicalize` on infix type expressions
(noir-lang/noir#6269)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Pull across
noir-lang/noir[#6558](AztecProtocol/aztec-packages#6558)
([#10037](AztecProtocol/aztec-packages#10037))
([3014a69](AztecProtocol/aztec-packages@3014a69))
* Pull out sync changes
([#10072](AztecProtocol/aztec-packages#10072))
([06ef61e](AztecProtocol/aztec-packages@06ef61e))
* Release Noir(0.38.0) (noir-lang/noir#6422)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Release Noir(0.39.0) (noir-lang/noir#6484)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Remove handling of duplicates from the note hash tree
([#10016](AztecProtocol/aztec-packages#10016))
([ece1d45](AztecProtocol/aztec-packages@ece1d45))
* Remove PublicExecutor
([#10028](AztecProtocol/aztec-packages#10028))
([9643dcd](AztecProtocol/aztec-packages@9643dcd))
* Remove separate acvm versioning
(noir-lang/noir#6561)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Remove some `_else_condition` tech debt
(noir-lang/noir#6522)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Remove some unnecessary clones
([#10049](AztecProtocol/aztec-packages#10049))
([8628b32](AztecProtocol/aztec-packages@8628b32))
* Remove unused imports
([#10134](AztecProtocol/aztec-packages#10134))
([8dbeda0](AztecProtocol/aztec-packages@8dbeda0))
* Remove unused methods from implicit numeric generics
(noir-lang/noir#6541)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Replace relative paths to noir-protocol-circuits
([ccf6695](AztecProtocol/aztec-packages@ccf6695))
* Replace relative paths to noir-protocol-circuits
([fa225a2](AztecProtocol/aztec-packages@fa225a2))
* Replace relative paths to noir-protocol-circuits
([98387b8](AztecProtocol/aztec-packages@98387b8))
* Replace relative paths to noir-protocol-circuits
([94753d4](AztecProtocol/aztec-packages@94753d4))
* Restructure `noirc_evaluator` crate
(noir-lang/noir#6534)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Revamp attributes (noir-lang/noir#6424)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Reverse ssa parser diff order
(noir-lang/noir#6511)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Revert
[#6375](AztecProtocol/aztec-packages#6375)
(noir-lang/noir#6552)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Skip emitting public bytecode
([#10009](AztecProtocol/aztec-packages#10009))
([280d169](AztecProtocol/aztec-packages@280d169))
* Split path and import lookups
(noir-lang/noir#6430)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **ssa:** Skip array_set pass for Brillig functions
(noir-lang/noir#6513)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Switch to 1.0.0-beta versioning
(noir-lang/noir#6503)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **test:** More descriptive labels in test matrix
(noir-lang/noir#6542)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **test:** Remove duplicate brillig tests
(noir-lang/noir#6523)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* **test:** Run test matrix on test_programs
(noir-lang/noir#6429)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))
* Update example to show how to split public inputs in bash
(noir-lang/noir#6472)
([b8bace9](AztecProtocol/aztec-packages@b8bace9))


### Documentation

* Add docs to enable multi-threading in bb.js
([#10064](AztecProtocol/aztec-packages#10064))
([8b4ebd1](AztecProtocol/aztec-packages@8b4ebd1))
* Re-arrange references section
([#10070](AztecProtocol/aztec-packages#10070))
([375482f](AztecProtocol/aztec-packages@375482f))
</details>

<details><summary>barretenberg: 0.64.0</summary>

##
[0.64.0](AztecProtocol/aztec-packages@barretenberg-v0.63.1...barretenberg-v0.64.0)
(2024-11-25)


### Features

* **avm:** Error handling for address resolution
([#9994](AztecProtocol/aztec-packages#9994))
([ceaeda5](AztecProtocol/aztec-packages@ceaeda5)),
closes
[#9131](AztecProtocol/aztec-packages#9131)
* Improve trace utilization tracking
([#10008](AztecProtocol/aztec-packages#10008))
([4c560ab](AztecProtocol/aztec-packages@4c560ab))
* Improved data storage metrics
([#10020](AztecProtocol/aztec-packages#10020))
([c6ab0c9](AztecProtocol/aztec-packages@c6ab0c9))
* Insert public data tree leaves one by one
([#9989](AztecProtocol/aztec-packages#9989))
([a2c0701](AztecProtocol/aztec-packages@a2c0701))
* IPA accumulators setup for Rollup
([#10040](AztecProtocol/aztec-packages#10040))
([4129e27](AztecProtocol/aztec-packages@4129e27))
* Single commitment key allocation in CIVC
([#9974](AztecProtocol/aztec-packages#9974))
([a0551ee](AztecProtocol/aztec-packages@a0551ee))


### Bug Fixes

* Strip wasm debug
([#9987](AztecProtocol/aztec-packages#9987))
([62a6b66](AztecProtocol/aztec-packages@62a6b66))
* Zero index is not always 0
([#10135](AztecProtocol/aztec-packages#10135))
([bbac3d9](AztecProtocol/aztec-packages@bbac3d9))


### Miscellaneous

* **avm:** Remove initialization for non-derived polynomials
([#10103](AztecProtocol/aztec-packages#10103))
([c6fdf4b](AztecProtocol/aztec-packages@c6fdf4b)),
closes
[#10096](AztecProtocol/aztec-packages#10096)
* Delete stray todos
([#10112](AztecProtocol/aztec-packages#10112))
([cc4139a](AztecProtocol/aztec-packages@cc4139a))
* Optimise polynomial initialisation
([#10073](AztecProtocol/aztec-packages#10073))
([e608742](AztecProtocol/aztec-packages@e608742))
* Remove handling of duplicates from the note hash tree
([#10016](AztecProtocol/aztec-packages#10016))
([ece1d45](AztecProtocol/aztec-packages@ece1d45))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
e2e-all CI: Enables this CI job.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants