-
Notifications
You must be signed in to change notification settings - Fork 257
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!: shared mutable configurable delays #6104
Conversation
Before looking at any code, just based on the description:
This is not clear to me, how? My intuition is that it is something with different delays that is I'm getting mixed up in the explanation, but if same delay then it is not clear to me.
Again, would be great with a bit info on why here, I might just be an idiot though.
|
Imagine you're building a historical proof off of block 200. The delay then was 50, so you may think the earliest the value could change would be 251 (if someone scheduled at 201), and set However, if a delay reduction was scheduled to take place at block 210, reducing the delay to 20, then someone could wait until 210, schedule then, and have the value change at block 230, way before you imagined. These 30 blocks are the 'effective delay' in this case. There's multiple mentions of this concept as well as diagrams throughout the code.
The meaning of the block horizon is 'what's the latest block in which you still know the current value will remain, regardless of what anyone else does'. We don't care about what the delay might be in the future, what we are interested in is how it can be used to schedule value changes, which is what we're actually reading. |
I gave the
The initial value would be shared by all map entries, yes, as it'll be part of the type in the map: roles: Map<AztecAdddress, SharedMutable<UserRoles, INITIAL_USER_ROLE_CHANGE_DELAY>>, If your application does not require the per-user delays to be different, then you can just never call |
I followed the pattern described above and run into no major issues, other than some minor syntax annoyance due to noir-lang/noir#4710. The serde implementation is also a nice example of bitpacking in a single field. |
Docs PreviewHey there! 👋 You can check your preview at https://663cffb0143d031c9c976b18--aztec-docs-dev.netlify.app |
I just realized I also had to update |
LGTM, also great explanations in the comments. Great job! 🚀 |
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.
This is great. Have added a few comments mainly to comments and me being a simpleton needing more hand-holding.
|
||
/// Returns the current value of the delay stored in the data structure. | ||
/// This function only returns a meaningful value when called in public with the current block number - for | ||
//// historical private reads use `get_effective_minimum_delay_at` instead. |
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.
There are a lot of / in here. Inconsistent number of / for comments throughout the code.
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Show resolved
Hide resolved
/// The block at which the new delay will become effective is determined automatically: | ||
/// - when increasing the delay, the change is effective immediately | ||
/// - when reducing the delay, the change will take effect after a delay equal to the difference between old and | ||
/// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2 |
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.
The scheduling is always a little weird in my head. So for this case, if I have an initial delay of 3 days, and do any reduction, that change will take effect such that the value can be changed after 3 days.
Can you explain again the reason of doing that in here. Just that when I read this, my simply mind is like "why?", if you had the original 3 day delay as the block of change that seems easier to follow.
The benefit was that you avoid having this weird "almost change" period where if it is queued and I insert a change at block N, it might take 3 days before effective and N+1 might take 1 day (with your example). The comment is inside the function, but when I just read here I go "huh" and then write all this blabber before I see it 😆
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.
I'm not sure if you're asking 'why are we waiting the minimum amount of time instead of always simply waiting a longer time?', or if you're not sure why this is the correct amount of time to wait 🤔
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.
Kinda both actually. When I read:
when reducing the delay, the change will take effect after a delay equal to the difference between old and new delay
It is not instantly clear to me why we use that and why that is the shortest time (i might be idiot) and I had to think about it 🤯.
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.
From past experience it can be very annoying to be forced to wait extra time when you don't need to (e.g. if decreasing a delay from a month to two weeks, having to wait a total of 4 vs 6 weeks is a big difference). Hopefully most people will be relatively satisfied with the behavior and not be nerd-sniped by the API reference?
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.
Sure, I get why, was just not something that instantly clicked for me just from the comment. But think that might just be me reading comprehension 😆
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr
Show resolved
Hide resolved
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.
Beautiful and very thorough work. Added just some nits
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_delay_change.nr
Outdated
Show resolved
Hide resolved
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/scheduled_value_change.nr
Outdated
Show resolved
Hide resolved
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.
Love the explanations. 🙌 🙏
Co-authored-by: Jan Beneš <[email protected]> Co-authored-by: Lasse Herskind <[email protected]>
/// The block at which the new delay will become effective is determined automatically: | ||
/// - when increasing the delay, the change is effective immediately | ||
/// - when reducing the delay, the change will take effect after a delay equal to the difference between old and | ||
/// new delay. For example, if reducing from 3 days to 1 day, the reduction will be scheduled to happen after 2 |
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.
Kinda both actually. When I read:
when reducing the delay, the change will take effect after a delay equal to the difference between old and new delay
It is not instantly clear to me why we use that and why that is the shortest time (i might be idiot) and I had to think about it 🤯.
noir-projects/aztec-nr/aztec/src/state_vars/shared_mutable/shared_mutable.nr
Show resolved
Hide resolved
docs/docs/developers/contracts/references/storage/shared_state.md
Outdated
Show resolved
Hide resolved
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.39.0</summary> ## [0.39.0](aztec-package-v0.38.0...aztec-package-v0.39.0) (2024-05-14) ### Features * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) </details> <details><summary>barretenberg.js: 0.39.0</summary> ## [0.39.0](barretenberg.js-v0.38.0...barretenberg.js-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ### Features * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) </details> <details><summary>aztec-packages: 0.39.0</summary> ## [0.39.0](aztec-packages-v0.38.0...aztec-packages-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * shared mutable configurable delays ([#6104](#6104)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Add `Not` trait to stdlib (noir-lang/noir#4999) ([11cde44](11cde44)) * Add support for u16/i16 (noir-lang/noir#4985) ([11cde44](11cde44)) * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * **avm-simulator:** Error stack tracking and enriching in AVM to match ACVM/ACIR-SIM ([#6289](#6289)) ([5c1f895](5c1f895)) * **aztec-nr:** Add 'with_gas()' function to avm call interface ([#6256](#6256)) ([0aedd23](0aedd23)) * **aztec-nr:** Add enqueue functions to AvmCallInterface ([#6264](#6264)) ([1c74387](1c74387)) * Build-images as earthly. ([#6194](#6194)) ([67fedf1](67fedf1)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Encrypted log body ([#6251](#6251)) ([ba618d5](ba618d5)) * Enforce note hash read requests to read within own contract ([#6310](#6310)) ([bd10595](bd10595)) * Expose `set_as_fee_payer` and test it in e2e ([#6380](#6380)) ([a8274f3](a8274f3)) * Implement `ops` traits on `u16`/`i16` (noir-lang/noir#4996) ([11cde44](11cde44)) * Increase default expression width to 4 (noir-lang/noir#4995) ([11cde44](11cde44)) * Move abi demonomorphizer to noir_codegen and use noir_codegen in protocol types ([#6302](#6302)) ([690e500](690e500)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * Plumb fee payer ([#6286](#6286)) ([1f8fd1c](1f8fd1c)) * Private Kernel Recursion ([#6278](#6278)) ([eae5822](eae5822)) * Proper padding in ts AES and constrained AES in body and header computations ([#6269](#6269)) ([ef9cdde](ef9cdde)) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) * Re-enabling authwit constraint ([#6323](#6323)) ([aa06d55](aa06d55)), closes [#5830](#5830) * Remove query to backend to get expression width (noir-lang/noir#4975) ([11cde44](11cde44)) * Replacing mentions to aztec-starter with codespace methods ([#6177](#6177)) ([63e8788](63e8788)) * Return gas usage per phase from node tx simulation ([#6255](#6255)) ([fb58dfc](fb58dfc)) * Shared mutable configurable delays ([#6104](#6104)) ([c191a40](c191a40)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * Sync from aztec-packages (noir-lang/noir#4993) ([11cde44](11cde44)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * `CombinedConstantData` not registered for serialization ([#6292](#6292)) ([89ab8ee](89ab8ee)) * **avm-context:** Enqueueing of public from private ([#6299](#6299)) ([bd2ccf0](bd2ccf0)) * **avm-simulator:** Always set revertReason when reverting ([#6297](#6297)) ([cc59981](cc59981)) * **avm-simulator:** Correctly create call stack in shallow assertions ([#6274](#6274)) ([f6045fd](f6045fd)) * **avm-simulator:** Fix env getters ([#6357](#6357)) ([485fe40](485fe40)) * **avm-simulator:** Fix message sender ([#6331](#6331)) ([f7e2d26](f7e2d26)) * **avm-simulator:** Fix test expectation ([#6293](#6293)) ([f51acfa](f51acfa)) * **avm-simulator:** Rethrow nested assertions ([#6275](#6275)) ([cd05b91](cd05b91)) * **avm-transpiler:** Patch debug infos with modified PCs ([#6371](#6371)) ([c36f0fa](c36f0fa)) * Check for public args in aztec functions ([#6355](#6355)) ([219efd6](219efd6)) * **ci:** Bench list ([#6282](#6282)) ([2652576](2652576)) * **circuits.js:** Fix nullifier non existent hints ([#6346](#6346)) ([297779a](297779a)) * **ci:** Stop mass serialization ([#6290](#6290)) ([60104e9](60104e9)) * Defer overflow checks for unsigned integers to acir-gen (noir-lang/noir#4832) ([11cde44](11cde44)) * Enable client proof tests ([#6249](#6249)) ([6d3a800](6d3a800)) * Ignore no_predicates in brillig functions (noir-lang/noir#5012) ([3cda21a](3cda21a)) * Noir_js import ([#6381](#6381)) ([e9c7e5f](e9c7e5f)) * Pw/update merge check ([#6201](#6201)) ([856657f](856657f)) * Run noir browser tests in series ([#6232](#6232)) ([e092514](e092514)) * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) * Adding name shadowing tests template program (noir-lang/noir#4799) ([11cde44](11cde44)) * **avm-context:** Implement Empty ([#6303](#6303)) ([27534ac](27534ac)) * **avm-simulator:** Add U128 overflow tests to AVM simulator ([#6281](#6281)) ([5514143](5514143)) * Bump public bytecode size to 40000 in prep for AVM migration ([#6266](#6266)) ([2b61123](2b61123)) * Bump timeout for after-hook for data store test ([#6364](#6364)) ([18eca39](18eca39)) * **ci:** Fix master, better spot copy times ([#6374](#6374)) ([fee7649](fee7649)) * **ci:** Hotfix runner checks ([#6373](#6373)) ([d5fd668](d5fd668)) * **ci:** Reuse ssh connections ([#6382](#6382)) ([5f6c31e](5f6c31e)) * **ci:** Revert inline cache push for now ([#6318](#6318)) ([4c9bfb0](4c9bfb0)) * **ci:** Run clippy on benchmarks (noir-lang/noir#4988) ([11cde44](11cde44)) * **ci:** Run e2e on isolated spots ([#6287](#6287)) ([e7d2dd6](e7d2dd6)) * **ci:** Spot health fix, earthly workarounds ([#6379](#6379)) ([da7573c](da7573c)) * **ci:** Stability after spot changes ([#6367](#6367)) ([7ad4179](7ad4179)) * **ci:** Use on-demand runners ([#6311](#6311)) ([dba835d](dba835d)) * Deploying accounts after key registry ([#6322](#6322)) ([84878d1](84878d1)) * Disable `gates_report.yml` (noir-lang/noir#4997) ([11cde44](11cde44)) * **docs:** Update contract deployments page ([#6319](#6319)) ([2e331b5](2e331b5)) * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Enforce formatting of noir code ([#6271](#6271)) ([356f7bb](356f7bb)) * **experimental:** Add compiler option to enable the Elaborator (noir-lang/noir#5003) ([3cda21a](3cda21a)) * **experimental:** Add Elaborator pass (noir-lang/noir#4992) ([3cda21a](3cda21a)) * Make coinbase and fee_recipient inaccessible ([#6375](#6375)) ([ded28b7](ded28b7)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Pw/refactor bb prover ([#6349](#6349)) ([8eb0398](8eb0398)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Replace relative paths to noir-protocol-circuits ([fd40d99](fd40d99)) * Replace relative paths to noir-protocol-circuits ([53dbcb5](53dbcb5)) * Replace relative paths to noir-protocol-circuits ([48e07c3](48e07c3)) * Replace relative paths to noir-protocol-circuits ([6532725](6532725)) * Replace relative paths to noir-protocol-circuits ([8330f70](8330f70)) * Replace relative paths to noir-protocol-circuits ([484741a](484741a)) * Replacing old pub key oracle with get_ivpk_m ([#6219](#6219)) ([9acc9ec](9acc9ec)) * Siloing in tails ([#6167](#6167)) ([c20dd50](c20dd50)) * Simplify nargo CLI to read from artifacts ([#6279](#6279)) ([b2c019b](b2c019b)) * Skip formatting informattable comments ([#6288](#6288)) ([95b499b](95b499b)) * Split `ops` into `arith` and `bit` modules (noir-lang/noir#4989) ([11cde44](11cde44)) * **test-contracts:** Prepare e2e_token_contract+ error msgs for AVM migration ([#6307](#6307)) ([0c20f44](0c20f44)) * Update cspell for abi demonomorphizer ([#6258](#6258)) ([ce2d43c](ce2d43c)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) * Validating private call data ([#6316](#6316)) ([84b9fcd](84b9fcd)) ### Documentation * Call types ([#5472](#5472)) ([1ca0d28](1ca0d28)) * Re-add and update accounts docs ([#6345](#6345)) ([4926d15](4926d15)) * Updated protocol specs ([#6341](#6341)) ([a0f82db](a0f82db)) </details> <details><summary>barretenberg: 0.39.0</summary> ## [0.39.0](barretenberg-v0.38.0...barretenberg-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) </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.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@aztec-package-v0.38.0...aztec-package-v0.39.0) (2024-05-14) ### Features * **p2p:** GossibSub ([#6170](AztecProtocol/aztec-packages#6170)) ([98d32f1](AztecProtocol/aztec-packages@98d32f1)), closes [#5055](AztecProtocol/aztec-packages#5055) * PublicKeys struct ([#6333](AztecProtocol/aztec-packages#6333)) ([2633cfc](AztecProtocol/aztec-packages@2633cfc)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](AztecProtocol/aztec-packages#6300)) ([9c30759](AztecProtocol/aztec-packages@9c30759)), closes [#5834](AztecProtocol/aztec-packages#5834) </details> <details><summary>barretenberg.js: 0.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@barretenberg.js-v0.38.0...barretenberg.js-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ### Features * Switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ([78adcc0](AztecProtocol/aztec-packages@78adcc0)) </details> <details><summary>aztec-packages: 0.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@aztec-packages-v0.38.0...aztec-packages-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) * shared mutable configurable delays ([#6104](AztecProtocol/aztec-packages#6104)) * specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ### Features * Add `Not` trait to stdlib (noir-lang/noir#4999) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Add support for u16/i16 (noir-lang/noir#4985) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Avm support for public input columns ([#5700](AztecProtocol/aztec-packages#5700)) ([8cf9168](AztecProtocol/aztec-packages@8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](AztecProtocol/aztec-packages#6308)) ([6374a32](AztecProtocol/aztec-packages@6374a32)) * **avm-simulator:** Error stack tracking and enriching in AVM to match ACVM/ACIR-SIM ([#6289](AztecProtocol/aztec-packages#6289)) ([5c1f895](AztecProtocol/aztec-packages@5c1f895)) * **aztec-nr:** Add 'with_gas()' function to avm call interface ([#6256](AztecProtocol/aztec-packages#6256)) ([0aedd23](AztecProtocol/aztec-packages@0aedd23)) * **aztec-nr:** Add enqueue functions to AvmCallInterface ([#6264](AztecProtocol/aztec-packages#6264)) ([1c74387](AztecProtocol/aztec-packages@1c74387)) * Build-images as earthly. ([#6194](AztecProtocol/aztec-packages#6194)) ([67fedf1](AztecProtocol/aztec-packages@67fedf1)) * Div opcode ([#6053](AztecProtocol/aztec-packages#6053)) ([8e111f8](AztecProtocol/aztec-packages@8e111f8)) * Encrypted log body ([#6251](AztecProtocol/aztec-packages#6251)) ([ba618d5](AztecProtocol/aztec-packages@ba618d5)) * Enforce note hash read requests to read within own contract ([#6310](AztecProtocol/aztec-packages#6310)) ([bd10595](AztecProtocol/aztec-packages@bd10595)) * Expose `set_as_fee_payer` and test it in e2e ([#6380](AztecProtocol/aztec-packages#6380)) ([a8274f3](AztecProtocol/aztec-packages@a8274f3)) * Implement `ops` traits on `u16`/`i16` (noir-lang/noir#4996) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Increase default expression width to 4 (noir-lang/noir#4995) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Move abi demonomorphizer to noir_codegen and use noir_codegen in protocol types ([#6302](AztecProtocol/aztec-packages#6302)) ([690e500](AztecProtocol/aztec-packages@690e500)) * Move to_radix to a blackbox ([#6294](AztecProtocol/aztec-packages#6294)) ([ac27376](AztecProtocol/aztec-packages@ac27376)) * **p2p:** GossibSub ([#6170](AztecProtocol/aztec-packages#6170)) ([98d32f1](AztecProtocol/aztec-packages@98d32f1)), closes [#5055](AztecProtocol/aztec-packages#5055) * Plumb fee payer ([#6286](AztecProtocol/aztec-packages#6286)) ([1f8fd1c](AztecProtocol/aztec-packages@1f8fd1c)) * Private Kernel Recursion ([#6278](AztecProtocol/aztec-packages#6278)) ([eae5822](AztecProtocol/aztec-packages@eae5822)) * Proper padding in ts AES and constrained AES in body and header computations ([#6269](AztecProtocol/aztec-packages#6269)) ([ef9cdde](AztecProtocol/aztec-packages@ef9cdde)) * PublicKeys struct ([#6333](AztecProtocol/aztec-packages#6333)) ([2633cfc](AztecProtocol/aztec-packages@2633cfc)) * Re-enabling authwit constraint ([#6323](AztecProtocol/aztec-packages#6323)) ([aa06d55](AztecProtocol/aztec-packages@aa06d55)), closes [#5830](AztecProtocol/aztec-packages#5830) * Remove query to backend to get expression width (noir-lang/noir#4975) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Replacing mentions to aztec-starter with codespace methods ([#6177](AztecProtocol/aztec-packages#6177)) ([63e8788](AztecProtocol/aztec-packages@63e8788)) * Return gas usage per phase from node tx simulation ([#6255](AztecProtocol/aztec-packages#6255)) ([fb58dfc](AztecProtocol/aztec-packages@fb58dfc)) * Shared mutable configurable delays ([#6104](AztecProtocol/aztec-packages#6104)) ([c191a40](AztecProtocol/aztec-packages@c191a40)) * Small translator optimisations ([#6354](AztecProtocol/aztec-packages#6354)) ([ba6c42e](AztecProtocol/aztec-packages@ba6c42e)) * Specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ([01d9f24](AztecProtocol/aztec-packages@01d9f24)) * Structured trace in client ivc ([#6132](AztecProtocol/aztec-packages#6132)) ([92c1478](AztecProtocol/aztec-packages@92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ([78adcc0](AztecProtocol/aztec-packages@78adcc0)) * Sync from aztec-packages (noir-lang/noir#4993) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * ToRadix BB + avm transpiler support ([#6330](AztecProtocol/aztec-packages#6330)) ([c3c602f](AztecProtocol/aztec-packages@c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](AztecProtocol/aztec-packages#5739)) ([3250a8a](AztecProtocol/aztec-packages@3250a8a)) ### Bug Fixes * `CombinedConstantData` not registered for serialization ([#6292](AztecProtocol/aztec-packages#6292)) ([89ab8ee](AztecProtocol/aztec-packages@89ab8ee)) * **avm-context:** Enqueueing of public from private ([#6299](AztecProtocol/aztec-packages#6299)) ([bd2ccf0](AztecProtocol/aztec-packages@bd2ccf0)) * **avm-simulator:** Always set revertReason when reverting ([#6297](AztecProtocol/aztec-packages#6297)) ([cc59981](AztecProtocol/aztec-packages@cc59981)) * **avm-simulator:** Correctly create call stack in shallow assertions ([#6274](AztecProtocol/aztec-packages#6274)) ([f6045fd](AztecProtocol/aztec-packages@f6045fd)) * **avm-simulator:** Fix env getters ([#6357](AztecProtocol/aztec-packages#6357)) ([485fe40](AztecProtocol/aztec-packages@485fe40)) * **avm-simulator:** Fix message sender ([#6331](AztecProtocol/aztec-packages#6331)) ([f7e2d26](AztecProtocol/aztec-packages@f7e2d26)) * **avm-simulator:** Fix test expectation ([#6293](AztecProtocol/aztec-packages#6293)) ([f51acfa](AztecProtocol/aztec-packages@f51acfa)) * **avm-simulator:** Rethrow nested assertions ([#6275](AztecProtocol/aztec-packages#6275)) ([cd05b91](AztecProtocol/aztec-packages@cd05b91)) * **avm-transpiler:** Patch debug infos with modified PCs ([#6371](AztecProtocol/aztec-packages#6371)) ([c36f0fa](AztecProtocol/aztec-packages@c36f0fa)) * Check for public args in aztec functions ([#6355](AztecProtocol/aztec-packages#6355)) ([219efd6](AztecProtocol/aztec-packages@219efd6)) * **ci:** Bench list ([#6282](AztecProtocol/aztec-packages#6282)) ([2652576](AztecProtocol/aztec-packages@2652576)) * **circuits.js:** Fix nullifier non existent hints ([#6346](AztecProtocol/aztec-packages#6346)) ([297779a](AztecProtocol/aztec-packages@297779a)) * **ci:** Stop mass serialization ([#6290](AztecProtocol/aztec-packages#6290)) ([60104e9](AztecProtocol/aztec-packages@60104e9)) * Defer overflow checks for unsigned integers to acir-gen (noir-lang/noir#4832) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * Enable client proof tests ([#6249](AztecProtocol/aztec-packages#6249)) ([6d3a800](AztecProtocol/aztec-packages@6d3a800)) * Ignore no_predicates in brillig functions (noir-lang/noir#5012) ([3cda21a](AztecProtocol/aztec-packages@3cda21a)) * Noir_js import ([#6381](AztecProtocol/aztec-packages#6381)) ([e9c7e5f](AztecProtocol/aztec-packages@e9c7e5f)) * Pw/update merge check ([#6201](AztecProtocol/aztec-packages#6201)) ([856657f](AztecProtocol/aztec-packages@856657f)) * Run noir browser tests in series ([#6232](AztecProtocol/aztec-packages#6232)) ([e092514](AztecProtocol/aztec-packages@e092514)) * Temporarily revert to_radix blackbox ([#6304](AztecProtocol/aztec-packages#6304)) ([044d0fe](AztecProtocol/aztec-packages@044d0fe)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](AztecProtocol/aztec-packages#6300)) ([9c30759](AztecProtocol/aztec-packages@9c30759)), closes [#5834](AztecProtocol/aztec-packages#5834) * Adding name shadowing tests template program (noir-lang/noir#4799) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **avm-context:** Implement Empty ([#6303](AztecProtocol/aztec-packages#6303)) ([27534ac](AztecProtocol/aztec-packages@27534ac)) * **avm-simulator:** Add U128 overflow tests to AVM simulator ([#6281](AztecProtocol/aztec-packages#6281)) ([5514143](AztecProtocol/aztec-packages@5514143)) * Bump public bytecode size to 40000 in prep for AVM migration ([#6266](AztecProtocol/aztec-packages#6266)) ([2b61123](AztecProtocol/aztec-packages@2b61123)) * Bump timeout for after-hook for data store test ([#6364](AztecProtocol/aztec-packages#6364)) ([18eca39](AztecProtocol/aztec-packages@18eca39)) * **ci:** Fix master, better spot copy times ([#6374](AztecProtocol/aztec-packages#6374)) ([fee7649](AztecProtocol/aztec-packages@fee7649)) * **ci:** Hotfix runner checks ([#6373](AztecProtocol/aztec-packages#6373)) ([d5fd668](AztecProtocol/aztec-packages@d5fd668)) * **ci:** Reuse ssh connections ([#6382](AztecProtocol/aztec-packages#6382)) ([5f6c31e](AztecProtocol/aztec-packages@5f6c31e)) * **ci:** Revert inline cache push for now ([#6318](AztecProtocol/aztec-packages#6318)) ([4c9bfb0](AztecProtocol/aztec-packages@4c9bfb0)) * **ci:** Run clippy on benchmarks (noir-lang/noir#4988) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **ci:** Run e2e on isolated spots ([#6287](AztecProtocol/aztec-packages#6287)) ([e7d2dd6](AztecProtocol/aztec-packages@e7d2dd6)) * **ci:** Spot health fix, earthly workarounds ([#6379](AztecProtocol/aztec-packages#6379)) ([da7573c](AztecProtocol/aztec-packages@da7573c)) * **ci:** Stability after spot changes ([#6367](AztecProtocol/aztec-packages#6367)) ([7ad4179](AztecProtocol/aztec-packages@7ad4179)) * **ci:** Use on-demand runners ([#6311](AztecProtocol/aztec-packages#6311)) ([dba835d](AztecProtocol/aztec-packages@dba835d)) * Deploying accounts after key registry ([#6322](AztecProtocol/aztec-packages#6322)) ([84878d1](AztecProtocol/aztec-packages@84878d1)) * Disable `gates_report.yml` (noir-lang/noir#4997) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **docs:** Update contract deployments page ([#6319](AztecProtocol/aztec-packages#6319)) ([2e331b5](AztecProtocol/aztec-packages@2e331b5)) * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](AztecProtocol/aztec-packages#6228)) ([8079f60](AztecProtocol/aztec-packages@8079f60)) * Enforce formatting of noir code ([#6271](AztecProtocol/aztec-packages#6271)) ([356f7bb](AztecProtocol/aztec-packages@356f7bb)) * **experimental:** Add compiler option to enable the Elaborator (noir-lang/noir#5003) ([3cda21a](AztecProtocol/aztec-packages@3cda21a)) * **experimental:** Add Elaborator pass (noir-lang/noir#4992) ([3cda21a](AztecProtocol/aztec-packages@3cda21a)) * Make coinbase and fee_recipient inaccessible ([#6375](AztecProtocol/aztec-packages#6375)) ([ded28b7](AztecProtocol/aztec-packages@ded28b7)) * Make MSM builder more explicit ([#6110](AztecProtocol/aztec-packages#6110)) ([40306b6](AztecProtocol/aztec-packages@40306b6)) * Pw/refactor bb prover ([#6349](AztecProtocol/aztec-packages#6349)) ([8eb0398](AztecProtocol/aztec-packages@8eb0398)) * Remove `bb info` command ([#6276](AztecProtocol/aztec-packages#6276)) ([f0a1c89](AztecProtocol/aztec-packages@f0a1c89)) * Replace relative paths to noir-protocol-circuits ([fd40d99](AztecProtocol/aztec-packages@fd40d99)) * Replace relative paths to noir-protocol-circuits ([53dbcb5](AztecProtocol/aztec-packages@53dbcb5)) * Replace relative paths to noir-protocol-circuits ([48e07c3](AztecProtocol/aztec-packages@48e07c3)) * Replace relative paths to noir-protocol-circuits ([6532725](AztecProtocol/aztec-packages@6532725)) * Replace relative paths to noir-protocol-circuits ([8330f70](AztecProtocol/aztec-packages@8330f70)) * Replace relative paths to noir-protocol-circuits ([484741a](AztecProtocol/aztec-packages@484741a)) * Replacing old pub key oracle with get_ivpk_m ([#6219](AztecProtocol/aztec-packages#6219)) ([9acc9ec](AztecProtocol/aztec-packages@9acc9ec)) * Siloing in tails ([#6167](AztecProtocol/aztec-packages#6167)) ([c20dd50](AztecProtocol/aztec-packages@c20dd50)) * Simplify nargo CLI to read from artifacts ([#6279](AztecProtocol/aztec-packages#6279)) ([b2c019b](AztecProtocol/aztec-packages@b2c019b)) * Skip formatting informattable comments ([#6288](AztecProtocol/aztec-packages#6288)) ([95b499b](AztecProtocol/aztec-packages@95b499b)) * Split `ops` into `arith` and `bit` modules (noir-lang/noir#4989) ([11cde44](AztecProtocol/aztec-packages@11cde44)) * **test-contracts:** Prepare e2e_token_contract+ error msgs for AVM migration ([#6307](AztecProtocol/aztec-packages#6307)) ([0c20f44](AztecProtocol/aztec-packages@0c20f44)) * Update cspell for abi demonomorphizer ([#6258](AztecProtocol/aztec-packages#6258)) ([ce2d43c](AztecProtocol/aztec-packages@ce2d43c)) * Update serialisation ([#6378](AztecProtocol/aztec-packages#6378)) ([527129d](AztecProtocol/aztec-packages@527129d)) * Validating private call data ([#6316](AztecProtocol/aztec-packages#6316)) ([84b9fcd](AztecProtocol/aztec-packages@84b9fcd)) ### Documentation * Call types ([#5472](AztecProtocol/aztec-packages#5472)) ([1ca0d28](AztecProtocol/aztec-packages@1ca0d28)) * Re-add and update accounts docs ([#6345](AztecProtocol/aztec-packages#6345)) ([4926d15](AztecProtocol/aztec-packages@4926d15)) * Updated protocol specs ([#6341](AztecProtocol/aztec-packages#6341)) ([a0f82db](AztecProtocol/aztec-packages@a0f82db)) </details> <details><summary>barretenberg: 0.39.0</summary> ## [0.39.0](AztecProtocol/aztec-packages@barretenberg-v0.38.0...barretenberg-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) * specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ### Features * Avm support for public input columns ([#5700](AztecProtocol/aztec-packages#5700)) ([8cf9168](AztecProtocol/aztec-packages@8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](AztecProtocol/aztec-packages#6308)) ([6374a32](AztecProtocol/aztec-packages@6374a32)) * Div opcode ([#6053](AztecProtocol/aztec-packages#6053)) ([8e111f8](AztecProtocol/aztec-packages@8e111f8)) * Move to_radix to a blackbox ([#6294](AztecProtocol/aztec-packages#6294)) ([ac27376](AztecProtocol/aztec-packages@ac27376)) * Small translator optimisations ([#6354](AztecProtocol/aztec-packages#6354)) ([ba6c42e](AztecProtocol/aztec-packages@ba6c42e)) * Specify databus arrays for BB ([#6239](AztecProtocol/aztec-packages#6239)) ([01d9f24](AztecProtocol/aztec-packages@01d9f24)) * Structured trace in client ivc ([#6132](AztecProtocol/aztec-packages#6132)) ([92c1478](AztecProtocol/aztec-packages@92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](AztecProtocol/aztec-packages#6283)) ([78adcc0](AztecProtocol/aztec-packages@78adcc0)) * ToRadix BB + avm transpiler support ([#6330](AztecProtocol/aztec-packages#6330)) ([c3c602f](AztecProtocol/aztec-packages@c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](AztecProtocol/aztec-packages#5739)) ([3250a8a](AztecProtocol/aztec-packages@3250a8a)) ### Bug Fixes * Temporarily revert to_radix blackbox ([#6304](AztecProtocol/aztec-packages#6304)) ([044d0fe](AztecProtocol/aztec-packages@044d0fe)) ### Miscellaneous * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](AztecProtocol/aztec-packages#6228)) ([8079f60](AztecProtocol/aztec-packages@8079f60)) * Make MSM builder more explicit ([#6110](AztecProtocol/aztec-packages#6110)) ([40306b6](AztecProtocol/aztec-packages@40306b6)) * Remove `bb info` command ([#6276](AztecProtocol/aztec-packages#6276)) ([f0a1c89](AztecProtocol/aztec-packages@f0a1c89)) * Update serialisation ([#6378](AztecProtocol/aztec-packages#6378)) ([527129d](AztecProtocol/aztec-packages@527129d)) </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.39.0</summary> ## [0.39.0](aztec-package-v0.38.0...aztec-package-v0.39.0) (2024-05-14) ### Features * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) </details> <details><summary>barretenberg.js: 0.39.0</summary> ## [0.39.0](barretenberg.js-v0.38.0...barretenberg.js-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ### Features * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) </details> <details><summary>aztec-packages: 0.39.0</summary> ## [0.39.0](aztec-packages-v0.38.0...aztec-packages-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * shared mutable configurable delays ([#6104](#6104)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Add `Not` trait to stdlib (noir-lang/noir#4999) ([11cde44](11cde44)) * Add support for u16/i16 (noir-lang/noir#4985) ([11cde44](11cde44)) * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * **avm-simulator:** Error stack tracking and enriching in AVM to match ACVM/ACIR-SIM ([#6289](#6289)) ([5c1f895](5c1f895)) * **aztec-nr:** Add 'with_gas()' function to avm call interface ([#6256](#6256)) ([0aedd23](0aedd23)) * **aztec-nr:** Add enqueue functions to AvmCallInterface ([#6264](#6264)) ([1c74387](1c74387)) * Build-images as earthly. ([#6194](#6194)) ([67fedf1](67fedf1)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Encrypted log body ([#6251](#6251)) ([ba618d5](ba618d5)) * Enforce note hash read requests to read within own contract ([#6310](#6310)) ([bd10595](bd10595)) * Expose `set_as_fee_payer` and test it in e2e ([#6380](#6380)) ([a8274f3](a8274f3)) * Implement `ops` traits on `u16`/`i16` (noir-lang/noir#4996) ([11cde44](11cde44)) * Increase default expression width to 4 (noir-lang/noir#4995) ([11cde44](11cde44)) * Move abi demonomorphizer to noir_codegen and use noir_codegen in protocol types ([#6302](#6302)) ([690e500](690e500)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * **p2p:** GossibSub ([#6170](#6170)) ([98d32f1](98d32f1)), closes [#5055](#5055) * Plumb fee payer ([#6286](#6286)) ([1f8fd1c](1f8fd1c)) * Private Kernel Recursion ([#6278](#6278)) ([eae5822](eae5822)) * Proper padding in ts AES and constrained AES in body and header computations ([#6269](#6269)) ([ef9cdde](ef9cdde)) * PublicKeys struct ([#6333](#6333)) ([2633cfc](2633cfc)) * Re-enabling authwit constraint ([#6323](#6323)) ([aa06d55](aa06d55)), closes [#5830](#5830) * Remove query to backend to get expression width (noir-lang/noir#4975) ([11cde44](11cde44)) * Replacing mentions to aztec-starter with codespace methods ([#6177](#6177)) ([63e8788](63e8788)) * Return gas usage per phase from node tx simulation ([#6255](#6255)) ([fb58dfc](fb58dfc)) * Shared mutable configurable delays ([#6104](#6104)) ([c191a40](c191a40)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * Sync from aztec-packages (noir-lang/noir#4993) ([11cde44](11cde44)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * `CombinedConstantData` not registered for serialization ([#6292](#6292)) ([89ab8ee](89ab8ee)) * **avm-context:** Enqueueing of public from private ([#6299](#6299)) ([bd2ccf0](bd2ccf0)) * **avm-simulator:** Always set revertReason when reverting ([#6297](#6297)) ([cc59981](cc59981)) * **avm-simulator:** Correctly create call stack in shallow assertions ([#6274](#6274)) ([f6045fd](f6045fd)) * **avm-simulator:** Fix env getters ([#6357](#6357)) ([485fe40](485fe40)) * **avm-simulator:** Fix message sender ([#6331](#6331)) ([f7e2d26](f7e2d26)) * **avm-simulator:** Fix test expectation ([#6293](#6293)) ([f51acfa](f51acfa)) * **avm-simulator:** Rethrow nested assertions ([#6275](#6275)) ([cd05b91](cd05b91)) * **avm-transpiler:** Patch debug infos with modified PCs ([#6371](#6371)) ([c36f0fa](c36f0fa)) * Check for public args in aztec functions ([#6355](#6355)) ([219efd6](219efd6)) * **ci:** Bench list ([#6282](#6282)) ([2652576](2652576)) * **circuits.js:** Fix nullifier non existent hints ([#6346](#6346)) ([297779a](297779a)) * **ci:** Stop mass serialization ([#6290](#6290)) ([60104e9](60104e9)) * Defer overflow checks for unsigned integers to acir-gen (noir-lang/noir#4832) ([11cde44](11cde44)) * Enable client proof tests ([#6249](#6249)) ([6d3a800](6d3a800)) * Ignore no_predicates in brillig functions (noir-lang/noir#5012) ([3cda21a](3cda21a)) * Noir_js import ([#6381](#6381)) ([e9c7e5f](e9c7e5f)) * Pw/update merge check ([#6201](#6201)) ([856657f](856657f)) * Run noir browser tests in series ([#6232](#6232)) ([e092514](e092514)) * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * `CompleteAddress` cleanup ([#6300](#6300)) ([9c30759](9c30759)), closes [#5834](#5834) * Adding name shadowing tests template program (noir-lang/noir#4799) ([11cde44](11cde44)) * **avm-context:** Implement Empty ([#6303](#6303)) ([27534ac](27534ac)) * **avm-simulator:** Add U128 overflow tests to AVM simulator ([#6281](#6281)) ([5514143](5514143)) * Bump public bytecode size to 40000 in prep for AVM migration ([#6266](#6266)) ([2b61123](2b61123)) * Bump timeout for after-hook for data store test ([#6364](#6364)) ([18eca39](18eca39)) * **ci:** Fix master, better spot copy times ([#6374](#6374)) ([fee7649](fee7649)) * **ci:** Hotfix runner checks ([#6373](#6373)) ([d5fd668](d5fd668)) * **ci:** Reuse ssh connections ([#6382](#6382)) ([5f6c31e](5f6c31e)) * **ci:** Revert inline cache push for now ([#6318](#6318)) ([4c9bfb0](4c9bfb0)) * **ci:** Run clippy on benchmarks (noir-lang/noir#4988) ([11cde44](11cde44)) * **ci:** Run e2e on isolated spots ([#6287](#6287)) ([e7d2dd6](e7d2dd6)) * **ci:** Spot health fix, earthly workarounds ([#6379](#6379)) ([da7573c](da7573c)) * **ci:** Stability after spot changes ([#6367](#6367)) ([7ad4179](7ad4179)) * **ci:** Use on-demand runners ([#6311](#6311)) ([dba835d](dba835d)) * Deploying accounts after key registry ([#6322](#6322)) ([84878d1](84878d1)) * Disable `gates_report.yml` (noir-lang/noir#4997) ([11cde44](11cde44)) * **docs:** Update contract deployments page ([#6319](#6319)) ([2e331b5](2e331b5)) * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Enforce formatting of noir code ([#6271](#6271)) ([356f7bb](356f7bb)) * **experimental:** Add compiler option to enable the Elaborator (noir-lang/noir#5003) ([3cda21a](3cda21a)) * **experimental:** Add Elaborator pass (noir-lang/noir#4992) ([3cda21a](3cda21a)) * Make coinbase and fee_recipient inaccessible ([#6375](#6375)) ([ded28b7](ded28b7)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Pw/refactor bb prover ([#6349](#6349)) ([8eb0398](8eb0398)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Replace relative paths to noir-protocol-circuits ([fd40d99](fd40d99)) * Replace relative paths to noir-protocol-circuits ([53dbcb5](53dbcb5)) * Replace relative paths to noir-protocol-circuits ([48e07c3](48e07c3)) * Replace relative paths to noir-protocol-circuits ([6532725](6532725)) * Replace relative paths to noir-protocol-circuits ([8330f70](8330f70)) * Replace relative paths to noir-protocol-circuits ([484741a](484741a)) * Replacing old pub key oracle with get_ivpk_m ([#6219](#6219)) ([9acc9ec](9acc9ec)) * Siloing in tails ([#6167](#6167)) ([c20dd50](c20dd50)) * Simplify nargo CLI to read from artifacts ([#6279](#6279)) ([b2c019b](b2c019b)) * Skip formatting informattable comments ([#6288](#6288)) ([95b499b](95b499b)) * Split `ops` into `arith` and `bit` modules (noir-lang/noir#4989) ([11cde44](11cde44)) * **test-contracts:** Prepare e2e_token_contract+ error msgs for AVM migration ([#6307](#6307)) ([0c20f44](0c20f44)) * Update cspell for abi demonomorphizer ([#6258](#6258)) ([ce2d43c](ce2d43c)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) * Validating private call data ([#6316](#6316)) ([84b9fcd](84b9fcd)) ### Documentation * Call types ([#5472](#5472)) ([1ca0d28](1ca0d28)) * Re-add and update accounts docs ([#6345](#6345)) ([4926d15](4926d15)) * Updated protocol specs ([#6341](#6341)) ([a0f82db](a0f82db)) </details> <details><summary>barretenberg: 0.39.0</summary> ## [0.39.0](barretenberg-v0.38.0...barretenberg-v0.39.0) (2024-05-14) ### ⚠ BREAKING CHANGES * switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) * specify databus arrays for BB ([#6239](#6239)) ### Features * Avm support for public input columns ([#5700](#5700)) ([8cf9168](8cf9168)) * **avm-simulator:** Add to_radix_le instruction ([#6308](#6308)) ([6374a32](6374a32)) * Div opcode ([#6053](#6053)) ([8e111f8](8e111f8)) * Move to_radix to a blackbox ([#6294](#6294)) ([ac27376](ac27376)) * Small translator optimisations ([#6354](#6354)) ([ba6c42e](ba6c42e)) * Specify databus arrays for BB ([#6239](#6239)) ([01d9f24](01d9f24)) * Structured trace in client ivc ([#6132](#6132)) ([92c1478](92c1478)) * Switch `bb` over to read ACIR from nargo artifacts ([#6283](#6283)) ([78adcc0](78adcc0)) * ToRadix BB + avm transpiler support ([#6330](#6330)) ([c3c602f](c3c602f)) * **vm:** Reading kernel state opcodes ([#5739](#5739)) ([3250a8a](3250a8a)) ### Bug Fixes * Temporarily revert to_radix blackbox ([#6304](#6304)) ([044d0fe](044d0fe)) ### Miscellaneous * **dsl:** Update backend gateCount command to query a Program in a single request ([#6228](#6228)) ([8079f60](8079f60)) * Make MSM builder more explicit ([#6110](#6110)) ([40306b6](40306b6)) * Remove `bb info` command ([#6276](#6276)) ([f0a1c89](f0a1c89)) * Update serialisation ([#6378](#6378)) ([527129d](527129d)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Closes #5493, follow up of #6085.
This makes the delay in SharedMutable not be fixed and instead configurable by users throughout the lifetime of the contract. This is however more complicated than it sounds at first: because private proofs are being created relying on the public values being stable until a future point in time, it must not be possible to cause for a shared value to change before some delay.
Two scenarios are particularly tricky:
How
I had originally considered creating a sort of wrapper state variable that held two SharedMutables, one for the value and one for the delay, or alternatively two ScheduledValueChanges, but ultimately I realized that a scheduled value change is significantly different from a scheduled delay change. Namely:
Due to these differences, I introduced ScheduledDelayChange, which is essentially a variant of the value change, but with these considerations baked in. I think this is a reasonable way to do things, even if at first this may seem to introduce too many concepts. It also helps with the fact that there's so many values involved (pre, post and block of change for value and delays, as well as current, effective, historical values, etc.), and with language becoming weird - we need to describe the delay for scheduling a delay change, which will later affect the delays of scheduling value changes.
With ScheduledDelayChange, extending the functionality of SharedMutable was relatively straightforward. The unit tests became a bit more complicated due to there bieng more scenarios, so I also used this as an opportunity to try to create slightly more complex Noir tests. I didn't go too crazy here, but they seem to be right at the point where we'd want to introduce something like a
Test
struct with custom impls for setup, common assertions, etc.Problems
An uninitialized
SharedMutable
has both delay and value of 0. A zero delay transformsSharedMutable
intoPublicMutable
: scheduled value changes become effective immediately, and it is not possible to read from private sincetx.max_block_number
would equal a historical block (i.e. an already mined one). Delay initialization is therefore required, and this is typically fine: since the initial delay is 0 any change will be an increase, and therefore instant.The problem arises when we cannot have explicit initialization and instead wish to rely on defaults. This happens e.g. when we put a SharedMutable inside a
Map
: we can't initialize all entries for all keys, and we run into trouble. This is a pattern followed byKeyRegistry
andTokenBlacklist
: we have per-user configuration, and cant really ask users to initialize their state before interacting with the system.Solution?
A possible solution would be to have a default value for the delay, and to store e.g.
Option<u32>
instead of plain integers and usingunwrap_or(DEFAULT)
. We could then make this a type parameter for SharedMutable, e.g.registry: Map<Address, SharedMutable<Key, DEFAULT_DELAY>>
.This would make certain things more complicated, particularly the effective delay and delay change block of change computations, but it should all be containable within
ScheduledDelayChange
, which sounds just about right.I'm keeping this is a draft so we can discuss the current approach and wether we think the above or an alternative solution would be reasonable to attempt. Note that this PR won't pass CI as some of the contracts won't build.