-
Notifications
You must be signed in to change notification settings - Fork 270
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!: alternative key registry contract #7523
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Given that we need to relax the key constraints due to the potential attacks then this scheme really is a logical conclusion so I'll approve it once it's polished.
Also losing the hard guarantee of fresh keys seems fine to me. In that catastrophic scenario of getting keys leaked I would not care that much that I would potentially lose privacy of a few more notes in the next few blocks after the keys are rotated (someone sending me new notes using my old keys).
@nventuro or can you think of a more significant downside than this ^?
Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
This post argues why it's fine for senders to use old and leaked keys for some time. I think it's also fine to use new keys immediately - there's no reason we need a strict block of change since we don't need delayed actions. I see no downsides at all in this approach. |
Docs PreviewHey there! 👋 You can check your preview at https://66bcd2f709c381d716a6a8c6--aztec-docs-dev.netlify.app |
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Proof generationEach column represents the number of threads used in proof generation.
L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 8 txs.
Circuits statsStats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.
Stats on running time collected for app circuits
AVM SimulationTime to simulate various public functions in the AVM.
Public DB AccessTime to access various public DBs.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method | Metric | | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good
noir-projects/noir-contracts/contracts/new_key_registry_contract/src/main.nr
Outdated
Show resolved
Hide resolved
noir-projects/noir-contracts/contracts/new_key_registry_contract/src/main.nr
Show resolved
Hide resolved
noir-projects/noir-contracts/contracts/new_key_registry_contract/src/main.nr
Show resolved
Hide resolved
Co-authored-by: Jan Beneš <janbenes1234@gmail.com>
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.49.0</summary> ## [0.49.0](aztec-package-v0.48.0...aztec-package-v0.49.0) (2024-08-15) ### ⚠ BREAKING CHANGES * Sequencer no longer proves ([#7860](#7860)) ### Miscellaneous * Enable execute command on aws ecs services ([#7975](#7975)) ([4331bc6](4331bc6)) * Sequencer no longer proves ([#7860](#7860)) ([7168290](7168290)) * Terraform template for prover-node ([#7846](#7846)) ([546f946](546f946)) </details> <details><summary>barretenberg.js: 0.49.0</summary> ## [0.49.0](barretenberg.js-v0.48.0...barretenberg.js-v0.49.0) (2024-08-15) ### Miscellaneous * Pin yarn versions in noir-projects and bb/ts ([#7988](#7988)) ([83f33a1](83f33a1)) </details> <details><summary>aztec-packages: 0.49.0</summary> ## [0.49.0](aztec-packages-v0.48.0...aztec-packages-v0.49.0) (2024-08-15) ### ⚠ BREAKING CHANGES * alternative key registry contract ([#7523](#7523)) * Sequencer no longer proves ([#7860](#7860)) ### Features * Add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681) ([b1c7374](b1c7374)) * Add `Quoted::as_expr` and `Expr::as_function_call` (noir-lang/noir#5708) ([91042c7](91042c7)) * Add `Type::as_struct` (noir-lang/noir#5680) ([b1c7374](b1c7374)) * Add `Type::get_trait_impl` (noir-lang/noir#5716) ([ccbef55](ccbef55)) * Add `Type::implements` (noir-lang/noir#5701) ([91042c7](91042c7)) * Add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670) ([b1c7374](b1c7374)) * Add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678) ([b1c7374](b1c7374)) * Add a limited form of arithmetic on generics (noir-lang/noir#5625) ([b1c7374](b1c7374)) * Add array_to_str_lossy (noir-lang/noir#5613) ([b1c7374](b1c7374)) * Add generate-secret-and-hash to cli ([#7977](#7977)) ([cdf62a0](cdf62a0)) * Add mutating FunctionDefinition functions (noir-lang/noir#5685) ([b1c7374](b1c7374)) * Add proven flag to sent tx wait opts ([#7950](#7950)) ([e80e7d2](e80e7d2)) * Add some `Module` comptime functions (noir-lang/noir#5684) ([b1c7374](b1c7374)) * Alternative key registry contract ([#7523](#7523)) ([3e6a20f](3e6a20f)) * **avm:** More no fake rows + virtual dyn gas (part 1) ([#7942](#7942)) ([9e8ba96](9e8ba96)) * Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683) ([b1c7374](b1c7374)) * Destroy_note_unsafe ([#7891](#7891)) ([5cda7ba](5cda7ba)) * **docs:** Nits ([#7838](#7838)) ([a76c999](a76c999)) * Enable UltraHonk verifier ([#7923](#7923)) ([5e8b4a8](5e8b4a8)), closes [#7373](#7373) * Implement closures in the comptime interpreter (noir-lang/noir#5682) ([b1c7374](b1c7374)) * IVC integration tests using new accumulate model ([#7946](#7946)) ([c527ae9](c527ae9)) * LSP autocompletion for use statement (noir-lang/noir#5704) ([91042c7](91042c7)) * LSP closing brace hints (noir-lang/noir#5686) ([b1c7374](b1c7374)) * LSP fields, functions and methods completion after "." and "::" (noir-lang/noir#5714) ([ccbef55](ccbef55)) * LSP hover now includes "Go to" links (noir-lang/noir#5677) ([b1c7374](b1c7374)) * LSP path completion (noir-lang/noir#5712) ([91042c7](91042c7)) * **noir_js:** Expose UltraHonk and integration tests (noir-lang/noir#5656) ([b1c7374](b1c7374)) * Optimizing PrivateFPC ([#7980](#7980)) ([d018335](d018335)) * Private refunds optimizations ([#7968](#7968)) ([cea8295](cea8295)) * Resolve arguments to attributes (noir-lang/noir#5649) ([b1c7374](b1c7374)) * **ssa:** Simple serialization of unoptimized SSA to file (noir-lang/noir#5679) ([b1c7374](b1c7374)) * Sync from aztec-packages (noir-lang/noir#5718) ([ccbef55](ccbef55)) * Update honk ultra_recursive_verifier to do aggregation ([#7582](#7582)) ([a96a5ad](a96a5ad)) ### Bug Fixes * Add locations to most SSA instructions (noir-lang/noir#5697) ([b1c7374](b1c7374)) * Allow txs on block zero ([#7928](#7928)) ([5e25cd6](5e25cd6)) * Build error in e2e_block_building ([0d0646d](0d0646d)) * **debugger:** Update the debugger to handle the new Brillig debug metadata format (noir-lang/noir#5706) ([91042c7](91042c7)) * Delete forks after proving job has finished ([#7972](#7972)) ([2b4a842](2b4a842)) * Deploy verifier cmd ([#7983](#7983)) ([f4fa797](f4fa797)) * Derive generic types (noir-lang/noir#5674) ([b1c7374](b1c7374)) * Do not duplicate redundant Brillig debug metadata (noir-lang/noir#5696) ([b1c7374](b1c7374)) * Do not mount ssh agent on OSX ([#7991](#7991)) ([950db8e](950db8e)) * **docs:** Add redirects for website links ([#7979](#7979)) ([e890814](e890814)) * Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643) ([b1c7374](b1c7374)) * Fix where clause issue in items generated from attributes (noir-lang/noir#5673) ([b1c7374](b1c7374)) * Lay plumbing for having simulations throw an error if they cannot be added in a block ([#7839](#7839)) ([eedbc11](eedbc11)) * Let a trait impl that relies on another trait work (noir-lang/noir#5646) ([b1c7374](b1c7374)) * Only record bytecode if >0 ([#7932](#7932)) ([3f145b3](3f145b3)) * Remove missing file ([#7941](#7941)) ([4d9290f](4d9290f)) * Replace unused ArrayGet/Set with constrain if possibly out of bounds (noir-lang/noir#5691) ([ccbef55](ccbef55)) * Switch verify proof to arrays (noir-lang/noir#5664) ([b1c7374](b1c7374)) * Track L1 block for last L2 block body retrieved ([#7927](#7927)) ([cd36be4](cd36be4)), closes [#7918](#7918) * Unexpose get note nonces on pxe ([#7889](#7889)) ([163c3a6](163c3a6)) * Use data dir for lmdb forks ([#7973](#7973)) ([5b53d43](5b53d43)) * Workaround from_slice with nested slices (noir-lang/noir#5648) ([b1c7374](b1c7374)) ### Miscellaneous * Add docs tip about filenames between commands (noir-lang/noir#5695) ([b1c7374](b1c7374)) * Add env var to disable bb cleanup ([#7936](#7936)) ([806a370](806a370)) * Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688) ([b1c7374](b1c7374)) * Add tests for noir<>ivc integration testing ([#7931](#7931)) ([7cc47a6](7cc47a6)) * Allow passing custom executors to fuzzer (noir-lang/noir#5710) ([91042c7](91042c7)) * **avm:** Fewer errors unless testing ([#7943](#7943)) ([33b65a9](33b65a9)) * **bb:** Constexpr simplifications ([#7906](#7906)) ([65d3b7f](65d3b7f)) * **bb:** Prereq work for polynomial mem optimization ([#7949](#7949)) ([5ca5138](5ca5138)) * **ci:** Print detailed target timings ([#7934](#7934)) ([fb574aa](fb574aa)) * Do not clean up bb files on err ([#7985](#7985)) ([75c6768](75c6768)) * Enable execute command on aws ecs services ([#7975](#7975)) ([4331bc6](4331bc6)) * Ensure bootstrapped networks have no pending blocks when proving starts ([#7986](#7986)) ([fb471b3](fb471b3)) * Fork logs and prover job catch ([#7982](#7982)) ([69bde53](69bde53)) * Move siloing to reset ([#7871](#7871)) ([014b5f0](014b5f0)) * Pin yarn versions in noir-projects and bb/ts ([#7988](#7988)) ([83f33a1](83f33a1)) * Release Noir(0.33.0) (noir-lang/noir#5550) ([b1c7374](b1c7374)) * Replace relative paths to noir-protocol-circuits ([cd5f138](cd5f138)) * Replace relative paths to noir-protocol-circuits ([6f3cef9](6f3cef9)) * Replace relative paths to noir-protocol-circuits ([54c4441](54c4441)) * Replace VERSION with IMAGE on provernet template ([d5e48aa](d5e48aa)) * Sequencer no longer proves ([#7860](#7860)) ([7168290](7168290)) * Simplify registry ([#7939](#7939)) ([8e0418f](8e0418f)) * Terraform template for prover-node ([#7846](#7846)) ([546f946](546f946)) * Update provernet docker compose template ([#7929](#7929)) ([33d47d2](33d47d2)) * Updating token with refunds ([#7969](#7969)) ([504deba](504deba)) </details> <details><summary>barretenberg: 0.49.0</summary> ## [0.49.0](barretenberg-v0.48.0...barretenberg-v0.49.0) (2024-08-15) ### Features * **avm:** More no fake rows + virtual dyn gas (part 1) ([#7942](#7942)) ([9e8ba96](9e8ba96)) * IVC integration tests using new accumulate model ([#7946](#7946)) ([c527ae9](c527ae9)) * Update honk ultra_recursive_verifier to do aggregation ([#7582](#7582)) ([a96a5ad](a96a5ad)) ### Miscellaneous * **avm:** Fewer errors unless testing ([#7943](#7943)) ([33b65a9](33b65a9)) * **bb:** Constexpr simplifications ([#7906](#7906)) ([65d3b7f](65d3b7f)) * **bb:** Prereq work for polynomial mem optimization ([#7949](#7949)) ([5ca5138](5ca5138)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.49.0</summary> ## [0.49.0](AztecProtocol/aztec-packages@aztec-package-v0.48.0...aztec-package-v0.49.0) (2024-08-15) ### ⚠ BREAKING CHANGES * Sequencer no longer proves ([#7860](AztecProtocol/aztec-packages#7860)) ### Miscellaneous * Enable execute command on aws ecs services ([#7975](AztecProtocol/aztec-packages#7975)) ([4331bc6](AztecProtocol/aztec-packages@4331bc6)) * Sequencer no longer proves ([#7860](AztecProtocol/aztec-packages#7860)) ([7168290](AztecProtocol/aztec-packages@7168290)) * Terraform template for prover-node ([#7846](AztecProtocol/aztec-packages#7846)) ([546f946](AztecProtocol/aztec-packages@546f946)) </details> <details><summary>barretenberg.js: 0.49.0</summary> ## [0.49.0](AztecProtocol/aztec-packages@barretenberg.js-v0.48.0...barretenberg.js-v0.49.0) (2024-08-15) ### Miscellaneous * Pin yarn versions in noir-projects and bb/ts ([#7988](AztecProtocol/aztec-packages#7988)) ([83f33a1](AztecProtocol/aztec-packages@83f33a1)) </details> <details><summary>aztec-packages: 0.49.0</summary> ## [0.49.0](AztecProtocol/aztec-packages@aztec-packages-v0.48.0...aztec-packages-v0.49.0) (2024-08-15) ### ⚠ BREAKING CHANGES * alternative key registry contract ([#7523](AztecProtocol/aztec-packages#7523)) * Sequencer no longer proves ([#7860](AztecProtocol/aztec-packages#7860)) ### Features * Add `FunctionDefinition::parameters`, `FunctionDefinition::return_type` and `impl Eq for Quoted` (noir-lang/noir#5681) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add `Quoted::as_expr` and `Expr::as_function_call` (noir-lang/noir#5708) ([91042c7](AztecProtocol/aztec-packages@91042c7)) * Add `Type::as_struct` (noir-lang/noir#5680) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add `Type::get_trait_impl` (noir-lang/noir#5716) ([ccbef55](AztecProtocol/aztec-packages@ccbef55)) * Add `Type::implements` (noir-lang/noir#5701) ([91042c7](AztecProtocol/aztec-packages@91042c7)) * Add `Type::is_field` and `Type::as_integer` (noir-lang/noir#5670) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add `Type` methods: `as_tuple`, `as_slice`, `as_array`, `as_constant`, `is_bool` (noir-lang/noir#5678) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add a limited form of arithmetic on generics (noir-lang/noir#5625) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add array_to_str_lossy (noir-lang/noir#5613) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add generate-secret-and-hash to cli ([#7977](AztecProtocol/aztec-packages#7977)) ([cdf62a0](AztecProtocol/aztec-packages@cdf62a0)) * Add mutating FunctionDefinition functions (noir-lang/noir#5685) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add proven flag to sent tx wait opts ([#7950](AztecProtocol/aztec-packages#7950)) ([e80e7d2](AztecProtocol/aztec-packages@e80e7d2)) * Add some `Module` comptime functions (noir-lang/noir#5684) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Alternative key registry contract ([#7523](AztecProtocol/aztec-packages#7523)) ([3e6a20f](AztecProtocol/aztec-packages@3e6a20f)) * **avm:** More no fake rows + virtual dyn gas (part 1) ([#7942](AztecProtocol/aztec-packages#7942)) ([9e8ba96](AztecProtocol/aztec-packages@9e8ba96)) * Derive `Ord` and `Hash` in the stdlib; add `std::meta::make_impl` helper (noir-lang/noir#5683) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Destroy_note_unsafe ([#7891](AztecProtocol/aztec-packages#7891)) ([5cda7ba](AztecProtocol/aztec-packages@5cda7ba)) * **docs:** Nits ([#7838](AztecProtocol/aztec-packages#7838)) ([a76c999](AztecProtocol/aztec-packages@a76c999)) * Enable UltraHonk verifier ([#7923](AztecProtocol/aztec-packages#7923)) ([5e8b4a8](AztecProtocol/aztec-packages@5e8b4a8)), closes [#7373](AztecProtocol/aztec-packages#7373) * Implement closures in the comptime interpreter (noir-lang/noir#5682) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * IVC integration tests using new accumulate model ([#7946](AztecProtocol/aztec-packages#7946)) ([c527ae9](AztecProtocol/aztec-packages@c527ae9)) * LSP autocompletion for use statement (noir-lang/noir#5704) ([91042c7](AztecProtocol/aztec-packages@91042c7)) * LSP closing brace hints (noir-lang/noir#5686) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * LSP fields, functions and methods completion after "." and "::" (noir-lang/noir#5714) ([ccbef55](AztecProtocol/aztec-packages@ccbef55)) * LSP hover now includes "Go to" links (noir-lang/noir#5677) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * LSP path completion (noir-lang/noir#5712) ([91042c7](AztecProtocol/aztec-packages@91042c7)) * **noir_js:** Expose UltraHonk and integration tests (noir-lang/noir#5656) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Optimizing PrivateFPC ([#7980](AztecProtocol/aztec-packages#7980)) ([d018335](AztecProtocol/aztec-packages@d018335)) * Private refunds optimizations ([#7968](AztecProtocol/aztec-packages#7968)) ([cea8295](AztecProtocol/aztec-packages@cea8295)) * Resolve arguments to attributes (noir-lang/noir#5649) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * **ssa:** Simple serialization of unoptimized SSA to file (noir-lang/noir#5679) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Sync from aztec-packages (noir-lang/noir#5718) ([ccbef55](AztecProtocol/aztec-packages@ccbef55)) * Update honk ultra_recursive_verifier to do aggregation ([#7582](AztecProtocol/aztec-packages#7582)) ([a96a5ad](AztecProtocol/aztec-packages@a96a5ad)) ### Bug Fixes * Add locations to most SSA instructions (noir-lang/noir#5697) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Allow txs on block zero ([#7928](AztecProtocol/aztec-packages#7928)) ([5e25cd6](AztecProtocol/aztec-packages@5e25cd6)) * Build error in e2e_block_building ([0d0646d](AztecProtocol/aztec-packages@0d0646d)) * **debugger:** Update the debugger to handle the new Brillig debug metadata format (noir-lang/noir#5706) ([91042c7](AztecProtocol/aztec-packages@91042c7)) * Delete forks after proving job has finished ([#7972](AztecProtocol/aztec-packages#7972)) ([2b4a842](AztecProtocol/aztec-packages@2b4a842)) * Deploy verifier cmd ([#7983](AztecProtocol/aztec-packages#7983)) ([f4fa797](AztecProtocol/aztec-packages@f4fa797)) * Derive generic types (noir-lang/noir#5674) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Do not duplicate redundant Brillig debug metadata (noir-lang/noir#5696) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Do not mount ssh agent on OSX ([#7991](AztecProtocol/aztec-packages#7991)) ([950db8e](AztecProtocol/aztec-packages@950db8e)) * **docs:** Add redirects for website links ([#7979](AztecProtocol/aztec-packages#7979)) ([e890814](AztecProtocol/aztec-packages@e890814)) * Elaborate struct & trait annotations in the correct module (noir-lang/noir#5643) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Fix where clause issue in items generated from attributes (noir-lang/noir#5673) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Lay plumbing for having simulations throw an error if they cannot be added in a block ([#7839](AztecProtocol/aztec-packages#7839)) ([eedbc11](AztecProtocol/aztec-packages@eedbc11)) * Let a trait impl that relies on another trait work (noir-lang/noir#5646) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Only record bytecode if >0 ([#7932](AztecProtocol/aztec-packages#7932)) ([3f145b3](AztecProtocol/aztec-packages@3f145b3)) * Remove missing file ([#7941](AztecProtocol/aztec-packages#7941)) ([4d9290f](AztecProtocol/aztec-packages@4d9290f)) * Replace unused ArrayGet/Set with constrain if possibly out of bounds (noir-lang/noir#5691) ([ccbef55](AztecProtocol/aztec-packages@ccbef55)) * Switch verify proof to arrays (noir-lang/noir#5664) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Track L1 block for last L2 block body retrieved ([#7927](AztecProtocol/aztec-packages#7927)) ([cd36be4](AztecProtocol/aztec-packages@cd36be4)), closes [#7918](AztecProtocol/aztec-packages#7918) * Unexpose get note nonces on pxe ([#7889](AztecProtocol/aztec-packages#7889)) ([163c3a6](AztecProtocol/aztec-packages@163c3a6)) * Use data dir for lmdb forks ([#7973](AztecProtocol/aztec-packages#7973)) ([5b53d43](AztecProtocol/aztec-packages@5b53d43)) * Workaround from_slice with nested slices (noir-lang/noir#5648) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) ### Miscellaneous * Add docs tip about filenames between commands (noir-lang/noir#5695) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add env var to disable bb cleanup ([#7936](AztecProtocol/aztec-packages#7936)) ([806a370](AztecProtocol/aztec-packages@806a370)) * Add parser support for `<MyType as Trait>::ident` (noir-lang/noir#5688) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Add tests for noir<>ivc integration testing ([#7931](AztecProtocol/aztec-packages#7931)) ([7cc47a6](AztecProtocol/aztec-packages@7cc47a6)) * Allow passing custom executors to fuzzer (noir-lang/noir#5710) ([91042c7](AztecProtocol/aztec-packages@91042c7)) * **avm:** Fewer errors unless testing ([#7943](AztecProtocol/aztec-packages#7943)) ([33b65a9](AztecProtocol/aztec-packages@33b65a9)) * **bb:** Constexpr simplifications ([#7906](AztecProtocol/aztec-packages#7906)) ([65d3b7f](AztecProtocol/aztec-packages@65d3b7f)) * **bb:** Prereq work for polynomial mem optimization ([#7949](AztecProtocol/aztec-packages#7949)) ([5ca5138](AztecProtocol/aztec-packages@5ca5138)) * **ci:** Print detailed target timings ([#7934](AztecProtocol/aztec-packages#7934)) ([fb574aa](AztecProtocol/aztec-packages@fb574aa)) * Do not clean up bb files on err ([#7985](AztecProtocol/aztec-packages#7985)) ([75c6768](AztecProtocol/aztec-packages@75c6768)) * Enable execute command on aws ecs services ([#7975](AztecProtocol/aztec-packages#7975)) ([4331bc6](AztecProtocol/aztec-packages@4331bc6)) * Ensure bootstrapped networks have no pending blocks when proving starts ([#7986](AztecProtocol/aztec-packages#7986)) ([fb471b3](AztecProtocol/aztec-packages@fb471b3)) * Fork logs and prover job catch ([#7982](AztecProtocol/aztec-packages#7982)) ([69bde53](AztecProtocol/aztec-packages@69bde53)) * Move siloing to reset ([#7871](AztecProtocol/aztec-packages#7871)) ([014b5f0](AztecProtocol/aztec-packages@014b5f0)) * Pin yarn versions in noir-projects and bb/ts ([#7988](AztecProtocol/aztec-packages#7988)) ([83f33a1](AztecProtocol/aztec-packages@83f33a1)) * Release Noir(0.33.0) (noir-lang/noir#5550) ([b1c7374](AztecProtocol/aztec-packages@b1c7374)) * Replace relative paths to noir-protocol-circuits ([cd5f138](AztecProtocol/aztec-packages@cd5f138)) * Replace relative paths to noir-protocol-circuits ([6f3cef9](AztecProtocol/aztec-packages@6f3cef9)) * Replace relative paths to noir-protocol-circuits ([54c4441](AztecProtocol/aztec-packages@54c4441)) * Replace VERSION with IMAGE on provernet template ([d5e48aa](AztecProtocol/aztec-packages@d5e48aa)) * Sequencer no longer proves ([#7860](AztecProtocol/aztec-packages#7860)) ([7168290](AztecProtocol/aztec-packages@7168290)) * Simplify registry ([#7939](AztecProtocol/aztec-packages#7939)) ([8e0418f](AztecProtocol/aztec-packages@8e0418f)) * Terraform template for prover-node ([#7846](AztecProtocol/aztec-packages#7846)) ([546f946](AztecProtocol/aztec-packages@546f946)) * Update provernet docker compose template ([#7929](AztecProtocol/aztec-packages#7929)) ([33d47d2](AztecProtocol/aztec-packages@33d47d2)) * Updating token with refunds ([#7969](AztecProtocol/aztec-packages#7969)) ([504deba](AztecProtocol/aztec-packages@504deba)) </details> <details><summary>barretenberg: 0.49.0</summary> ## [0.49.0](AztecProtocol/aztec-packages@barretenberg-v0.48.0...barretenberg-v0.49.0) (2024-08-15) ### Features * **avm:** More no fake rows + virtual dyn gas (part 1) ([#7942](AztecProtocol/aztec-packages#7942)) ([9e8ba96](AztecProtocol/aztec-packages@9e8ba96)) * IVC integration tests using new accumulate model ([#7946](AztecProtocol/aztec-packages#7946)) ([c527ae9](AztecProtocol/aztec-packages@c527ae9)) * Update honk ultra_recursive_verifier to do aggregation ([#7582](AztecProtocol/aztec-packages#7582)) ([a96a5ad](AztecProtocol/aztec-packages@a96a5ad)) ### Miscellaneous * **avm:** Fewer errors unless testing ([#7943](AztecProtocol/aztec-packages#7943)) ([33b65a9](AztecProtocol/aztec-packages@33b65a9)) * **bb:** Constexpr simplifications ([#7906](AztecProtocol/aztec-packages#7906)) ([65d3b7f](AztecProtocol/aztec-packages@65d3b7f)) * **bb:** Prereq work for polynomial mem optimization ([#7949](AztecProtocol/aztec-packages#7949)) ([5ca5138](AztecProtocol/aztec-packages@5ca5138)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This is a tentative redesign of the key registry contract, which lets us read all 4 keys in a single merkle inclusion proof, while also performing fewer public storage writes. It relies on
PublicMutable
with custom deadlines instead ofSharedMutable
as the key registry must be lax during reads to prevent abuse from accounts performing frequent rotation.This is meant to be a proof of concept and reference for discussion, so there are no tests yet. If we were to adopt this contract it should be relatively straightforward to replace the current getters with
get_current_public_keys
.Update: we've now decided to move forward with this design, even if whether we actually do have full key rotation is up for debate. This is a good middle ground in terms of the code being performant and easy to either add or remove rotation in the future.
What this PR does is introduce the new registry and switch all old contracts to use it. They'll be using historical mode, i.e. reading keys at a specific block in the past instead of reading the current keys, resulting in no max block number constraints. This is a departure from the current behavior, but is only temporary until we switch over from the old API to the new one (#7953) so that we can then benefit from reduce gate counts (#7954). I've also left the original contract, libraries, etc., unmodified so as to later delete them cleanly instead of making this PR too messy (#7955).