-
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: introduce validator client #7854
feat: introduce validator client #7854
Conversation
@@ -159,57 +159,6 @@ describe('e2e_p2p_network', () => { | |||
} | |||
}); | |||
|
|||
const createBootstrapNode = async () => { |
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.
moved into a shared file
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 | | |
Docs PreviewHey there! 👋 You can check your preview at https://66bf3d3c5b098b1200ea1d3e--aztec-docs-dev.netlify.app |
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.
Potentially interesting for you to check #7989, guess it depends on who merges first 😎
* this contract. | ||
* @return The validator set for the current epoch | ||
*/ | ||
function getCurrentEpochCommittee() external override(ILeonidas) returns (address[] memory) { |
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.
For this, I think we could be a bit smarter just to avoid the issue.
In the getProposerAt
we end up drawing a committee if there is not one already. Think we could likely just make a version of that which just don't draw from the set but just returns it 🤷 Seems slightly better for us to not have the option where someone ends up calling it directly. Something I have done in the past have been having an extension to a contract with extra view functions that is not necessarily used within itself, essentially separating the external views 🤷.
We could potentially just alter the `getEpochCommittee(uint256 _epoch)
function getCommitteeAt(uint256 _ts) public view override(ILeonidas) returns (address) {
uint256 epochNumber = getEpochAt(_ts);
uint256 slot = getSlotAt(_ts);
if (epochNumber == 0) {
return new address[1]();
}
Epoch storage epoch = epochs[epochNumber];
if (epoch.sampleSeed != 0) {
uint256 committeeSize = epoch.committee.length;
if (committeeSize == 0) {
return new address[1]();
}
return epoch.committee;
}
// Allow anyone if there is no validator set
if (validatorSet.length() == 0) {
return new address[1]();
}
// Emulate a sampling of the validators
uint256 sampleSeed = _getSampleSeed(epochNumber);
return _sampleValidators(epochNumber, sampleSeed);
}
@@ -22,6 +22,9 @@ interface ILeonidas { | |||
function getTimestampForSlot(uint256 _slotNumber) external view returns (uint256); | |||
|
|||
// Likely removal of these to replace with a size and indiviual getter | |||
// Note: This function is not view - as it makes a call to setupEpoch under the hood, but it should only be | |||
// used as a view function | |||
function getCurrentEpochCommittee() external returns (address[] memory); |
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.
See below.
constructor( | ||
/** The block header the attestation is made over */ | ||
public readonly header: Header, | ||
// TODO: temp? |
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.
Temp?
Teasing aside. Yes think we will move it to the header hash as discussed in #7727 (comment)
|
||
const serialized = attestation.toBuffer(); | ||
const deserialized = BlockAttestation.fromBuffer(serialized); | ||
|
||
expect(deserialized).toEqual(attestation); | ||
}); | ||
|
||
it('Should serialize / deserialize + recover sender', async () => { |
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.
🫡
constructor( | ||
/** The block header, after execution of the below sequence of transactions */ | ||
public readonly header: Header, | ||
|
||
// TODO: temp? |
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.
Related to earlier.
|
||
it('should add attestation to pool', async () => { | ||
const slotNumber = 420; | ||
const attestations = await Promise.all(signers.map(signer => mockAttestation(signer, slotNumber))); |
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 don't particularly like that we can add a bunch of attestations to the attestation pool even if they are attesting to different data 🤷. It seems like it would be useful to only be able to add things that match the digest already in there.
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.
} | ||
} | ||
|
||
public async addAttestations(attestations: BlockAttestation[]): Promise<void> { |
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.
As mentioned in the test. I think it is slightly weird here that we don't try matching the attestation with what is signed over beyond just taking the slot number as gospel. Haven't seen where it is used yet, but seems like it would be good for us to ensure that we don't end up with a bunch of useless attestations in here.
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.
*/ | ||
private async processAttestationFromPeer(attestation: BlockAttestation): Promise<void> { | ||
this.logger.verbose(`Received attestation ${attestation.p2pMessageIdentifier()} from external peer.`); | ||
await this.attestationPool.addAttestations([attestation]); |
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.
Related to earlier, not sure where the best place to check for it would be, but think we gotta check somewhere to make sure we don't end up thinking that we have enough attestations, but it is because we just stored a lot of garbage attestations.
* Returns attestation signatures in the order of a series of provided ethereum addresses | ||
* The rollup smart contract expects attestations to appear in the order of the committee | ||
* | ||
* @todo: perform this logic within the memory attestation store 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.
Issue?
beforeEach(() => { | ||
ap = new InMemoryAttestationPool(); | ||
signers = new Array(NUMBER_OF_SIGNERS_PER_TEST).fill(0).map(() => generateAccount()); | ||
}); |
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.
Just a fun tip: you can
signers = Array.from({ length: NUMBER_OF_SIGNERS_PER_TEST }, generateAccount);
@@ -29,13 +29,18 @@ export class DummyP2PService implements P2PService { | |||
* Called to have the given transaction propagated through the P2P network. | |||
* @param _ - The transaction to be propagated. | |||
*/ | |||
public propagateTx(_: Tx) {} | |||
public propagate<T extends Gossipable>(_: T) {} |
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 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.
Empty file
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.
good spot
export function generatePeerIdPrivateKeys(numberOfPeers: number): string[] { | ||
const peerIdPrivateKeys = []; | ||
for (let i = 0; i < numberOfPeers; i++) { | ||
peerIdPrivateKeys.push('08021220' + generatePrivateKey().substr(2, 66)); |
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.
Can you explain the magic number?
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.
Its a multiaddr prefix https://multiformats.io/multiaddr/
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 agree with the abstraction concerns around the callback interface (and the p2p client generally), and the structural concerns w.r.t. the validator client being a bolt-on to the sequencer client (what even is a sequencer anymore?).
But I think this is good for now.
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.50.0</summary> ## [0.50.0](aztec-package-v0.49.2...aztec-package-v0.50.0) (2024-08-22) ### Features * Add a prover-node to the proving e2e tests ([#7952](#7952)) ([ec5a5fb](ec5a5fb)) * Add max pending txs to bot ([#8046](#8046)) ([7f5517e](7f5517e)) * Deterministic deployments for L1 ([#8031](#8031)) ([abc6b19](abc6b19)) * Introduce validator client ([#7854](#7854)) ([e3be8e6](e3be8e6)) * JSON logging ([#8095](#8095)) ([048fa12](048fa12)) ### Bug Fixes * Port option & extracting correct namespaced options ([#8097](#8097)) ([e74c83e](e74c83e)) * Txe port and aztec start options ([#8071](#8071)) ([23778c5](23778c5)) ### Miscellaneous * Configuration for bot on various networks ([#8063](#8063)) ([453a096](453a096)) * Merge devnet fixes back to master ([#8149](#8149)) ([6be2183](6be2183)) * Merge Provernet back to master ([#8070](#8070)) ([82f3dc7](82f3dc7)) </details> <details><summary>barretenberg.js: 0.50.0</summary> ## [0.50.0](barretenberg.js-v0.49.2...barretenberg.js-v0.50.0) (2024-08-22) ### Miscellaneous * Merge devnet fixes back to master ([#8149](#8149)) ([6be2183](6be2183)) </details> <details><summary>aztec-packages: 0.50.0</summary> ## [0.50.0](aztec-packages-v0.49.2...aztec-packages-v0.50.0) (2024-08-22) ### ⚠ BREAKING CHANGES * replace public key fetching API ([#7996](#7996)) ### Features * (LSP) suggest names that match any part of the current prefix (noir-lang/noir#5752) ([0379462](0379462)) * Add `Expr::as_any_integer` and `Expr::as_member_access` (noir-lang/noir#5742) ([0379462](0379462)) * Add `Expr::as_array`, `Expr::as_repeated_element_array` and same for slice (noir-lang/noir#5750) ([0379462](0379462)) * Add `Expr::as_binary_op` (noir-lang/noir#5734) ([0379462](0379462)) * Add `Expr::as_bool` (noir-lang/noir#5729) ([0379462](0379462)) * Add `Expr::as_unary` (noir-lang/noir#5731) ([0379462](0379462)) * Add `Expr` methods: `as_tuple`, `as_parenthesized`, `as_index`, `as_if` (noir-lang/noir#5726) ([0379462](0379462)) * Add `TraitImpl::trait_generic_args` and `TraitImpl::methods` (noir-lang/noir#5722) ([0379462](0379462)) * Add `unsafe` blocks for calling unconstrained code from constrained functions (noir-lang/noir#4429) ([0379462](0379462)) * Add a prover-node to the proving e2e tests ([#7952](#7952)) ([ec5a5fb](ec5a5fb)) * Add max pending txs to bot ([#8046](#8046)) ([7f5517e](7f5517e)) * Add reusable procedures to brillig generation ([#7981](#7981)) ([99d1131](99d1131)) * Automate verify_honk_proof input generation ([#8092](#8092)) ([bf38d61](bf38d61)) * **avm:** Enable zeromorph in AVM verification ([#8111](#8111)) ([b1f9fb6](b1f9fb6)), closes [#4944](#4944) * Build for arm ([#7994](#7994)) ([0dffe1b](0dffe1b)) * Completing MockNote ([#8059](#8059)) ([05efe23](05efe23)), closes [#7636](#7636) * Constant addresses as addresses ([#8056](#8056)) ([1da5caf](1da5caf)) * Deterministic deployments for L1 ([#8031](#8031)) ([abc6b19](abc6b19)) * **docs:** Cookbook integration ([#8083](#8083)) ([19bd8a9](19bd8a9)) * Enabling public and private bridging w/ cli ([#8011](#8011)) ([f0f9c73](f0f9c73)) * Fault-tolerant parsing of `fn` and `impl` (noir-lang/noir#5753) ([0379462](0379462)) * Flush sequencer ([#8050](#8050)) ([8821e5f](8821e5f)) * Introduce blob circuit ([#8101](#8101)) ([4bb3bac](4bb3bac)) * Introduce validator client ([#7854](#7854)) ([e3be8e6](e3be8e6)) * JSON logging ([#8095](#8095)) ([048fa12](048fa12)) * LSP auto-import completion (noir-lang/noir#5741) ([0379462](0379462)) * LSP autocomplete constructor fields (noir-lang/noir#5732) ([0379462](0379462)) * LSP signature help (noir-lang/noir#5725) ([0379462](0379462)) * Max pending jobs in prover node ([#8045](#8045)) ([c857604](c857604)) * Move out_hash inside tx_effect_hash ([#7489](#7489)) ([ff0effe](ff0effe)) * Native Merkle Trees ([#7037](#7037)) ([8a1032e](8a1032e)) * Oink recursive verifier ([#8121](#8121)) ([580708a](580708a)) * **optimization:** Follow past `array_set`s when optimizing `array_get`s (noir-lang/noir#5772) ([0379462](0379462)) * Passes copy_cycles by const reference to avoid copying ([#8051](#8051)) ([495d363](495d363)) * **perf:** Mem2reg function state for value loads to optimize across blocks (noir-lang/noir#5757) ([0379462](0379462)) * PG recursive verifier constructors based on stdlib inputs ([#8052](#8052)) ([4c568b0](4c568b0)) * Poseidon2 gates for Ultra arithmetisation ([#7494](#7494)) ([d86577c](d86577c)) * Prover node metrics ([#8086](#8086)) ([ab018ff](ab018ff)) * Removed socat, fixed aztec-run ([#8145](#8145)) ([ff94aa2](ff94aa2)) * Removing redundant key fetching ([#8043](#8043)) ([2bbcc7b](2bbcc7b)) * Replace public key fetching API ([#7996](#7996)) ([73d6aa9](73d6aa9)) * Small optimization in toradix ([#8040](#8040)) ([0dc7a50](0dc7a50)) * Some fixes and cleanup in PG recursive verifier ([#8053](#8053)) ([5f2a9bd](5f2a9bd)) * Suggest trait methods in LSP completion (noir-lang/noir#5735) ([0379462](0379462)) * Suggest tuple fields in LSP completion (noir-lang/noir#5730) ([0379462](0379462)) * Track world state metrics ([#8109](#8109)) ([ca58d94](ca58d94)) * Typing specific pub keys ([#8099](#8099)) ([638793a](638793a)) * Unify all acir recursion constraints based on RecursionConstraint and proof_type ([#7993](#7993)) ([7cb39bc](7cb39bc)) * User `super::` in LSP autocompletion if possible (noir-lang/noir#5751) ([0379462](0379462)) * Various token note improvements ([#8062](#8062)) ([8f9dfd9](8f9dfd9)) * Zk sumcheck ([#7517](#7517)) ([0e9a530](0e9a530)) ### Bug Fixes * (LSP) only add cached files relevant to workspace (noir-lang/noir#5775) ([2d70215](2d70215)) * Add DEBUG and LOG_LEVEL to valid env vars ([#8094](#8094)) ([70e61f9](70e61f9)) * Add link to l1-artifacts ([#7940](#7940)) ([dcfd120](dcfd120)) * Add missing trait impls for integer types to stdlib (noir-lang/noir#5738) ([0379462](0379462)) * Allow comptime code to use break without also being `unconstrained` (noir-lang/noir#5744) ([0379462](0379462)) * **avm:** Real bytes finalization ([#8041](#8041)) ([047461a](047461a)) * **ci:** Correctly run bb tests with asserts ([#7607](#7607)) ([7b73f69](7b73f69)) * Correctly constrain get header at ([#7893](#7893)) ([2ebba0d](2ebba0d)) * Deploy L1 rollup contract using salt if provided ([#8074](#8074)) ([1e8eddf](1e8eddf)) * Flaky e2e_prover_node test ([#8116](#8116)) ([9d97bd4](9d97bd4)) * **frontend:** Continue type check if we are missing an unsafe block (noir-lang/noir#5720) ([0379462](0379462)) * Let LSP autocompletion work in more contexts (noir-lang/noir#5719) ([0379462](0379462)) * Port option & extracting correct namespaced options ([#8097](#8097)) ([e74c83e](e74c83e)) * Set prover node max pending jobs in tests ([#8055](#8055)) ([403c26f](403c26f)) * Stop WorldStrateSynchronizer in prover node ([#8126](#8126)) ([f724b07](f724b07)) * Txe port and aztec start options ([#8071](#8071)) ([23778c5](23778c5)) * Unconstrained fn mismatch is now a warning (noir-lang/noir#5764) ([0379462](0379462)) * Wallet fixes for devnet, testing and misc ([#8058](#8058)) ([15f3e8c](15f3e8c)) ### Miscellaneous * Add Brillig loop bytecode size regression and update noir-gates-diff report (noir-lang/noir#5747) ([0379462](0379462)) * Apply some new lints across workspace (noir-lang/noir#5736) ([0379462](0379462)) * **avm:** Kernel trace and finalization ([#8049](#8049)) ([d7edd24](d7edd24)) * **avm:** Separate alu finalization ([#8069](#8069)) ([e8a9eb4](e8a9eb4)) * **bb:** IPA parallelization cleanup ([#8088](#8088)) ([9227fa9](9227fa9)) * **bb:** Simplify parallel_for_if_effective ([#8079](#8079)) ([5bff26b](5bff26b)) * **bb:** Small cleanup in protogalaxy prover ([#8072](#8072)) ([4cb5c83](4cb5c83)) * **ci:** Only show last 50 master cpp benches ([#8075](#8075)) ([96f35bc](96f35bc)) * Clarify Field use (noir-lang/noir#5740) ([0379462](0379462)) * CLI command to set latest block as proven ([#7987](#7987)) ([80eaf1d](80eaf1d)) * Configuration for bot on various networks ([#8063](#8063)) ([453a096](453a096)) * Count brillig opcodes in nargo info (noir-lang/noir#5189) ([0379462](0379462)) * Deduplication in Protogalaxy ([#8067](#8067)) ([a5cc3ba](a5cc3ba)) * **docs:** Expanding solidity verifier chain list (noir-lang/noir#5587) ([0379462](0379462)) * Dont trail whitespace in vscode ([#5661](#5661)) ([7595d91](7595d91)) * Handle constant output for ec add opcode ([#8108](#8108)) ([2ee79d2](2ee79d2)) * Make spans non-optional on `UnresolvedType` (noir-lang/noir#5773) ([2d70215](2d70215)) * Merge devnet fixes back to master ([#8149](#8149)) ([6be2183](6be2183)) * Merge devnet to master ([#8044](#8044)) ([f84950f](f84950f)) * Merge Provernet back to master ([#8070](#8070)) ([82f3dc7](82f3dc7)) * Merging `TokenWithRefunds` with `Token` ([#8042](#8042)) ([8b795eb](8b795eb)) * Modified devnet config ([#8087](#8087)) ([854ab45](854ab45)) * Nuking old registry contract ([#8057](#8057)) ([3bd08a8](3bd08a8)), closes [#7955](#7955) * Pedersen hash related cleanup in aztec.nr ([#8009](#8009)) ([3c4ac65](3c4ac65)) * Portal manager cli ([#8047](#8047)) ([618e251](618e251)) * Proper portal setup for fees + test ([#7944](#7944)) ([9fec67e](9fec67e)) * Public kernel ([#8061](#8061)) ([617a69c](617a69c)) * Refactor ACIR function IDs from raw integers to struct (noir-lang/noir#5748) ([0379462](0379462)) * Replace relative paths to noir-protocol-circuits ([5ddf0e6](5ddf0e6)) * Replace relative paths to noir-protocol-circuits ([ca77c17](ca77c17)) * Replace relative paths to noir-protocol-circuits ([fe73c93](fe73c93)) * Replace relative paths to noir-protocol-circuits ([576bc2f](576bc2f)) * Replace relative paths to noir-protocol-circuits ([0d05d6b](0d05d6b)) * Simplify sequencer and l1 communication ([#7989](#7989)) ([cee4eba](cee4eba)) * Split LSP completion.rs into several files (noir-lang/noir#5723) ([0379462](0379462)) * Split up stdlib/recursion ([#8054](#8054)) ([ec03e40](ec03e40)) * **sync-noir:** Fix modify/delete conflicts automatically ([#8090](#8090)) ([a09627c](a09627c)) * Use decider verifier in ultra verifier ([#8115](#8115)) ([6c5ab2b](6c5ab2b)) ### Documentation * Fix typo overview.md ([#7908](#7908)) ([3749211](3749211)) * Update installation info for bb and noir ([#8119](#8119)) ([a744321](a744321)) </details> <details><summary>barretenberg: 0.50.0</summary> ## [0.50.0](barretenberg-v0.49.2...barretenberg-v0.50.0) (2024-08-22) ### Features * Add a prover-node to the proving e2e tests ([#7952](#7952)) ([ec5a5fb](ec5a5fb)) * Automate verify_honk_proof input generation ([#8092](#8092)) ([bf38d61](bf38d61)) * **avm:** Enable zeromorph in AVM verification ([#8111](#8111)) ([b1f9fb6](b1f9fb6)), closes [#4944](#4944) * Native Merkle Trees ([#7037](#7037)) ([8a1032e](8a1032e)) * Oink recursive verifier ([#8121](#8121)) ([580708a](580708a)) * Passes copy_cycles by const reference to avoid copying ([#8051](#8051)) ([495d363](495d363)) * PG recursive verifier constructors based on stdlib inputs ([#8052](#8052)) ([4c568b0](4c568b0)) * Poseidon2 gates for Ultra arithmetisation ([#7494](#7494)) ([d86577c](d86577c)) * Some fixes and cleanup in PG recursive verifier ([#8053](#8053)) ([5f2a9bd](5f2a9bd)) * Unify all acir recursion constraints based on RecursionConstraint and proof_type ([#7993](#7993)) ([7cb39bc](7cb39bc)) * Zk sumcheck ([#7517](#7517)) ([0e9a530](0e9a530)) ### Bug Fixes * **avm:** Real bytes finalization ([#8041](#8041)) ([047461a](047461a)) * **ci:** Correctly run bb tests with asserts ([#7607](#7607)) ([7b73f69](7b73f69)) ### Miscellaneous * **avm:** Kernel trace and finalization ([#8049](#8049)) ([d7edd24](d7edd24)) * **avm:** Separate alu finalization ([#8069](#8069)) ([e8a9eb4](e8a9eb4)) * **bb:** IPA parallelization cleanup ([#8088](#8088)) ([9227fa9](9227fa9)) * **bb:** Simplify parallel_for_if_effective ([#8079](#8079)) ([5bff26b](5bff26b)) * **bb:** Small cleanup in protogalaxy prover ([#8072](#8072)) ([4cb5c83](4cb5c83)) * Deduplication in Protogalaxy ([#8067](#8067)) ([a5cc3ba](a5cc3ba)) * Handle constant output for ec add opcode ([#8108](#8108)) ([2ee79d2](2ee79d2)) * Merge devnet fixes back to master ([#8149](#8149)) ([6be2183](6be2183)) * Split up stdlib/recursion ([#8054](#8054)) ([ec03e40](ec03e40)) * Use decider verifier in ultra verifier ([#8115](#8115)) ([6c5ab2b](6c5ab2b)) ### Documentation * Update installation info for bb and noir ([#8119](#8119)) ([a744321](a744321)) </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.50.0</summary> ## [0.50.0](AztecProtocol/aztec-packages@aztec-package-v0.49.2...aztec-package-v0.50.0) (2024-08-22) ### Features * Add a prover-node to the proving e2e tests ([#7952](AztecProtocol/aztec-packages#7952)) ([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb)) * Add max pending txs to bot ([#8046](AztecProtocol/aztec-packages#8046)) ([7f5517e](AztecProtocol/aztec-packages@7f5517e)) * Deterministic deployments for L1 ([#8031](AztecProtocol/aztec-packages#8031)) ([abc6b19](AztecProtocol/aztec-packages@abc6b19)) * Introduce validator client ([#7854](AztecProtocol/aztec-packages#7854)) ([e3be8e6](AztecProtocol/aztec-packages@e3be8e6)) * JSON logging ([#8095](AztecProtocol/aztec-packages#8095)) ([048fa12](AztecProtocol/aztec-packages@048fa12)) ### Bug Fixes * Port option & extracting correct namespaced options ([#8097](AztecProtocol/aztec-packages#8097)) ([e74c83e](AztecProtocol/aztec-packages@e74c83e)) * Txe port and aztec start options ([#8071](AztecProtocol/aztec-packages#8071)) ([23778c5](AztecProtocol/aztec-packages@23778c5)) ### Miscellaneous * Configuration for bot on various networks ([#8063](AztecProtocol/aztec-packages#8063)) ([453a096](AztecProtocol/aztec-packages@453a096)) * Merge devnet fixes back to master ([#8149](AztecProtocol/aztec-packages#8149)) ([6be2183](AztecProtocol/aztec-packages@6be2183)) * Merge Provernet back to master ([#8070](AztecProtocol/aztec-packages#8070)) ([82f3dc7](AztecProtocol/aztec-packages@82f3dc7)) </details> <details><summary>barretenberg.js: 0.50.0</summary> ## [0.50.0](AztecProtocol/aztec-packages@barretenberg.js-v0.49.2...barretenberg.js-v0.50.0) (2024-08-22) ### Miscellaneous * Merge devnet fixes back to master ([#8149](AztecProtocol/aztec-packages#8149)) ([6be2183](AztecProtocol/aztec-packages@6be2183)) </details> <details><summary>aztec-packages: 0.50.0</summary> ## [0.50.0](AztecProtocol/aztec-packages@aztec-packages-v0.49.2...aztec-packages-v0.50.0) (2024-08-22) ### ⚠ BREAKING CHANGES * replace public key fetching API ([#7996](AztecProtocol/aztec-packages#7996)) ### Features * (LSP) suggest names that match any part of the current prefix (noir-lang/noir#5752) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `Expr::as_any_integer` and `Expr::as_member_access` (noir-lang/noir#5742) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `Expr::as_array`, `Expr::as_repeated_element_array` and same for slice (noir-lang/noir#5750) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `Expr::as_binary_op` (noir-lang/noir#5734) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `Expr::as_bool` (noir-lang/noir#5729) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `Expr::as_unary` (noir-lang/noir#5731) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `Expr` methods: `as_tuple`, `as_parenthesized`, `as_index`, `as_if` (noir-lang/noir#5726) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `TraitImpl::trait_generic_args` and `TraitImpl::methods` (noir-lang/noir#5722) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add `unsafe` blocks for calling unconstrained code from constrained functions (noir-lang/noir#4429) ([0379462](AztecProtocol/aztec-packages@0379462)) * Add a prover-node to the proving e2e tests ([#7952](AztecProtocol/aztec-packages#7952)) ([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb)) * Add max pending txs to bot ([#8046](AztecProtocol/aztec-packages#8046)) ([7f5517e](AztecProtocol/aztec-packages@7f5517e)) * Add reusable procedures to brillig generation ([#7981](AztecProtocol/aztec-packages#7981)) ([99d1131](AztecProtocol/aztec-packages@99d1131)) * Automate verify_honk_proof input generation ([#8092](AztecProtocol/aztec-packages#8092)) ([bf38d61](AztecProtocol/aztec-packages@bf38d61)) * **avm:** Enable zeromorph in AVM verification ([#8111](AztecProtocol/aztec-packages#8111)) ([b1f9fb6](AztecProtocol/aztec-packages@b1f9fb6)), closes [#4944](AztecProtocol/aztec-packages#4944) * Build for arm ([#7994](AztecProtocol/aztec-packages#7994)) ([0dffe1b](AztecProtocol/aztec-packages@0dffe1b)) * Completing MockNote ([#8059](AztecProtocol/aztec-packages#8059)) ([05efe23](AztecProtocol/aztec-packages@05efe23)), closes [#7636](AztecProtocol/aztec-packages#7636) * Constant addresses as addresses ([#8056](AztecProtocol/aztec-packages#8056)) ([1da5caf](AztecProtocol/aztec-packages@1da5caf)) * Deterministic deployments for L1 ([#8031](AztecProtocol/aztec-packages#8031)) ([abc6b19](AztecProtocol/aztec-packages@abc6b19)) * **docs:** Cookbook integration ([#8083](AztecProtocol/aztec-packages#8083)) ([19bd8a9](AztecProtocol/aztec-packages@19bd8a9)) * Enabling public and private bridging w/ cli ([#8011](AztecProtocol/aztec-packages#8011)) ([f0f9c73](AztecProtocol/aztec-packages@f0f9c73)) * Fault-tolerant parsing of `fn` and `impl` (noir-lang/noir#5753) ([0379462](AztecProtocol/aztec-packages@0379462)) * Flush sequencer ([#8050](AztecProtocol/aztec-packages#8050)) ([8821e5f](AztecProtocol/aztec-packages@8821e5f)) * Introduce blob circuit ([#8101](AztecProtocol/aztec-packages#8101)) ([4bb3bac](AztecProtocol/aztec-packages@4bb3bac)) * Introduce validator client ([#7854](AztecProtocol/aztec-packages#7854)) ([e3be8e6](AztecProtocol/aztec-packages@e3be8e6)) * JSON logging ([#8095](AztecProtocol/aztec-packages#8095)) ([048fa12](AztecProtocol/aztec-packages@048fa12)) * LSP auto-import completion (noir-lang/noir#5741) ([0379462](AztecProtocol/aztec-packages@0379462)) * LSP autocomplete constructor fields (noir-lang/noir#5732) ([0379462](AztecProtocol/aztec-packages@0379462)) * LSP signature help (noir-lang/noir#5725) ([0379462](AztecProtocol/aztec-packages@0379462)) * Max pending jobs in prover node ([#8045](AztecProtocol/aztec-packages#8045)) ([c857604](AztecProtocol/aztec-packages@c857604)) * Move out_hash inside tx_effect_hash ([#7489](AztecProtocol/aztec-packages#7489)) ([ff0effe](AztecProtocol/aztec-packages@ff0effe)) * Native Merkle Trees ([#7037](AztecProtocol/aztec-packages#7037)) ([8a1032e](AztecProtocol/aztec-packages@8a1032e)) * Oink recursive verifier ([#8121](AztecProtocol/aztec-packages#8121)) ([580708a](AztecProtocol/aztec-packages@580708a)) * **optimization:** Follow past `array_set`s when optimizing `array_get`s (noir-lang/noir#5772) ([0379462](AztecProtocol/aztec-packages@0379462)) * Passes copy_cycles by const reference to avoid copying ([#8051](AztecProtocol/aztec-packages#8051)) ([495d363](AztecProtocol/aztec-packages@495d363)) * **perf:** Mem2reg function state for value loads to optimize across blocks (noir-lang/noir#5757) ([0379462](AztecProtocol/aztec-packages@0379462)) * PG recursive verifier constructors based on stdlib inputs ([#8052](AztecProtocol/aztec-packages#8052)) ([4c568b0](AztecProtocol/aztec-packages@4c568b0)) * Poseidon2 gates for Ultra arithmetisation ([#7494](AztecProtocol/aztec-packages#7494)) ([d86577c](AztecProtocol/aztec-packages@d86577c)) * Prover node metrics ([#8086](AztecProtocol/aztec-packages#8086)) ([ab018ff](AztecProtocol/aztec-packages@ab018ff)) * Removed socat, fixed aztec-run ([#8145](AztecProtocol/aztec-packages#8145)) ([ff94aa2](AztecProtocol/aztec-packages@ff94aa2)) * Removing redundant key fetching ([#8043](AztecProtocol/aztec-packages#8043)) ([2bbcc7b](AztecProtocol/aztec-packages@2bbcc7b)) * Replace public key fetching API ([#7996](AztecProtocol/aztec-packages#7996)) ([73d6aa9](AztecProtocol/aztec-packages@73d6aa9)) * Small optimization in toradix ([#8040](AztecProtocol/aztec-packages#8040)) ([0dc7a50](AztecProtocol/aztec-packages@0dc7a50)) * Some fixes and cleanup in PG recursive verifier ([#8053](AztecProtocol/aztec-packages#8053)) ([5f2a9bd](AztecProtocol/aztec-packages@5f2a9bd)) * Suggest trait methods in LSP completion (noir-lang/noir#5735) ([0379462](AztecProtocol/aztec-packages@0379462)) * Suggest tuple fields in LSP completion (noir-lang/noir#5730) ([0379462](AztecProtocol/aztec-packages@0379462)) * Track world state metrics ([#8109](AztecProtocol/aztec-packages#8109)) ([ca58d94](AztecProtocol/aztec-packages@ca58d94)) * Typing specific pub keys ([#8099](AztecProtocol/aztec-packages#8099)) ([638793a](AztecProtocol/aztec-packages@638793a)) * Unify all acir recursion constraints based on RecursionConstraint and proof_type ([#7993](AztecProtocol/aztec-packages#7993)) ([7cb39bc](AztecProtocol/aztec-packages@7cb39bc)) * User `super::` in LSP autocompletion if possible (noir-lang/noir#5751) ([0379462](AztecProtocol/aztec-packages@0379462)) * Various token note improvements ([#8062](AztecProtocol/aztec-packages#8062)) ([8f9dfd9](AztecProtocol/aztec-packages@8f9dfd9)) * Zk sumcheck ([#7517](AztecProtocol/aztec-packages#7517)) ([0e9a530](AztecProtocol/aztec-packages@0e9a530)) ### Bug Fixes * (LSP) only add cached files relevant to workspace (noir-lang/noir#5775) ([2d70215](AztecProtocol/aztec-packages@2d70215)) * Add DEBUG and LOG_LEVEL to valid env vars ([#8094](AztecProtocol/aztec-packages#8094)) ([70e61f9](AztecProtocol/aztec-packages@70e61f9)) * Add link to l1-artifacts ([#7940](AztecProtocol/aztec-packages#7940)) ([dcfd120](AztecProtocol/aztec-packages@dcfd120)) * Add missing trait impls for integer types to stdlib (noir-lang/noir#5738) ([0379462](AztecProtocol/aztec-packages@0379462)) * Allow comptime code to use break without also being `unconstrained` (noir-lang/noir#5744) ([0379462](AztecProtocol/aztec-packages@0379462)) * **avm:** Real bytes finalization ([#8041](AztecProtocol/aztec-packages#8041)) ([047461a](AztecProtocol/aztec-packages@047461a)) * **ci:** Correctly run bb tests with asserts ([#7607](AztecProtocol/aztec-packages#7607)) ([7b73f69](AztecProtocol/aztec-packages@7b73f69)) * Correctly constrain get header at ([#7893](AztecProtocol/aztec-packages#7893)) ([2ebba0d](AztecProtocol/aztec-packages@2ebba0d)) * Deploy L1 rollup contract using salt if provided ([#8074](AztecProtocol/aztec-packages#8074)) ([1e8eddf](AztecProtocol/aztec-packages@1e8eddf)) * Flaky e2e_prover_node test ([#8116](AztecProtocol/aztec-packages#8116)) ([9d97bd4](AztecProtocol/aztec-packages@9d97bd4)) * **frontend:** Continue type check if we are missing an unsafe block (noir-lang/noir#5720) ([0379462](AztecProtocol/aztec-packages@0379462)) * Let LSP autocompletion work in more contexts (noir-lang/noir#5719) ([0379462](AztecProtocol/aztec-packages@0379462)) * Port option & extracting correct namespaced options ([#8097](AztecProtocol/aztec-packages#8097)) ([e74c83e](AztecProtocol/aztec-packages@e74c83e)) * Set prover node max pending jobs in tests ([#8055](AztecProtocol/aztec-packages#8055)) ([403c26f](AztecProtocol/aztec-packages@403c26f)) * Stop WorldStrateSynchronizer in prover node ([#8126](AztecProtocol/aztec-packages#8126)) ([f724b07](AztecProtocol/aztec-packages@f724b07)) * Txe port and aztec start options ([#8071](AztecProtocol/aztec-packages#8071)) ([23778c5](AztecProtocol/aztec-packages@23778c5)) * Unconstrained fn mismatch is now a warning (noir-lang/noir#5764) ([0379462](AztecProtocol/aztec-packages@0379462)) * Wallet fixes for devnet, testing and misc ([#8058](AztecProtocol/aztec-packages#8058)) ([15f3e8c](AztecProtocol/aztec-packages@15f3e8c)) ### Miscellaneous * Add Brillig loop bytecode size regression and update noir-gates-diff report (noir-lang/noir#5747) ([0379462](AztecProtocol/aztec-packages@0379462)) * Apply some new lints across workspace (noir-lang/noir#5736) ([0379462](AztecProtocol/aztec-packages@0379462)) * **avm:** Kernel trace and finalization ([#8049](AztecProtocol/aztec-packages#8049)) ([d7edd24](AztecProtocol/aztec-packages@d7edd24)) * **avm:** Separate alu finalization ([#8069](AztecProtocol/aztec-packages#8069)) ([e8a9eb4](AztecProtocol/aztec-packages@e8a9eb4)) * **bb:** IPA parallelization cleanup ([#8088](AztecProtocol/aztec-packages#8088)) ([9227fa9](AztecProtocol/aztec-packages@9227fa9)) * **bb:** Simplify parallel_for_if_effective ([#8079](AztecProtocol/aztec-packages#8079)) ([5bff26b](AztecProtocol/aztec-packages@5bff26b)) * **bb:** Small cleanup in protogalaxy prover ([#8072](AztecProtocol/aztec-packages#8072)) ([4cb5c83](AztecProtocol/aztec-packages@4cb5c83)) * **ci:** Only show last 50 master cpp benches ([#8075](AztecProtocol/aztec-packages#8075)) ([96f35bc](AztecProtocol/aztec-packages@96f35bc)) * Clarify Field use (noir-lang/noir#5740) ([0379462](AztecProtocol/aztec-packages@0379462)) * CLI command to set latest block as proven ([#7987](AztecProtocol/aztec-packages#7987)) ([80eaf1d](AztecProtocol/aztec-packages@80eaf1d)) * Configuration for bot on various networks ([#8063](AztecProtocol/aztec-packages#8063)) ([453a096](AztecProtocol/aztec-packages@453a096)) * Count brillig opcodes in nargo info (noir-lang/noir#5189) ([0379462](AztecProtocol/aztec-packages@0379462)) * Deduplication in Protogalaxy ([#8067](AztecProtocol/aztec-packages#8067)) ([a5cc3ba](AztecProtocol/aztec-packages@a5cc3ba)) * **docs:** Expanding solidity verifier chain list (noir-lang/noir#5587) ([0379462](AztecProtocol/aztec-packages@0379462)) * Dont trail whitespace in vscode ([#5661](AztecProtocol/aztec-packages#5661)) ([7595d91](AztecProtocol/aztec-packages@7595d91)) * Handle constant output for ec add opcode ([#8108](AztecProtocol/aztec-packages#8108)) ([2ee79d2](AztecProtocol/aztec-packages@2ee79d2)) * Make spans non-optional on `UnresolvedType` (noir-lang/noir#5773) ([2d70215](AztecProtocol/aztec-packages@2d70215)) * Merge devnet fixes back to master ([#8149](AztecProtocol/aztec-packages#8149)) ([6be2183](AztecProtocol/aztec-packages@6be2183)) * Merge devnet to master ([#8044](AztecProtocol/aztec-packages#8044)) ([f84950f](AztecProtocol/aztec-packages@f84950f)) * Merge Provernet back to master ([#8070](AztecProtocol/aztec-packages#8070)) ([82f3dc7](AztecProtocol/aztec-packages@82f3dc7)) * Merging `TokenWithRefunds` with `Token` ([#8042](AztecProtocol/aztec-packages#8042)) ([8b795eb](AztecProtocol/aztec-packages@8b795eb)) * Modified devnet config ([#8087](AztecProtocol/aztec-packages#8087)) ([854ab45](AztecProtocol/aztec-packages@854ab45)) * Nuking old registry contract ([#8057](AztecProtocol/aztec-packages#8057)) ([3bd08a8](AztecProtocol/aztec-packages@3bd08a8)), closes [#7955](AztecProtocol/aztec-packages#7955) * Pedersen hash related cleanup in aztec.nr ([#8009](AztecProtocol/aztec-packages#8009)) ([3c4ac65](AztecProtocol/aztec-packages@3c4ac65)) * Portal manager cli ([#8047](AztecProtocol/aztec-packages#8047)) ([618e251](AztecProtocol/aztec-packages@618e251)) * Proper portal setup for fees + test ([#7944](AztecProtocol/aztec-packages#7944)) ([9fec67e](AztecProtocol/aztec-packages@9fec67e)) * Public kernel ([#8061](AztecProtocol/aztec-packages#8061)) ([617a69c](AztecProtocol/aztec-packages@617a69c)) * Refactor ACIR function IDs from raw integers to struct (noir-lang/noir#5748) ([0379462](AztecProtocol/aztec-packages@0379462)) * Replace relative paths to noir-protocol-circuits ([5ddf0e6](AztecProtocol/aztec-packages@5ddf0e6)) * Replace relative paths to noir-protocol-circuits ([ca77c17](AztecProtocol/aztec-packages@ca77c17)) * Replace relative paths to noir-protocol-circuits ([fe73c93](AztecProtocol/aztec-packages@fe73c93)) * Replace relative paths to noir-protocol-circuits ([576bc2f](AztecProtocol/aztec-packages@576bc2f)) * Replace relative paths to noir-protocol-circuits ([0d05d6b](AztecProtocol/aztec-packages@0d05d6b)) * Simplify sequencer and l1 communication ([#7989](AztecProtocol/aztec-packages#7989)) ([cee4eba](AztecProtocol/aztec-packages@cee4eba)) * Split LSP completion.rs into several files (noir-lang/noir#5723) ([0379462](AztecProtocol/aztec-packages@0379462)) * Split up stdlib/recursion ([#8054](AztecProtocol/aztec-packages#8054)) ([ec03e40](AztecProtocol/aztec-packages@ec03e40)) * **sync-noir:** Fix modify/delete conflicts automatically ([#8090](AztecProtocol/aztec-packages#8090)) ([a09627c](AztecProtocol/aztec-packages@a09627c)) * Use decider verifier in ultra verifier ([#8115](AztecProtocol/aztec-packages#8115)) ([6c5ab2b](AztecProtocol/aztec-packages@6c5ab2b)) ### Documentation * Fix typo overview.md ([#7908](AztecProtocol/aztec-packages#7908)) ([3749211](AztecProtocol/aztec-packages@3749211)) * Update installation info for bb and noir ([#8119](AztecProtocol/aztec-packages#8119)) ([a744321](AztecProtocol/aztec-packages@a744321)) </details> <details><summary>barretenberg: 0.50.0</summary> ## [0.50.0](AztecProtocol/aztec-packages@barretenberg-v0.49.2...barretenberg-v0.50.0) (2024-08-22) ### Features * Add a prover-node to the proving e2e tests ([#7952](AztecProtocol/aztec-packages#7952)) ([ec5a5fb](AztecProtocol/aztec-packages@ec5a5fb)) * Automate verify_honk_proof input generation ([#8092](AztecProtocol/aztec-packages#8092)) ([bf38d61](AztecProtocol/aztec-packages@bf38d61)) * **avm:** Enable zeromorph in AVM verification ([#8111](AztecProtocol/aztec-packages#8111)) ([b1f9fb6](AztecProtocol/aztec-packages@b1f9fb6)), closes [#4944](AztecProtocol/aztec-packages#4944) * Native Merkle Trees ([#7037](AztecProtocol/aztec-packages#7037)) ([8a1032e](AztecProtocol/aztec-packages@8a1032e)) * Oink recursive verifier ([#8121](AztecProtocol/aztec-packages#8121)) ([580708a](AztecProtocol/aztec-packages@580708a)) * Passes copy_cycles by const reference to avoid copying ([#8051](AztecProtocol/aztec-packages#8051)) ([495d363](AztecProtocol/aztec-packages@495d363)) * PG recursive verifier constructors based on stdlib inputs ([#8052](AztecProtocol/aztec-packages#8052)) ([4c568b0](AztecProtocol/aztec-packages@4c568b0)) * Poseidon2 gates for Ultra arithmetisation ([#7494](AztecProtocol/aztec-packages#7494)) ([d86577c](AztecProtocol/aztec-packages@d86577c)) * Some fixes and cleanup in PG recursive verifier ([#8053](AztecProtocol/aztec-packages#8053)) ([5f2a9bd](AztecProtocol/aztec-packages@5f2a9bd)) * Unify all acir recursion constraints based on RecursionConstraint and proof_type ([#7993](AztecProtocol/aztec-packages#7993)) ([7cb39bc](AztecProtocol/aztec-packages@7cb39bc)) * Zk sumcheck ([#7517](AztecProtocol/aztec-packages#7517)) ([0e9a530](AztecProtocol/aztec-packages@0e9a530)) ### Bug Fixes * **avm:** Real bytes finalization ([#8041](AztecProtocol/aztec-packages#8041)) ([047461a](AztecProtocol/aztec-packages@047461a)) * **ci:** Correctly run bb tests with asserts ([#7607](AztecProtocol/aztec-packages#7607)) ([7b73f69](AztecProtocol/aztec-packages@7b73f69)) ### Miscellaneous * **avm:** Kernel trace and finalization ([#8049](AztecProtocol/aztec-packages#8049)) ([d7edd24](AztecProtocol/aztec-packages@d7edd24)) * **avm:** Separate alu finalization ([#8069](AztecProtocol/aztec-packages#8069)) ([e8a9eb4](AztecProtocol/aztec-packages@e8a9eb4)) * **bb:** IPA parallelization cleanup ([#8088](AztecProtocol/aztec-packages#8088)) ([9227fa9](AztecProtocol/aztec-packages@9227fa9)) * **bb:** Simplify parallel_for_if_effective ([#8079](AztecProtocol/aztec-packages#8079)) ([5bff26b](AztecProtocol/aztec-packages@5bff26b)) * **bb:** Small cleanup in protogalaxy prover ([#8072](AztecProtocol/aztec-packages#8072)) ([4cb5c83](AztecProtocol/aztec-packages@4cb5c83)) * Deduplication in Protogalaxy ([#8067](AztecProtocol/aztec-packages#8067)) ([a5cc3ba](AztecProtocol/aztec-packages@a5cc3ba)) * Handle constant output for ec add opcode ([#8108](AztecProtocol/aztec-packages#8108)) ([2ee79d2](AztecProtocol/aztec-packages@2ee79d2)) * Merge devnet fixes back to master ([#8149](AztecProtocol/aztec-packages#8149)) ([6be2183](AztecProtocol/aztec-packages@6be2183)) * Split up stdlib/recursion ([#8054](AztecProtocol/aztec-packages#8054)) ([ec03e40](AztecProtocol/aztec-packages@ec03e40)) * Use decider verifier in ultra verifier ([#8115](AztecProtocol/aztec-packages#8115)) ([6c5ab2b](AztecProtocol/aztec-packages@6c5ab2b)) ### Documentation * Update installation info for bb and noir ([#8119](AztecProtocol/aztec-packages#8119)) ([a744321](AztecProtocol/aztec-packages@a744321)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Overview
This PR:
fixes:
Right now the nodes only attest over the archive, not the entire transaction contents. It is likely that this will change to the block header.
Issues spawned from this PR
Icks: