Skip to content

feat: Node snapshot sync#12927

Merged
spalladino merged 16 commits intomasterfrom
palla/snapshots-stdlib
Mar 27, 2025
Merged

feat: Node snapshot sync#12927
spalladino merged 16 commits intomasterfrom
palla/snapshots-stdlib

Conversation

@spalladino
Copy link
Contributor

@spalladino spalladino commented Mar 21, 2025

  • Utility functions for managing snapshot indices and uploading and downloading from gcs.
  • Exposed mdb_copy from native world state and lmdb store
  • Added backupTo methods to archiver and world state
  • Added actions to the aztec node for uploading and downloading snapshots

Fixes #12926

@spalladino spalladino changed the title feat: Stdlib for chain snapshots feat: Upload snapshots for fast sync Mar 21, 2025
@spalladino spalladino force-pushed the palla/snapshots-stdlib branch from e415c21 to 50b4d8a Compare March 21, 2025 22:09
}

/**
* Forks the current DB into a new DB by backing it up to a temporary location and opening a new lmdb db.
Copy link
Member

Choose a reason for hiding this comment

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

👍


const INPUTS_PATH = 'inputs';

// REFACTOR: Use the stdlib/file-store instead of referencing google-cloud-storage directly.
Copy link
Member

Choose a reason for hiding this comment

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

issue?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Will do!


const basePath = getBasePath(metadata);
const [archiverDataUrl, worldStateDataUrl] = await Promise.all([
store.upload(`${basePath}/archiver-${date}-${metadata.l2BlockHash}.db`, archiverPath, { compress: true }),
Copy link
Member

@Maddiaa0 Maddiaa0 Mar 25, 2025

Choose a reason for hiding this comment

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

Is there a strong deason to have the date in the name, at a first glance it would make downloading more difficult, i suppose this is counteracted by the metadata, but im not convinced the metadata is required if we can just request based on the archive

Copy link
Member

Choose a reason for hiding this comment

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

Ah i see there is one index.json that points to the most recent snapshot

Copy link
Member

@Maddiaa0 Maddiaa0 left a comment

Choose a reason for hiding this comment

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

im no voice of authority on the cpp pinging @alexghr but the ts looks good

@spalladino spalladino force-pushed the palla/snapshots-stdlib branch from 50b4d8a to 6a22ba7 Compare March 25, 2025 16:47
@spalladino spalladino requested a review from Maddiaa0 March 25, 2025 22:26
@spalladino
Copy link
Contributor Author

@Maddiaa0 I added commit "Wire snapshot upload" that completes the loop, feel free to review just that one.

@spalladino
Copy link
Contributor Author

This is what an index.json file looks like:

$ cat /tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/index.json 
{
  "l1ChainId": 31337,
  "l2Version": 1,
  "rollupAddress": "0x26db1dbde404abe656c354e6331217ea7c9cc21e",
  "snapshots": [
    {
      "l1BlockNumber": 131,
      "l2BlockHash": "0x1ddc5c6b6464ac19f27e1d6ed86dab06d7b834a20d5a785825522c8d82d521c3",
      "l2BlockNumber": 31,
      "schemaVersions": {
        "archiver": 1,
        "worldState": 1
      },
      "timestamp": 1742940387189,
      "dataUrls": {
        "l1-to-l2-message-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/l1-to-l2-message-tree-20250325220627-0x1ddc5c6b6464ac19f27e1d6ed86dab06d7b834a20d5a785825522c8d82d521c3.db",
        "archive-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/archive-tree-20250325220627-0x1ddc5c6b6464ac19f27e1d6ed86dab06d7b834a20d5a785825522c8d82d521c3.db",
        "public-data-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/public-data-tree-20250325220627-0x1ddc5c6b6464ac19f27e1d6ed86dab06d7b834a20d5a785825522c8d82d521c3.db",
        "note-hash-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/note-hash-tree-20250325220627-0x1ddc5c6b6464ac19f27e1d6ed86dab06d7b834a20d5a785825522c8d82d521c3.db",
        "nullifier-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/nullifier-tree-20250325220627-0x1ddc5c6b6464ac19f27e1d6ed86dab06d7b834a20d5a785825522c8d82d521c3.db",
        "archiver": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/archiver-20250325220627-0x1ddc5c6b6464ac19f27e1d6ed86dab06d7b834a20d5a785825522c8d82d521c3.db"
      }
    },
    {
      "l2BlockNumber": 24,
      "l2BlockHash": "0x06e938f0668bb121838607e573d3aa21b0a0ed3a247655de5849887ea7bc5425",
      "l1BlockNumber": 117,
      "timestamp": 1742940331978,
      "schemaVersions": {
        "archiver": 1,
        "worldState": 1
      },
      "dataUrls": {
        "l1-to-l2-message-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/l1-to-l2-message-tree-20250325220531-0x06e938f0668bb121838607e573d3aa21b0a0ed3a247655de5849887ea7bc5425.db",
        "archive-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/archive-tree-20250325220531-0x06e938f0668bb121838607e573d3aa21b0a0ed3a247655de5849887ea7bc5425.db",
        "public-data-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/public-data-tree-20250325220531-0x06e938f0668bb121838607e573d3aa21b0a0ed3a247655de5849887ea7bc5425.db",
        "note-hash-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/note-hash-tree-20250325220531-0x06e938f0668bb121838607e573d3aa21b0a0ed3a247655de5849887ea7bc5425.db",
        "nullifier-tree": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/nullifier-tree-20250325220531-0x06e938f0668bb121838607e573d3aa21b0a0ed3a247655de5849887ea7bc5425.db",
        "archiver": "file:///tmp/aztec/aztec-31337-1-0x26db1dbde404abe656c354e6331217ea7c9cc21e/archiver-20250325220531-0x06e938f0668bb121838607e573d3aa21b0a0ed3a247655de5849887ea7bc5425.db"
      }
    }
  ]
}

@spalladino spalladino force-pushed the palla/snapshots-stdlib branch from 29b0750 to 104c922 Compare March 26, 2025 12:15
Copy link
Contributor

@alexghr alexghr left a comment

Choose a reason for hiding this comment

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

Code looks good to me. Just a couple of questions around tightening up access to the snapshot mechanism

Comment on lines +56 to +60
public async backupTo(path: string, compress = true): Promise<string> {
await this.db.backupTo(path, compress);
return join(path, 'data.mdb');
}

Copy link
Contributor

Choose a reason for hiding this comment

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

Not something for this PR but we should consider bundling the rollup address/schema version into the backup to avoid restoring incompatible versions?

Copy link
Contributor

Choose a reason for hiding this comment

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

Forgot to go back and update this comment: this is handled already. This info is part of the snapshot index

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm adding it to the snapshot metadata. We could write those as entries of the db itself though, and completely do away with the db_version file we use today. WDYT?

Comment on lines +51 to +54
public async download(pathOrUrlStr: string, destPath: string): Promise<void> {
const file = await this.getFileObject(pathOrUrlStr);
await file.download({ destination: destPath });
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Same note as above, bur for downloading

Comment on lines +39 to +45
private getFullPath(pathOrUrl: string): string {
if (URL.canParse(pathOrUrl)) {
return new URL(pathOrUrl).pathname;
} else {
return resolve(this.basePath, pathOrUrl);
}
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Should basePath always be enforced on reads and writes? Otherwise we can read/write arbitrary paths through this class

Copy link
Contributor Author

Choose a reason for hiding this comment

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

return this.validatorsSentinel?.computeStats() ?? Promise.resolve({ stats: {}, slotWindow: 0 });
}

public async startSnapshotUpload(location: string): Promise<void> {
Copy link
Contributor

Choose a reason for hiding this comment

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

Hm, is this part of the admin API on the node? I'm just thinking someone could repeatedly call this function and fill up our disk

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yep, it's admin API, and requires permissions on the remote file store. So we should be the only ones allowed to call it for our nodes and our bucket.

};
snapshotsIndex.snapshots.unshift(newSnapshotMetadata);

await store.save(getSnapshotIndexPath(metadata), Buffer.from(jsonStringify(snapshotsIndex, true)));
Copy link
Contributor

@alexghr alexghr Mar 26, 2025

Choose a reason for hiding this comment

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

A bit worried if this fails (pod dies or network issues) then we'd left with an invalid index file.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I understand gcs ensures we don't end up with broken objects if an upload is aborted halfway. And the local store is just used for testing.

@spalladino spalladino changed the title feat: Upload snapshots for fast sync feat: Snapshot sync Mar 26, 2025
@spalladino spalladino changed the title feat: Snapshot sync feat: Node snapshot sync Mar 26, 2025
@spalladino
Copy link
Contributor Author

@alexghr I've addressed all comments or added issues, and renamed fast sync to snapshot (to avoid confusion with geth fast sync which is different). Other items remaining are:

  • Cron this with a k8s job
  • Add default for the snapshot url
  • Add snapshot sync to prover node

@spalladino
Copy link
Contributor Author

Sample run. We start a node and then ask it to trigger a snapshot:

$ curl -s -XPOST http://localhost:8885 -d '{"method": "nodeAdmin_startSnapshotUpload", "params": ["gs://aztec-testnet/snapshots/"]}'

The node pauses syncing, back ups databases, and resumes syncing while it uploads snapshot data to gcs:

[11:16:36.282] INFO: stdlib:file-store Creating google cloud file store at aztec-testnet snapshots/
[11:16:37.334] INFO: node Pausing archiver and world state sync to start snapshot upload
[11:16:37.334] INFO: archiver Stopped.
[11:16:37.334] INFO: world_state Stopped sync
[11:16:37.334] INFO: node Creating backups of lmdb environments to /tmp/aztec/data1/snapshot-slLE6e
[11:16:37.344] INFO: node Data stores backed up to /tmp/aztec/data1/snapshot-slLE6e {"paths":{"l1-to-l2-message-tree":"/tmp/aztec/data1/snapshot-slLE6e/world-state/L1ToL2MessageTree/data.mdb","archive-tree":"/tmp/aztec/data1/snapshot-slLE6e/world-state/ArchiveTree/data.mdb","public-data-tree":"/tmp/aztec/data1/snapshot-slLE6e/world-state/PublicDataTree/data.mdb","note-hash-tree":"/tmp/aztec/data1/snapshot-slLE6e/world-state/NoteHashTree/data.mdb","nullifier-tree":"/tmp/aztec/data1/snapshot-slLE6e/world-state/NullifierTree/data.mdb","archiver":"/tmp/aztec/data1/snapshot-slLE6e/archiver/data.mdb"}}
[11:16:37.344] INFO: node Resuming archiver and world state sync
[11:16:37.344] VERBOSE: world-state:block_stream Starting L2 block stream {"proven":false,"pollIntervalMS":100}
[11:16:37.345] INFO: world_state Resumed sync
[11:16:37.345] INFO: archiver Restarting archiver
[11:16:37.346] INFO: node Uploading snapshot to gs://aztec-testnet/snapshots/ {"snapshot":{"l1ChainId":31337,"l2Version":1,"rollupAddress":"0x706f4477c3a1b1f123ba06b688df5c84f935b747","l2BlockNumber":20,"l2BlockHash":"0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c","l1BlockNumber":48}}
[11:16:37.533] WARN: node:sentinel No committee found for slot 20 at epoch 0
[11:16:38.185] INFO: sequencer:publisher Bundled [propose] transaction [succeeded]
[11:16:38.186] VERBOSE: sequencer:publisher Published L2 block to L1 rollup contract {"sender":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","transactionHash":"0x6958b4a9ebe3678b24dbb35313d0d824e805072661b74c79d8aace84c1720079","calldataSize":1540,"calldataGas":11128,"txCount":0,"blockNumber":21,"blockTimestamp":1743084997,"privateLogCount":0,"publicLogCount":0,"contractClassLogCount":0,"contractClassLogSize":0}
[11:16:38.186] VERBOSE: blob-sink-client Sending 1 blobs to blob sink
[11:16:38.433] INFO: archiver Downloaded L2 block 21 {"blockHash":{},"blockNumber":21,"txCount":0,"globalVariables":{"chainId":31337,"version":1,"blockNumber":21,"slotNumber":22,"timestamp":1743084997,"coinbase":"0x0000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000000000000000000000000000","feePerDaGas":0,"feePerL2Gas":184500}}
[11:16:38.466] VERBOSE: world_state World state updated with L2 block 21 {"eventName":"l2-block-handled","duration":5.5633620005100965,"unfinalisedBlockNumber":21,"finalisedBlockNumber":0,"oldestHistoricBlock":1,"txCount":0,"blockNumber":21,"blockTimestamp":1743084997,"privateLogCount":0,"publicLogCount":0,"contractClassLogCount":0,"contractClassLogSize":0}
[11:16:38.556] VERBOSE: p2p Synched to latest block 21
[11:16:42.234] VERBOSE: sequencer Preparing proposal for block 22 at slot 23 {"chainTipArchive":"0x15781a25012cc5d0a1747494952c20f0d1f0ffd7ccb7f30e3705f6006b3aeaf0","blockNumber":22,"slot":23}
[11:16:42.238] VERBOSE: sequencer Building block 22 for slot 23 {"slot":23,"blockNumber":22,"msgCount":0}
[11:16:42.245] VERBOSE: sequencer Processing pending txs {"slot":23,"slotStart":"2025-03-27T14:16:45.000Z","now":"2025-03-27T14:16:42.245Z"}
[11:16:42.246] INFO: simulator:public-processor Processed 0 successful txs and 0 failed txs in 0.00019533300027251244s {"duration":0.00019533300027251244,"rate":0,"totalPublicGas":{"daGas":0,"l2Gas":0},"totalBlockGas":{"daGas":0,"l2Gas":0},"totalSizeInBytes":0}
[11:16:42.256] INFO: sequencer Built block 22 for slot 23 with 0 txs and 0 messages. 0 mana/s {"blockHash":"0x1a0c5807d0f409e62f15a9b318474400a0a07555fcce8cafcf8529dcf3ea594c","globalVariables":{"chainId":31337,"version":1,"blockNumber":22,"slotNumber":23,"timestamp":1743085005,"coinbase":"0x0000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000000000000000000000000000","feePerDaGas":0,"feePerL2Gas":184500},"txHashes":[],"eventName":"l2-block-built","creator":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","duration":19.109107000753284,"publicProcessDuration":0.24749300070106983,"rollupCircuitsDuration":11.151469999924302,"txCount":0,"blockNumber":22,"blockTimestamp":1743085005,"privateLogCount":0,"publicLogCount":0,"contractClassLogCount":0,"contractClassLogSize":0}
[11:16:42.257] VERBOSE: sequencer Attesting committee is empty
[11:16:42.320] WARN: sequencer-client Node does not support eth_simulateV1 API. Using fallback gas estimate: 12000000
[11:16:42.344] VERBOSE: sequencer-client Sent L1 transaction 0x37e1f2ea4fe24d63fdf478e8bd4877725484c1325bb736c476ad5e105f331c62 {"gasLimit":14521912,"maxFeePerGas":"1.202985924","maxPriorityFeePerGas":"1.2","maxFeePerBlobGas":"0.000000001"}
[11:16:43.239] INFO: node Snapshot uploaded successfully {"snapshot":{"l1BlockNumber":48,"l2BlockHash":"0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c","l2BlockNumber":20,"schemaVersions":{"archiver":1,"worldState":1},"timestamp":1743084997346,"dataUrls":{"l1-to-l2-message-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/l1-to-l2-message-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db","archive-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archive-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db","public-data-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/public-data-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db","note-hash-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/note-hash-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db","nullifier-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/nullifier-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db","archiver":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archiver-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db"}}}
[11:16:43.239] INFO: node Cleaning up backup dir /tmp/aztec/data1/snapshot-slLE6e

We run it again for the sake of it. The index at https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/index.json now looks like:

{
  "l1ChainId": 31337,
  "l2Version": 1,
  "rollupAddress": "0x706f4477c3a1b1f123ba06b688df5c84f935b747",
  "snapshots": [
    {
      "l1BlockNumber": 153,
      "l2BlockHash": "0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee",
      "l2BlockNumber": 73,
      "schemaVersions": {
        "archiver": 1,
        "worldState": 1
      },
      "timestamp": 1743085415918,
      "dataUrls": {
        "l1-to-l2-message-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/l1-to-l2-message-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db",
        "archive-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archive-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db",
        "public-data-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/public-data-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db",
        "note-hash-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/note-hash-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db",
        "nullifier-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/nullifier-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db",
        "archiver": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archiver-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db"
      }
    },
    {
      "l2BlockNumber": 20,
      "l2BlockHash": "0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c",
      "l1BlockNumber": 48,
      "timestamp": 1743084997346,
      "schemaVersions": {
        "archiver": 1,
        "worldState": 1
      },
      "dataUrls": {
        "l1-to-l2-message-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/l1-to-l2-message-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db",
        "archive-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archive-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db",
        "public-data-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/public-data-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db",
        "note-hash-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/note-hash-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db",
        "nullifier-tree": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/nullifier-tree-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db",
        "archiver": "https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archiver-20250327141637-0x1ab52595ee41c919647b5e5b580abe07d1e37e2df2e571a4afffb8884294857c.db"
      }
    }
  ]

We then start another node with SYNC_SNAPSHOTS_URL=https://storage.googleapis.com/aztec-testnet/snapshots/ and see that it gets the latest snapshot URLs from the index, downloads them, and then syncs the delta until the chain tip:

[11:24:10.213] INFO: node Downloading snapshot at L1 block 153 L2 block 73 from https://storage.googleapis.com/aztec-testnet/snapshots/ to /tmp/aztec/data2/download-ohsMLN for snapshot sync {"snapshot":{"l2BlockNumber":73,"l2BlockHash":"0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee","l1BlockNumber":153,"timestamp":1743085415918,"schemaVersions":{"archiver":1,"worldState":1},"dataUrls":{"l1-to-l2-message-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/l1-to-l2-message-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","archive-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archive-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","public-data-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/public-data-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","note-hash-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/note-hash-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","nullifier-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/nullifier-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","archiver":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archiver-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db"}},"downloadPaths":{"archiver":"/tmp/aztec/data2/download-ohsMLN/archiver.db","nullifier-tree":"/tmp/aztec/data2/download-ohsMLN/nullifier-tree.db","public-data-tree":"/tmp/aztec/data2/download-ohsMLN/public-data-tree.db","note-hash-tree":"/tmp/aztec/data2/download-ohsMLN/note-hash-tree.db","archive-tree":"/tmp/aztec/data2/download-ohsMLN/archive-tree.db","l1-to-l2-message-tree":"/tmp/aztec/data2/download-ohsMLN/l1-to-l2-message-tree.db"}}
[11:24:11.934] INFO: node Snapshot downloaded at /tmp/aztec/data2/download-ohsMLN {"snapshotsUrl":"https://storage.googleapis.com/aztec-testnet/snapshots/","snapshot":{"l2BlockNumber":73,"l2BlockHash":"0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee","l1BlockNumber":153,"timestamp":1743085415918,"schemaVersions":{"archiver":1,"worldState":1},"dataUrls":{"l1-to-l2-message-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/l1-to-l2-message-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","archive-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archive-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","public-data-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/public-data-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","note-hash-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/note-hash-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","nullifier-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/nullifier-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","archiver":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archiver-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db"}},"downloadPaths":{"archiver":"/tmp/aztec/data2/download-ohsMLN/archiver.db","nullifier-tree":"/tmp/aztec/data2/download-ohsMLN/nullifier-tree.db","public-data-tree":"/tmp/aztec/data2/download-ohsMLN/public-data-tree.db","note-hash-tree":"/tmp/aztec/data2/download-ohsMLN/note-hash-tree.db","archive-tree":"/tmp/aztec/data2/download-ohsMLN/archive-tree.db","l1-to-l2-message-tree":"/tmp/aztec/data2/download-ohsMLN/l1-to-l2-message-tree.db"}}
[11:24:11.935] INFO: node Archiver database set up from snapshot {"path":"/tmp/aztec/data2/archiver"}
[11:24:11.936] INFO: node World state database l1-to-l2-message-tree set up from snapshot {"path":"/tmp/aztec/data2/world_state/L1ToL2MessageTree"}
[11:24:11.936] INFO: node World state database archive-tree set up from snapshot {"path":"/tmp/aztec/data2/world_state/ArchiveTree"}
[11:24:11.936] INFO: node World state database public-data-tree set up from snapshot {"path":"/tmp/aztec/data2/world_state/PublicDataTree"}
[11:24:11.936] INFO: node World state database note-hash-tree set up from snapshot {"path":"/tmp/aztec/data2/world_state/NoteHashTree"}
[11:24:11.936] INFO: node World state database nullifier-tree set up from snapshot {"path":"/tmp/aztec/data2/world_state/NullifierTree"}
[11:24:11.936] INFO: node Snapshot synced to L1 block 153 L2 block 73 {"snapshot":{"l2BlockNumber":73,"l2BlockHash":"0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee","l1BlockNumber":153,"timestamp":1743085415918,"schemaVersions":{"archiver":1,"worldState":1},"dataUrls":{"l1-to-l2-message-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/l1-to-l2-message-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","archive-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archive-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","public-data-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/public-data-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","note-hash-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/note-hash-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","nullifier-tree":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/nullifier-tree-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db","archiver":"https://storage.googleapis.com/aztec-testnet/snapshots/aztec-31337-1-0x706f4477c3a1b1f123ba06b688df5c84f935b747/archiver-20250327142335-0x2fcd18f31f17a50f726ccd73beb00204cea0e7e4d7fde5a680d9bac81d0f63ee.db"}}}
[11:24:11.936] INFO: archiver:lmdb Creating archiver data store at directory /tmp/aztec/data2/archiver with map size 134217728 KB (LMDB v2)
[11:24:11.938] INFO: archiver:lmdb Starting data store with maxReaders 16
[11:24:12.109] INFO: archiver Starting archiver sync to rollup contract 0x706f4477c3a1b1f123ba06b688df5c84f935b747 from L1 block 153 to current L1 block 162
[11:24:12.189] INFO: archiver Downloaded L2 block 74 {"blockHash":{},"blockNumber":74,"txCount":0,"globalVariables":{"chainId":31337,"version":1,"blockNumber":74,"slotNumber":75,"timestamp":1743085421,"coinbase":"0x0000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000000000000000000000000000","feePerDaGas":0,"feePerL2Gas":1020}}
[11:24:12.189] INFO: archiver Downloaded L2 block 75 {"blockHash":{},"blockNumber":75,"txCount":0,"globalVariables":{"chainId":31337,"version":1,"blockNumber":75,"slotNumber":76,"timestamp":1743085429,"coinbase":"0x0000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000000000000000000000000000","feePerDaGas":0,"feePerL2Gas":1020}}
[11:24:12.189] INFO: archiver Downloaded L2 block 76 {"blockHash":{},"blockNumber":76,"txCount":0,"globalVariables":{"chainId":31337,"version":1,"blockNumber":76,"slotNumber":77,"timestamp":1743085437,"coinbase":"0x0000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000000000000000000000000000","feePerDaGas":0,"feePerL2Gas":1020}}
[11:24:12.189] INFO: archiver Downloaded L2 block 77 {"blockHash":{},"blockNumber":77,"txCount":0,"globalVariables":{"chainId":31337,"version":1,"blockNumber":77,"slotNumber":78,"timestamp":1743085445,"coinbase":"0x0000000000000000000000000000000000000000","feeRecipient":"0x0000000000000000000000000000000000000000000000000000000000000000","feePerDaGas":0,"feePerL2Gas":1020}}
[11:24:12.193] INFO: archiver Initial archiver sync to L1 block 162 complete. {"l1BlockNumber":162,"syncPoint":{"blocksSynchedTo":161,"messagesSynchedTo":162},"latest":{"number":77,"hash":"0x1cbaf18d25c50673137259d1db13a0721fcbe58f776f20026d2d11bf7d838a98"},"proven":{"number":0},"finalized":{"number":0}}
[11:24:12.197] INFO: world-state:database Creating world state data store at directory /tmp/aztec/data2/world_state with map size 134217728 KB and 1 threads.
[11:24:12.203] INFO: world_state Created world state synchroniser with block history of 64
[11:24:12.203] WARN: node Aztec node is accepting fake proofs
[11:24:12.208] INFO: p2p:lmdb-v2 Creating p2p data store at directory /tmp/aztec/data2/p2p with map size 134217728 KB (LMDB v2)
[11:24:12.209] WARN: foundation:version-manager Rollup address changed, resetting data directory {"versionFile":"/tmp/aztec/data2/p2p/db_version"}
[11:24:12.209] INFO: p2p:lmdb-v2 Starting data store with maxReaders 16
[11:24:12.213] INFO: p2p-archive:lmdb-v2 Creating p2p-archive data store at directory /tmp/aztec/data2/p2p-archive with map size 134217728 KB (LMDB v2)
[11:24:12.213] WARN: foundation:version-manager Rollup address changed, resetting data directory {"versionFile":"/tmp/aztec/data2/p2p-archive/db_version"}
[11:24:12.213] INFO: p2p-archive:lmdb-v2 Starting data store with maxReaders 16
[11:24:12.217] VERBOSE: p2p P2P is disabled. Using dummy P2P service
[11:24:12.217] INFO: slasher Slasher client initialized
[11:24:12.217] INFO: slasher Starting Slasher client...
[11:24:12.218] VERBOSE: world_state Starting sync from 74 to latest block 77
[11:24:12.218] VERBOSE: world-state:block_stream Starting L2 block stream {"proven":false,"pollIntervalMS":100}
[11:24:12.218] INFO: world_state Started world state synchronizer from block 74
[11:24:12.218] VERBOSE: p2p Starting sync from 1 (last proven 1)
[11:24:12.218] VERBOSE: p2p:l2-block-stream Starting L2 block stream {"batchSize":20,"pollIntervalMS":100}
[11:24:12.219] VERBOSE: p2p Started block downloader from block 1
[11:24:12.222] VERBOSE: world-state:block_stream Starting sync from block number 73
[11:24:12.222] VERBOSE: p2p:l2-block-stream Starting sync from block number 0
[11:24:12.241] VERBOSE: world_state World state updated with L2 block 74 {"eventName":"l2-block-handled","duration":8.598556000739336,"unfinalisedBlockNumber":74,"finalisedBlockNumber":0,"oldestHistoricBlock":1,"txCount":0,"blockNumber":74,"blockTimestamp":1743085421,"privateLogCount":0,"publicLogCount":0,"contractClassLogCount":0,"contractClassLogSize":0}
[11:24:12.248] VERBOSE: world_state World state updated with L2 block 75 {"eventName":"l2-block-handled","duration":7.360400998964906,"unfinalisedBlockNumber":75,"finalisedBlockNumber":0,"oldestHistoricBlock":1,"txCount":0,"blockNumber":75,"blockTimestamp":1743085429,"privateLogCount":0,"publicLogCount":0,"contractClassLogCount":0,"contractClassLogSize":0}
[11:24:12.255] VERBOSE: world_state World state updated with L2 block 76 {"eventName":"l2-block-handled","duration":7.013741999864578,"unfinalisedBlockNumber":76,"finalisedBlockNumber":0,"oldestHistoricBlock":1,"txCount":0,"blockNumber":76,"blockTimestamp":1743085437,"privateLogCount":0,"publicLogCount":0,"contractClassLogCount":0,"contractClassLogSize":0}
[11:24:12.259] VERBOSE: p2p Synched to latest block 20
[11:24:12.261] VERBOSE: world_state World state updated with L2 block 77 {"eventName":"l2-block-handled","duration":5.2799129988998175,"unfinalisedBlockNumber":77,"finalisedBlockNumber":0,"oldestHistoricBlock":1,"txCount":0,"blockNumber":77,"blockTimestamp":1743085445,"privateLogCount":0,"publicLogCount":0,"contractClassLogCount":0,"contractClassLogSize":0}
[11:24:12.290] VERBOSE: p2p Synched to latest block 40
[11:24:12.321] VERBOSE: p2p Synched to latest block 60
[11:24:12.346] VERBOSE: p2p Synched to latest block 77
[11:24:12.347] VERBOSE: node All Aztec Node subsystems synced
[11:24:12.347] INFO: node:sentinel:lmdb Creating sentinel data store at directory /tmp/aztec/data2/sentinel with map size 134217728 KB (LMDB v2)
[11:24:12.347] WARN: foundation:version-manager Rollup address changed, resetting data directory {"versionFile":"/tmp/aztec/data2/sentinel/db_version"}
[11:24:12.348] INFO: node:sentinel:lmdb Starting data store with maxReaders 16
[11:24:12.352] INFO: node Aztec Node version: 0.82.2
[11:24:12.352] INFO: node Aztec Node started on chain 0x7a69 {"rollupAddress":"0x706f4477c3a1b1f123ba06b688df5c84f935b747","registryAddress":"0x9768df667dc7cc129a0be23dd143171f681c5dd6","inboxAddress":"0xe836cb1edcca13301c7e7f4807105b6802233c16","outboxAddress":"0x1e7985b135ae00eff28e801ba5d9dad98fb4c499","feeJuiceAddress":"0x2220c39cd2312edf86f94a0a15a9f948a77d0d2b","stakingAssetAddress":"0xec1a71ff20160704a249632958fb58c9625e9d09","feeJuicePortalAddress":"0x3d1f29359457ee6810daa60ac4688edbbcac6aea","coinIssuerAddress":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","rewardDistributorAddress":"0x40ed1dee0ff0de6ddc29dead5d95e93c8bf6ab2d","governanceProposerAddress":"0x9b2bf3065ded5fa5b33d883ea5ab747b35ce15d1","governanceAddress":"0x54d821e1442e32360b427d2ff5444e2882a98004","slashFactoryAddress":"0x0f668f0abfb79909029bcda8581ec105d88473cc","feeAssetHandlerAddress":"0xbd55df43507d18ee737109735768aa5b5751583e"}

@spalladino spalladino merged commit afde851 into master Mar 27, 2025
7 checks passed
@spalladino spalladino deleted the palla/snapshots-stdlib branch March 27, 2025 19:14
spalladino added a commit that referenced this pull request Mar 27, 2025
PhilWindle pushed a commit that referenced this pull request Mar 27, 2025
🤖 I have created a new Aztec Packages release
---


##
[0.82.3](v0.82.2...v0.82.3)
(2025-03-27)


### Features

* `msgpack` encoding for `Program` and `WitnessStack`
([#12841](#12841))
([1e58eb1](1e58eb1))
* 64 bit log type id, 64 bit log metadata
([#12956](#12956))
([20d734a](20d734a))
* AVM parsing tag validation
([#12936](#12936))
([56b1f0d](56b1f0d))
* **avm:** add calldata & returndata to context
([#13008](#13008))
([f03b2e5](f03b2e5))
* **avm:** merkle db hints (part 1)
([#12922](#12922))
([34ec9e8](34ec9e8))
* **avm:** merkle hints (part 2)
([#13077](#13077))
([fbbc6c7](fbbc6c7))
* **avm:** vm2 initial context
([#12972](#12972))
([e2b1361](e2b1361))
* benchmark avm simulator
([#12985](#12985))
([00fae1b](00fae1b))
* client flows benchmarks
([#13007](#13007))
([9bf7568](9bf7568))
* gas benchmark for "normal usage"
([#13073](#13073))
([4eb1156](4eb1156))
* Implement merkle writes in the merkle check gadget
([#13050](#13050))
([c94fe50](c94fe50))
* LogEncryption trait
([#12942](#12942))
([0b7e564](0b7e564))
* Node snapshot sync
([#12927](#12927))
([afde851](afde851)),
closes
[#12926](#12926)
* **p2p:** capture all gossipsub metrics
([#12930](#12930))
([cc940cb](cc940cb))
* Prover node snapshot sync
([#13097](#13097))
([1e77efb](1e77efb))
* staking asset handler
([#12968](#12968))
([af48184](af48184)),
closes
[#12932](#12932)
* stream crs data to disk
([#12996](#12996))
([d016e4d](d016e4d)),
closes
[#12948](#12948)
* track failed tests. add flake.
([f4936d7](f4936d7))
* Track test history.
([#13037](#13037))
([036bb32](036bb32))
* track total tx fee
([#12601](#12601))
([9612a4e](9612a4e))
* Validators sentinel
([#12818](#12818))
([770695c](770695c))


### Bug Fixes

* added #[derive(Eq)] to EcdsaPublicKeyNote
([#12966](#12966))
([0c21c74](0c21c74))
* Allow use of local blob sink client
([#13025](#13025))
([ba8d654](ba8d654))
* **avm:** semicolons are hard
([#12999](#12999))
([8871c83](8871c83))
* bootstrap network and sponsored fpc devnet
([#13044](#13044))
([8a47d8b](8a47d8b))
* Bump tsc target
([#13052](#13052))
([985e83b](985e83b))
* cycle_group fuzzer
([#12921](#12921))
([69f426e](69f426e))
* **docs:** Fix import errors in aztec.js tutorial
([#12969](#12969))
([856208a](856208a))
* **docs:** Load token artifact from the compiled source in the sample
dapp tutorial
([#12802](#12802))
([0838084](0838084)),
closes
[#12810](#12810)
* **docs:** Update sponsored fpc docs to use 82.2 syntax
([#13054](#13054))
([e5d425b](e5d425b))
* **e2e:** p2p
([#13002](#13002))
([1ece539](1ece539))
* extend e2e 2 pxes timeout. strip color codes for error_regex.
([73820e4](73820e4))
* flake
([6cc9e81](6cc9e81))
* fuzzer on staking asset handler constructor test
([#13101](#13101))
([d936285](d936285))
* invalid getCommittee function
([#13072](#13072))
([327341f](327341f))
* mac publish should use clang 18 like x-compiler, and use it
([#12983](#12983))
([7b83c45](7b83c45))
* make circuit parsing deterministic
([#11772](#11772))
([76ef873](76ef873))
* parse away trailing slash from consensus host
([#12577](#12577))
([6701806](6701806))
* prerelease versions should be pushed to install.aztec.network
([#13086](#13086))
([c4e6039](c4e6039))
* smoke
([#13060](#13060))
([7756b15](7756b15))
* some flake additions
([58638f1](58638f1))
* sponsored fpc arg parsed correctly
([#12976](#12976))
([#12977](#12977))
([a85f530](a85f530))
* starting the sandbox with no pxe should still deploy initial test
accounts
([#13047](#13047))
([d92d895](d92d895))
* Syntax error when running tests via jest after tsc build
([#13051](#13051))
([f972db9](f972db9))
* Use the correct image in aztec start
([#13058](#13058))
([06285cd](06285cd))
* yolo fix
([91e2f4b](91e2f4b))
* yolo fix nightly
([b3b3259](b3b3259))
* yolo fix obvious thing to track fails.
([2fee630](2fee630))
* yolo flakes
([e3b030a](e3b030a))
* yolo set -x
([bfd3205](bfd3205))
* yolo we suspect the halt is making tests fail that would have passed
([04e3fa2](04e3fa2))


### Miscellaneous

* `getIndexedTaggingSecretAsSender` oracle cleanup
([#13015](#13015))
([8e71e55](8e71e55))
* Add a script to generate cpp files for AVM2
([#13091](#13091))
([7bb43a9](7bb43a9))
* add default native proving for cli wallet
([#12855](#12855))
([c0f773c](c0f773c))
* add default native proving for cli wallet retry
([#13028](#13028))
([b2f4785](b2f4785))
* Alpha testnet into master
([#13033](#13033))
([d98fdbd](d98fdbd))
* AVM TS - move tag validation outside of instruction constructors
([#13038](#13038))
([45548ab](45548ab)),
closes
[#12934](#12934)
* **avm:** final codegen nuking
([#13089](#13089))
([9c82f3f](9c82f3f))
* **avm:** remove codegen (all but flavor)
([#13079](#13079))
([e1f2bdd](e1f2bdd))
* **bb:** minor acir buf C++ improvements
([#13042](#13042))
([1ebd044](1ebd044))
* boxes dep cleanup
([#12979](#12979))
([6540b7c](6540b7c))
* **ci:** less catch all e2e_p2p flakes
([#12737](#12737))
([2134634](2134634))
* comprehensive cleanup of translator flavor and use inheritance
properly in flavors
([#13041](#13041))
([dc5f78f](dc5f78f))
* compress storage footprint
([#12871](#12871))
([58c110f](58c110f))
* display warning when installing bb versions &lt; 0.82.0
([#13027](#13027))
([7247fe7](7247fe7))
* **docs:** Update docs on fees and various other updates
([#12929](#12929))
([1dec907](1dec907))
* dump dmesg/net/cpu/mem usage at end of ci run
([#12967](#12967))
([8877792](8877792))
* fix governance util issue
([#13043](#13043))
([d768d26](d768d26))
* redundant if in affine from projective constructor
([#13045](#13045))
([3a7ba2d](3a7ba2d))
* remove addition of dummy ops in mock circuit producer
([#13003](#13003))
([a64d1dc](a64d1dc))
* remove dummy ops in decider pk
([#13049](#13049))
([da6d021](da6d021))
* replace relative paths to noir-protocol-circuits
([e1b88f6](e1b88f6))
* replace relative paths to noir-protocol-circuits
([849b4b0](849b4b0))
* replace relative paths to noir-protocol-circuits
([18a02d6](18a02d6))
* Revert "chore: add default native proving for cli wallet
([#12855](#12855))"
([#13013](#13013))
([98e2576](98e2576))
* Speed up and deflake sentinel test
([#13078](#13078))
([27f1eca](27f1eca))
* **testnet:** making consensus host mandatory input
([#12716](#12716))
([d47c74a](d47c74a))
* towards no more mock op_queues
([#12984](#12984))
([fefffa7](fefffa7))
* update bb version for noir 1.0.0-beta.0+
([#13026](#13026))
([dd68074](dd68074))
* update CODEOWNERS to reflect new sync method
([#12998](#12998))
([a3d1915](a3d1915))


### Documentation

* Add fees to cli reference
([#12884](#12884))
([4a0fd58](4a0fd58))

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Fast sync

3 participants