Conversation
|
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @LHerskind and the rest of your teammates on |
e55098b to
2cb5eea
Compare
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 | | |
b68ce98 to
8dd3961
Compare
|
@spalladino I recall you mentioned at some point to let you know if new flags etc 👀 I have a new flag here, it is effective if we are using |
8dd3961 to
eb16d6e
Compare
| global INITIAL_L2_BLOCK_NUM: Field = 1; | ||
| global BLOB_SIZE_IN_BYTES: Field = 31 * 4096; | ||
| global ETHEREUM_SLOT_DURATION: u32 = 12; | ||
| global AZTEC_SLOT_DURATION: u32 = ETHEREUM_SLOT_DURATION * 1; |
There was a problem hiding this comment.
Want the AZTEC_SLOT_DURATION to be a multiple of a ETHEREUM_SLOT_DURATION so just makes it very easy to change it to 3 to have the different duration 🤷 Is not really needed when the value is 1, but just kinda nice to showcase multiple I think.
Maddiaa0
left a comment
There was a problem hiding this comment.
Overall great work, I'm not the biggest fan of the wrap logic living within the node itself, but it seems to be a necessary evil
l1-contracts/src/core/Rollup.sol
Outdated
| // Genesis block | ||
| blocks[0] = BlockLog({archive: bytes32(0), slotNumber: 0, isProven: true}); | ||
| blocks[0] = BlockLog({ | ||
| archive: bytes32(0x1200a06aae1368abe36530b585bd7a4d2ba4de5037b82076412691a187d7621e), |
There was a problem hiding this comment.
Where is this calcualted from ?
There was a problem hiding this comment.
Is the lastArchive that all tests will spit out for block 1, e.g., what initial state of the trees.
| const numberOfConsecutiveBlocks = 2; | ||
|
|
||
| // The initial archive is what we have in the genesis block in `Rollup.sol`. | ||
| const INITIAL_ARCHIVE = Fr.fromString('0x1200a06aae1368abe36530b585bd7a4d2ba4de5037b82076412691a187d7621e').toBuffer(); |
There was a problem hiding this comment.
would this make sense to go in the constants if it will be hardcoded as such
There was a problem hiding this comment.
Ye probably a fine idea.
| publisherPrivateKey: sequencerPK, | ||
| l1PublishRetryIntervalMS: 100, | ||
| l1ChainId: 31337, | ||
| timeTraveler: true, |
There was a problem hiding this comment.
shall we add an issue to remove this at some point
| return false; | ||
| } | ||
|
|
||
| async commitTimeJump(slot: bigint) { |
There was a problem hiding this comment.
Is it enough just to have test utilities to calaulcate / do this, rather than embed this inside the publisher itself?
There was a problem hiding this comment.
i guess it needs to go in here to make the other tests pass within IS_DEV_NET
There was a problem hiding this comment.
The reason it was in the publisher itself was that it was something we needed to do when a block was published (or for the simulation issue), so keeping it there gave better control.
Alternatively could be running in the background in the tests to progress blocks if nothing have happened for 12 seconds essentially making a fallback to the interval mining, which would be slower unless it also look into jumping the required time for slots etc.
There was a problem hiding this comment.
Tried it out. Works fine for handling the "slot already filled", but non-obvious how to check for the simulation failure without rebuilding a lot of the sequencer, so just had a "progress block at least every 12 seconds". It will kinda work, but it is really slow if it start running into the "have to wait" case.
| expect(rollupContractWrite.process).toHaveBeenCalledTimes(1); | ||
| }); | ||
|
|
||
| it('does not retry if simulating a publish and process tx fails', async () => { |
| client: walletClient, | ||
| }); | ||
|
|
||
| // @note We make a time jump PAST the very first slot to not have to deal with the edge case of the first slot |
There was a problem hiding this comment.
can you explain why the first slot is such an edge case, not necessarily in the code, but to me
There was a problem hiding this comment.
The genesis block is at slot 0, so the slot is already occupied.
There was a problem hiding this comment.
That feels like a worthy comment in the code
There was a problem hiding this comment.
update: necessarily in the code
| beforeEach(async () => { | ||
| ({ teardown, config, logger, deployL1ContractsValues } = await setup(0)); | ||
| // If we want to test with interval mining, we can use the local host and start `anvil --block-time 12` | ||
| const useLocalHost = false; |
There was a problem hiding this comment.
could have the interval mining settings added to the createAnvilOpts instead? So it is not as siloed to this test
There was a problem hiding this comment.
Was not always for interval, sometimes also just used it to get proper errors back. For cases like the e2e_token_contract I think it might cause quite a bit of pain if they are all using the same local anvil for example (unless interval mining ye). The case is only really interesting for testing the sequencing which is currently only happening in this test.
| @trackSpan('Sequencer.buildBlockAndPublish', (_validTxs, newGlobalVariables, _historicalHeader) => ({ | ||
| [Attributes.BLOCK_NUMBER]: newGlobalVariables.blockNumber.toNumber(), | ||
| })) | ||
| async canProposeBlock( |
| return true; | ||
| } | ||
|
|
||
| async assertCanStillProposeBlock(): Promise<void> {} |
eb16d6e to
a4fd588
Compare
| } | ||
|
|
||
| _testBlock("mixed_block_1", false, 0, false); // We run a block before the epoch with validators | ||
| _testBlock("mixed_block_1", false, 3, false); // We run a block before the epoch with validators |
|
|
||
| // @todo @LHerskind need to make sure that time have progressed to the next slot! | ||
| await setTimeToNextSlot(); | ||
| await progressTimeBySlot(); |
There was a problem hiding this comment.
Is this just to help the next test?
There was a problem hiding this comment.
Its running a loop and publishing to the contract so if the contract it unhappy it would make the test fail. The underlying chain just have to be progressed, when the block time are equal for the two there are no issues, but it gets weird when they differ without this one.
| client: walletClient, | ||
| }); | ||
|
|
||
| // @note We make a time jump PAST the very first slot to not have to deal with the edge case of the first slot |
There was a problem hiding this comment.
That feels like a worthy comment in the code
| const submitter = await this.getProposerAtNextEthBlock(); | ||
| const sender = await this.getSenderAddress(); | ||
| return submitter.isZero() || submitter.equals(sender); | ||
| // @note Assumes that all ethereum slots have blocks |
There was a problem hiding this comment.
Can we create an issue to test the case where L1 has empty slots?
There was a problem hiding this comment.
Not sure if anvil allow you to do this. The issue that might be encountered if this is the very last check before publishing could be that you are publishing a tx that will end up reverting. Would happen if the last slot you could include your tx in is also the one that is skipped.
There was a problem hiding this comment.
Yeah I think we'd just need to kill anvil for a period of time and then restore it.
| } | ||
|
|
||
| // If the aztec slot duration is same length as the ethereum slot duration, we don't need to do anything | ||
| if ((ETHEREUM_SLOT_DURATION as number) === (AZTEC_SLOT_DURATION as number)) { |
There was a problem hiding this comment.
Why doesn't this help us when they are the same?
For example, suppose L1 is at t=13 seconds after genesis.
We just published the block in slot 1.
Would we not want to jump L1 to t=24?
There was a problem hiding this comment.
In that case, the next block will already be at 24, you don't need to jump to it. Also, I believe you mean t=13 for the first?
| return submitter.isZero() || submitter.equals(sender); | ||
| // @note Assumes that all ethereum slots have blocks | ||
| // Using next Ethereum block so we do NOT need to wait for it being mined before seeing the effect | ||
| public async getMetadataForSlotAtNextEthBlock(): Promise<[EthAddress, bigint, bigint, Buffer]> { |
There was a problem hiding this comment.
I generally dislike returning tuples like this especially when there are repeated types (bigint, bigint).
For example, it took me a minute to understand you're returning the pendingBlockNumber.
There was a problem hiding this comment.
Can change it to a struct.
| throw new Error(msg); | ||
| } | ||
|
|
||
| const currentBlockNumber = await this.l2BlockSource.getBlockNumber(); |
There was a problem hiding this comment.
How could this happen if we have ensured that L1 is expecting this block number?
There was a problem hiding this comment.
const msg = 'New block was emitted while building block';If anyone else published a block.
|
|
||
| if (IS_DEV_NET) { | ||
| // Compute time elapsed since the previous block | ||
| const lastBlockTime = historicalHeader?.globalVariables.timestamp.toNumber() || 0; |
There was a problem hiding this comment.
Seems like duplication of skipMinTxsPerBlockCheck
There was a problem hiding this comment.
Different variables. minSecondsBetweenBlocks != maxSecondsBetweenBlocks.
| let attestations: BlockAttestation[] = []; | ||
| this.log.info(`Waiting for ${numberOfRequiredAttestations} attestations for slot: ${slot}`); | ||
|
|
||
| let attestations: BlockAttestation[] = [await this.attestToProposal(proposal)]; |
There was a problem hiding this comment.
I always attest to my own proposal?
There was a problem hiding this comment.
The smart contract does not filter the proposer from the expected signatures, this could probably be removed by doing the filtering
There was a problem hiding this comment.
He is a member of the committee, so he can attest 🤷 Pretty sure the same is the case for other systems as well. If you are running small committees it is also a requirement to really hit the quorum needed.
|
@LHerskind thanks for the heads up. Not sure I followed though: the new flag is the |
In here it is Currently, we are taking a look to see if we can rip it out, such that you don't have to deal with it at all. |
a4fd588 to
f056f6b
Compare
f056f6b to
10d2ad6
Compare
Following #8193 I'm not really sure around the setup that you are using for the devnet/provernet, since I would expect you to be running it with the same block times as Eth but the issues encountered there seems to be mainly related to timing of the underlying not matching what was expected. If the |
10d2ad6 to
6123a76
Compare
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.51.1</summary> ## [0.51.1](aztec-package-v0.51.0...aztec-package-v0.51.1) (2024-08-29) ### Features * Add status check to prover agent ([#8248](#8248)) ([7b3006a](7b3006a)) * Faster L1 deployment ([#8234](#8234)) ([51d6699](51d6699)) * Spartan token transfer ([#8163](#8163)) ([38f0157](38f0157)) </details> <details><summary>barretenberg.js: 0.51.1</summary> ## [0.51.1](barretenberg.js-v0.51.0...barretenberg.js-v0.51.1) (2024-08-29) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.51.1</summary> ## [0.51.1](aztec-packages-v0.51.0...aztec-packages-v0.51.1) (2024-08-29) ### Features * Add CLI command for gathering proving metrics ([#8221](#8221)) ([5929a42](5929a42)) * Add status check to prover agent ([#8248](#8248)) ([7b3006a](7b3006a)) * **avm:** 1-slot sload/sstore (nr, ts) ([#8264](#8264)) ([bdd9b06](bdd9b06)) * **avm:** Range check gadget ([#7967](#7967)) ([0dd954e](0dd954e)) * **docs:** Add partial notes doc ([#8192](#8192)) ([4299bbd](4299bbd)) * Faster L1 deployment ([#8234](#8234)) ([51d6699](51d6699)) * Initial validator set ([#8133](#8133)) ([6d31ad2](6d31ad2)) * L1-publisher cleanup ([#8148](#8148)) ([6ae2535](6ae2535)) * Proof surgery class ([#8236](#8236)) ([10d7edd](10d7edd)) * Request specific transactions through the p2p layer ([#8185](#8185)) ([54e1cc7](54e1cc7)) * Slot duration flexibility ([#8122](#8122)) ([708e4e5](708e4e5)) * Spartan token transfer ([#8163](#8163)) ([38f0157](38f0157)) ### Bug Fixes * Attempt to fix nightly test ([#8222](#8222)) ([477eec5](477eec5)) * **avm-simulator:** Await avm bytecode check ([#8268](#8268)) ([4410eb3](4410eb3)) * **bb-prover:** Create structure for AVM vk ([#8233](#8233)) ([55b6ba2](55b6ba2)) * **bb:** Mac build ([#8255](#8255)) ([ac54f5c](ac54f5c)) * **ci:** Spot-runner-action was not built ([#8274](#8274)) ([c1509c1](c1509c1)) * **ci:** Try fix brotli edge-case ([#8256](#8256)) ([e03ea0b](e03ea0b)) * Docker containers healthchecks ([#8228](#8228)) ([19edbbb](19edbbb)) * **docs:** Update entrypoint details on accounts page ([#8184](#8184)) ([8453ec7](8453ec7)) * Export brillig names in contract functions ([#8212](#8212)) ([4745741](4745741)) * Fixes for the nightly test run against Sepolia ([#8229](#8229)) ([cfc65c6](cfc65c6)) * Handle constant output for sha256 ([#8251](#8251)) ([0653ba5](0653ba5)) * Log public vm errors as warn in prover-agent ([#8247](#8247)) ([9f4ea9f](9f4ea9f)) * Remove devnet ARM builds for now ([#8202](#8202)) ([81ef715](81ef715)) * Remove fundFpc step from bootstrap ([#8245](#8245)) ([a742531](a742531)) * Ts codegen ([#8267](#8267)) ([cb58800](cb58800)) ### Miscellaneous * Add check to just release images to devnet-deploys ([#8242](#8242)) ([aa6791d](aa6791d)) * Add partial note support for value note ([#8141](#8141)) ([daa57cc](daa57cc)) * Always run `build-check` step in `publish-bb.yml` ([#8240](#8240)) ([5e9749f](5e9749f)) * **avm:** Replace range and cmp with gadgets ([#8164](#8164)) ([cc12558](cc12558)) * Basic network matrix ([#8257](#8257)) ([2a76b1a](2a76b1a)), closes [#8001](#8001) * **bb:** Use std::span in pippenger for scalars ([#8269](#8269)) ([2323cd5](2323cd5)) * Configure interval mining for anvil ([#8211](#8211)) ([eba57b4](eba57b4)) * Create external-ci-approved.yml ([#8235](#8235)) ([24b059b](24b059b)) * Disallow prune in devnet + add onlyOwners ([#8134](#8134)) ([c736f96](c736f96)) * Fix various warnings in noir code ([#8258](#8258)) ([1c6b478](1c6b478)) * Less noisy AVM failures in proving ([#8227](#8227)) ([03bcd62](03bcd62)) * Open an issue if publishing bb fails ([#8223](#8223)) ([2d7a775](2d7a775)) * Reinstate l1-contracts package ([#8250](#8250)) ([263a912](263a912)) * Remove unused generic parameters ([#8249](#8249)) ([00ed045](00ed045)) * Replace relative paths to noir-protocol-circuits ([1783c80](1783c80)) * Replace relative paths to noir-protocol-circuits ([ffe1f35](ffe1f35)) * Report prover metrics ([#8155](#8155)) ([dc7bcdf](dc7bcdf)), closes [#7675](#7675) * Rework balances map ([#8127](#8127)) ([1cac3dd](1cac3dd)), closes [#8104](#8104) * Run CI after merges to provernet ([#8244](#8244)) ([97e5e25](97e5e25)) ### Documentation * Minor fixes ([#8273](#8273)) ([2b8af9e](2b8af9e)) </details> <details><summary>barretenberg: 0.51.1</summary> ## [0.51.1](barretenberg-v0.51.0...barretenberg-v0.51.1) (2024-08-29) ### Features * **avm:** 1-slot sload/sstore (nr, ts) ([#8264](#8264)) ([bdd9b06](bdd9b06)) * **avm:** Range check gadget ([#7967](#7967)) ([0dd954e](0dd954e)) * Proof surgery class ([#8236](#8236)) ([10d7edd](10d7edd)) ### Bug Fixes * **bb-prover:** Create structure for AVM vk ([#8233](#8233)) ([55b6ba2](55b6ba2)) * **bb:** Mac build ([#8255](#8255)) ([ac54f5c](ac54f5c)) * Handle constant output for sha256 ([#8251](#8251)) ([0653ba5](0653ba5)) ### Miscellaneous * **avm:** Replace range and cmp with gadgets ([#8164](#8164)) ([cc12558](cc12558)) * **bb:** Use std::span in pippenger for scalars ([#8269](#8269)) ([2323cd5](2323cd5)) </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.51.1</summary> ## [0.51.1](AztecProtocol/aztec-packages@aztec-package-v0.51.0...aztec-package-v0.51.1) (2024-08-29) ### Features * Add status check to prover agent ([#8248](AztecProtocol/aztec-packages#8248)) ([7b3006a](AztecProtocol/aztec-packages@7b3006a)) * Faster L1 deployment ([#8234](AztecProtocol/aztec-packages#8234)) ([51d6699](AztecProtocol/aztec-packages@51d6699)) * Spartan token transfer ([#8163](AztecProtocol/aztec-packages#8163)) ([38f0157](AztecProtocol/aztec-packages@38f0157)) </details> <details><summary>barretenberg.js: 0.51.1</summary> ## [0.51.1](AztecProtocol/aztec-packages@barretenberg.js-v0.51.0...barretenberg.js-v0.51.1) (2024-08-29) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.51.1</summary> ## [0.51.1](AztecProtocol/aztec-packages@aztec-packages-v0.51.0...aztec-packages-v0.51.1) (2024-08-29) ### Features * Add CLI command for gathering proving metrics ([#8221](AztecProtocol/aztec-packages#8221)) ([5929a42](AztecProtocol/aztec-packages@5929a42)) * Add status check to prover agent ([#8248](AztecProtocol/aztec-packages#8248)) ([7b3006a](AztecProtocol/aztec-packages@7b3006a)) * **avm:** 1-slot sload/sstore (nr, ts) ([#8264](AztecProtocol/aztec-packages#8264)) ([bdd9b06](AztecProtocol/aztec-packages@bdd9b06)) * **avm:** Range check gadget ([#7967](AztecProtocol/aztec-packages#7967)) ([0dd954e](AztecProtocol/aztec-packages@0dd954e)) * **docs:** Add partial notes doc ([#8192](AztecProtocol/aztec-packages#8192)) ([4299bbd](AztecProtocol/aztec-packages@4299bbd)) * Faster L1 deployment ([#8234](AztecProtocol/aztec-packages#8234)) ([51d6699](AztecProtocol/aztec-packages@51d6699)) * Initial validator set ([#8133](AztecProtocol/aztec-packages#8133)) ([6d31ad2](AztecProtocol/aztec-packages@6d31ad2)) * L1-publisher cleanup ([#8148](AztecProtocol/aztec-packages#8148)) ([6ae2535](AztecProtocol/aztec-packages@6ae2535)) * Proof surgery class ([#8236](AztecProtocol/aztec-packages#8236)) ([10d7edd](AztecProtocol/aztec-packages@10d7edd)) * Request specific transactions through the p2p layer ([#8185](AztecProtocol/aztec-packages#8185)) ([54e1cc7](AztecProtocol/aztec-packages@54e1cc7)) * Slot duration flexibility ([#8122](AztecProtocol/aztec-packages#8122)) ([708e4e5](AztecProtocol/aztec-packages@708e4e5)) * Spartan token transfer ([#8163](AztecProtocol/aztec-packages#8163)) ([38f0157](AztecProtocol/aztec-packages@38f0157)) ### Bug Fixes * Attempt to fix nightly test ([#8222](AztecProtocol/aztec-packages#8222)) ([477eec5](AztecProtocol/aztec-packages@477eec5)) * **avm-simulator:** Await avm bytecode check ([#8268](AztecProtocol/aztec-packages#8268)) ([4410eb3](AztecProtocol/aztec-packages@4410eb3)) * **bb-prover:** Create structure for AVM vk ([#8233](AztecProtocol/aztec-packages#8233)) ([55b6ba2](AztecProtocol/aztec-packages@55b6ba2)) * **bb:** Mac build ([#8255](AztecProtocol/aztec-packages#8255)) ([ac54f5c](AztecProtocol/aztec-packages@ac54f5c)) * **ci:** Spot-runner-action was not built ([#8274](AztecProtocol/aztec-packages#8274)) ([c1509c1](AztecProtocol/aztec-packages@c1509c1)) * **ci:** Try fix brotli edge-case ([#8256](AztecProtocol/aztec-packages#8256)) ([e03ea0b](AztecProtocol/aztec-packages@e03ea0b)) * Docker containers healthchecks ([#8228](AztecProtocol/aztec-packages#8228)) ([19edbbb](AztecProtocol/aztec-packages@19edbbb)) * **docs:** Update entrypoint details on accounts page ([#8184](AztecProtocol/aztec-packages#8184)) ([8453ec7](AztecProtocol/aztec-packages@8453ec7)) * Export brillig names in contract functions ([#8212](AztecProtocol/aztec-packages#8212)) ([4745741](AztecProtocol/aztec-packages@4745741)) * Fixes for the nightly test run against Sepolia ([#8229](AztecProtocol/aztec-packages#8229)) ([cfc65c6](AztecProtocol/aztec-packages@cfc65c6)) * Handle constant output for sha256 ([#8251](AztecProtocol/aztec-packages#8251)) ([0653ba5](AztecProtocol/aztec-packages@0653ba5)) * Log public vm errors as warn in prover-agent ([#8247](AztecProtocol/aztec-packages#8247)) ([9f4ea9f](AztecProtocol/aztec-packages@9f4ea9f)) * Remove devnet ARM builds for now ([#8202](AztecProtocol/aztec-packages#8202)) ([81ef715](AztecProtocol/aztec-packages@81ef715)) * Remove fundFpc step from bootstrap ([#8245](AztecProtocol/aztec-packages#8245)) ([a742531](AztecProtocol/aztec-packages@a742531)) * Ts codegen ([#8267](AztecProtocol/aztec-packages#8267)) ([cb58800](AztecProtocol/aztec-packages@cb58800)) ### Miscellaneous * Add check to just release images to devnet-deploys ([#8242](AztecProtocol/aztec-packages#8242)) ([aa6791d](AztecProtocol/aztec-packages@aa6791d)) * Add partial note support for value note ([#8141](AztecProtocol/aztec-packages#8141)) ([daa57cc](AztecProtocol/aztec-packages@daa57cc)) * Always run `build-check` step in `publish-bb.yml` ([#8240](AztecProtocol/aztec-packages#8240)) ([5e9749f](AztecProtocol/aztec-packages@5e9749f)) * **avm:** Replace range and cmp with gadgets ([#8164](AztecProtocol/aztec-packages#8164)) ([cc12558](AztecProtocol/aztec-packages@cc12558)) * Basic network matrix ([#8257](AztecProtocol/aztec-packages#8257)) ([2a76b1a](AztecProtocol/aztec-packages@2a76b1a)), closes [#8001](AztecProtocol/aztec-packages#8001) * **bb:** Use std::span in pippenger for scalars ([#8269](AztecProtocol/aztec-packages#8269)) ([2323cd5](AztecProtocol/aztec-packages@2323cd5)) * Configure interval mining for anvil ([#8211](AztecProtocol/aztec-packages#8211)) ([eba57b4](AztecProtocol/aztec-packages@eba57b4)) * Create external-ci-approved.yml ([#8235](AztecProtocol/aztec-packages#8235)) ([24b059b](AztecProtocol/aztec-packages@24b059b)) * Disallow prune in devnet + add onlyOwners ([#8134](AztecProtocol/aztec-packages#8134)) ([c736f96](AztecProtocol/aztec-packages@c736f96)) * Fix various warnings in noir code ([#8258](AztecProtocol/aztec-packages#8258)) ([1c6b478](AztecProtocol/aztec-packages@1c6b478)) * Less noisy AVM failures in proving ([#8227](AztecProtocol/aztec-packages#8227)) ([03bcd62](AztecProtocol/aztec-packages@03bcd62)) * Open an issue if publishing bb fails ([#8223](AztecProtocol/aztec-packages#8223)) ([2d7a775](AztecProtocol/aztec-packages@2d7a775)) * Reinstate l1-contracts package ([#8250](AztecProtocol/aztec-packages#8250)) ([263a912](AztecProtocol/aztec-packages@263a912)) * Remove unused generic parameters ([#8249](AztecProtocol/aztec-packages#8249)) ([00ed045](AztecProtocol/aztec-packages@00ed045)) * Replace relative paths to noir-protocol-circuits ([1783c80](AztecProtocol/aztec-packages@1783c80)) * Replace relative paths to noir-protocol-circuits ([ffe1f35](AztecProtocol/aztec-packages@ffe1f35)) * Report prover metrics ([#8155](AztecProtocol/aztec-packages#8155)) ([dc7bcdf](AztecProtocol/aztec-packages@dc7bcdf)), closes [#7675](AztecProtocol/aztec-packages#7675) * Rework balances map ([#8127](AztecProtocol/aztec-packages#8127)) ([1cac3dd](AztecProtocol/aztec-packages@1cac3dd)), closes [#8104](AztecProtocol/aztec-packages#8104) * Run CI after merges to provernet ([#8244](AztecProtocol/aztec-packages#8244)) ([97e5e25](AztecProtocol/aztec-packages@97e5e25)) ### Documentation * Minor fixes ([#8273](AztecProtocol/aztec-packages#8273)) ([2b8af9e](AztecProtocol/aztec-packages@2b8af9e)) </details> <details><summary>barretenberg: 0.51.1</summary> ## [0.51.1](AztecProtocol/aztec-packages@barretenberg-v0.51.0...barretenberg-v0.51.1) (2024-08-29) ### Features * **avm:** 1-slot sload/sstore (nr, ts) ([#8264](AztecProtocol/aztec-packages#8264)) ([bdd9b06](AztecProtocol/aztec-packages@bdd9b06)) * **avm:** Range check gadget ([#7967](AztecProtocol/aztec-packages#7967)) ([0dd954e](AztecProtocol/aztec-packages@0dd954e)) * Proof surgery class ([#8236](AztecProtocol/aztec-packages#8236)) ([10d7edd](AztecProtocol/aztec-packages@10d7edd)) ### Bug Fixes * **bb-prover:** Create structure for AVM vk ([#8233](AztecProtocol/aztec-packages#8233)) ([55b6ba2](AztecProtocol/aztec-packages@55b6ba2)) * **bb:** Mac build ([#8255](AztecProtocol/aztec-packages#8255)) ([ac54f5c](AztecProtocol/aztec-packages@ac54f5c)) * Handle constant output for sha256 ([#8251](AztecProtocol/aztec-packages#8251)) ([0653ba5](AztecProtocol/aztec-packages@0653ba5)) ### Miscellaneous * **avm:** Replace range and cmp with gadgets ([#8164](AztecProtocol/aztec-packages#8164)) ([cc12558](AztecProtocol/aztec-packages@cc12558)) * **bb:** Use std::span in pippenger for scalars ([#8269](AztecProtocol/aztec-packages#8269)) ([2323cd5](AztecProtocol/aztec-packages@2323cd5)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).

This PR add support for using Aztec slot durations that are not just 1 ethereum slot.
To do so it adds more logic to the sequencer such that they can figure out if they are really the sequencer or not.
This is mainly in the
canProposeBlockandshouldProposeBlockfunctions which respectively assert that the proposer can actually propose, and whether he should. The logic in those functions are partly what we had sprinkled over the code before, but also adding some additional checks to match what is in the rollup contract and Leonidas.Since there are now additional restrictions to block production related to WHEN the block is to land on L1, I have added a
commitTimeJumpfunction into thel1-publisherwhich will jump to the next slot after a block have been published. This functionality toggled with aTIME_TRAVELERboolean flag.Note that we will jump INTO the next slot, since simulations in
viemandanvilare limited to run on block values in the bast, meaning that we cannot nicely just simulate as if it was included in the NEXT block which is what we ideally want. See issue #8110 for more information.Since it caused some issues that there was no actual genesis state (just 0), I have inserted a genesis state equal to what we compute as the
lastArchivefor the very first block, fixing #4148.To not mess too much with DEVNET, the extra logic related to the exact timing of when L2 blocks should make it onto L1 can be "toggled" with the
IS_DEV_NETflag.Namely, if
IS_DEV_NETis toggled, we can publish outside of the "current" slot, as long as the slots are in order. With the changes in this pr, we should be able to run DEVNET withoutautomine, I have tried a minor test but that seemed to work fine when we haveAZTEC_SLOT_DURATION = 36and internal mining :)Points of interest:
sequencer.tscanProposeBlockshouldProposeBlockl1-publisher.tssimulatesince viemwritedoes not provide meaningful error messages, butsimulatedoes.commitTimeJumpwon't happen if theAZTEC_SLOT_DURATION = ETHEREUM_SLOT_DURATIONorTIME_TRAVELER = falsesequencer.test.tsbuilds a block that contains zero real transactions once flushedsounds to me like you expect to have an empty block, after the block flushed, e.g., once flushed make it sound like it already happenedl1-publisher.test.tsdoes not publish if last archive root is different to expectedis deleted, as that job falls on the sequencer. The sequencer should define whether or not it will send a tx, and publisher deals more with publishing tasks.simulatethat is also mocked to account forsimulatein the publisher.e2e_p2p_network.test.tsThis PR will be run with
AZTEC_SLOT_DURATION = 12andIS_DEV_NET = true. Note that when using values different from those, there are still some hiccups and kinks, but it should be addressed in a separate PR to not make this explode in size.