Skip to content
2 changes: 1 addition & 1 deletion docs/docs/developers/debugging/aztecnr-errors.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ You can learn more about dependencies and their paths [here](../contracts/resour

#### `backend has encountered an error`

This is likely due to a version mismatch or bad install of barretenberg. Try [reinstalling nargo](../updating.md) or uninstalling barretenberg:
This is likely due to a version mismatch or bad install of barretenberg. Try [reinstalling nargo](../versions-updating.md#updating) or uninstalling barretenberg:

```bash
nargo backend uninstall acvm-backend-barretenberg
Expand Down
75 changes: 0 additions & 75 deletions docs/docs/developers/updating.md

This file was deleted.

130 changes: 130 additions & 0 deletions docs/docs/developers/versions-updating.md
Comment thread
critesjosh marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---
title: Versions and Updating
---


## Versions
Aztec tools (sandbox, cli, nargo), dependencies (aztec-nr), and sample contracts are constantly being improved.
When developing and referring to example .nr files/snippets, it is helpful to verify the versions of different components (below), and if required keep them in lock-step by [updating](#updating).

### Checking tool versions
To check your version of Aztec tools, you can use `aztec-cli -V`
::note

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
::note
:::note

The `aztec-nargo` versions follow `nargo` versions, which is different to the Aztec tool versions.
::note
The latest version of the Aztec tooling is currently `#include_aztec_version` , updating roughly every week.

### Dependency versions
Dependency versions in a contract's `Nargo.toml` file correspond to the `aztec-packages` repository tag `aztec-packages` (filter tags by `aztec`...)

If you get an error like: `Cannot read file ~/nargo/github.com/AztecProtocol/aztec-packages/...`
Check the `git=` github url, tag, and directory.
:::note
The folder structure changed at **0.24.0** from `yarn-project/aztec-nr` to `noir-projects/aztec-nr`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is mentioned in the migration notes page. Consider linking there to reduce redundant information. Any developers coming after v0.24 don't need to see this

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

You could remove all of the following lines until ### Example contract versions

:::note

That is, BEFORE `aztec-packages-v0.24.0`:
`aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.23.0", directory="yarn-project/aztec-nr/aztec" }`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
`aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.23.0", directory="yarn-project/aztec-nr/aztec" }`
```toml
aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.23.0", directory="yarn-project/aztec-nr/aztec" }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

formatting got weird because the suggestion is delineated with three back ticks . just need to make sure the code block is closed with three

At/after `aztec-packages-v0.24.0`:
`aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.24.0", directory="noir-projects/aztec-nr/aztec" }`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
`aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.24.0", directory="noir-projects/aztec-nr/aztec" }`
```toml
aztec = { git="https://github.com/AztecProtocol/aztec-packages/", tag="aztec-packages-v0.24.0", directory="noir-projects/aztec-nr/aztec" }


### Example contract versions
Example contracts serve as an especially helpful reference between versions of the aztec-nr framework.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
Example contracts serve as an especially helpful reference between versions of the aztec-nr framework.
Example contracts serve as a helpful reference between versions of the aztec-nr framework.


Code referenced in the documentation is sourced from a directory in the `aztec-packages` repository.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Maybe link directly to this directory, since you mention it.

As in the previous section, the location of the noir contracts moved at version `0.24.0`, from `yarn-project/noir-contracts` before, to `noir-projects/noir-contracts`.

:::tip
Notice the difference between the sample Counter contract from `0.23.0` to `0.24.0` shows the `note_type_id` was added.
`diff ~/nargo/github.com/AztecProtocol/aztec-packages-v0.23.0/yarn-project/noir-contracts/contracts/counter_contract/src/main.nr ~/nargo/github.com/AztecProtocol/aztec-packages-v0.24.0/noir-projects/noir-contracts/contracts/counter_contract/src/main.nr `

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

make this a code block instead of just code formatted. and maybe an indicator that it is a shell command

```
57a58
> note_type_id: Field,
```
:::tip

### Language server version (nargo)
The [Noir LSP](https://docs.aztec.network/developers/contracts/main#install-noir-lsp-recommended) uses your local version of `aztec-nargo`, and thus also `aztec-nargo compile`.
Comment thread
critesjosh marked this conversation as resolved.
The path of the former (once installed) can be seen by hovering over "Nargo" in the bottom status bar, and the latter via `which aztec-nargo`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
The path of the former (once installed) can be seen by hovering over "Nargo" in the bottom status bar, and the latter via `which aztec-nargo`.
The path of the former (once installed) can be seen by hovering over "Nargo" in the bottom status bar of VS Code, and the latter via the `which aztec-nargo` command.


This can present confusion when opening older noir contracts (and dependencies), such as:
- Logs filled with errors from the dependencies
- Or the LSP fails (re-runs automatically then stops)
The second point requires a restart of the extension.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Suggested change
The second point requires a restart of the extension.
The second point requires a restart of the extension, which you can trigger with Ctrl + Shift + P and typing "Reload Window".


:::tip
When using the LSP in VSCode, reference older versions of Noir code in a separate window or a browser.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

How does a separate window help? Doesn't the LSP always use locally installed version of nargo?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

If you're using the correct version of aztec-nargo with the correct version of your code, all is well. If you happen to open an older versioned contract, and unlucky to hit some error with aztec-nargo and that code version, then vscode will try rerun the extension. This happens 5 times before the extension decides to stop trying.
At that point, even if you close the older example, you'll have to restart Noir LSP extension in the window.

To prevent this scenario the suggestion is to keep your primary window pure, and reference the old code elsewhere. If in another vscode window (not tab), the main window's extension is fine.

Happy to drop this since the "tip" tag is overly prominent for this minor/low-probability devexp optimisation.

:::tip

## Updating
### TL;DR

1. Updating the sandbox and CLI:

```shell
aztec-up
```

2. Updating aztec-nr and individual @aztec dependencies:

Inside your project run:

```shell
cd your/aztec/project
aztec-cli update . --contract src/contract1 --contract src/contract2
```

The sandbox must be running for the update command to work. Make sure it is [installed and running](../developers/sandbox/references/sandbox-reference.md).

3. Refer [Migration Notes](../misc/migration_notes.md) on any breaking changes that might affect your dapp

---

There are four components whose versions need to be kept compatible:

1. Aztec Sandbox
2. Aztec CLI
3. aztec-nargo
4. `Aztec.nr`, the Noir framework for writing Aztec contracts

First three are packaged together in docker and are kept compatible by running `aztec-up`.
But you need to update your Aztec.nr version manually or using `aztec-cli update`.

## Updating Aztec.nr packages

### Automatic update

`aztec-cli` will update your Aztec.nr packages to the appropriate version with the `aztec-cli update` command. Run this command from the root of your project and pass the paths to the folders containing the Nargo.toml files for your projects like so:

```shell
aztec-cli update . --contract src/contract1 --contract src/contract2
```

### Manual update

To update the aztec.nr packages manually, update the tags of the `aztec.nr` dependencies in the `Nargo.toml` file.

```diff
[dependencies]
-aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="aztec-packages-v0.7.5", directory="noir-projects/aztec-nr/aztec" }
+aztec = { git="https://github.com/AztecProtocol/aztec-packages", tag="#include_aztec_version", directory="noir-projects/aztec-nr/aztec" }
Comment thread
signorecello marked this conversation as resolved.
-value_note = { git="https://github.com/AztecProtocol/aztec-packages", tag="aztec-packages-v0.7.5", directory="noir-projects/aztec-nr/value-note" }
+value_note = { git="https://github.com/AztecProtocol/aztec-packages", tag="#include_aztec_version", directory="noir-projects/aztec-nr/value-note" }
```

Go to the contract directory and try compiling it with `aztec-nargo compile` to verify that the update was successful:

```shell
cd /your/contract/directory
aztec-nargo compile
```

If the dependencies fail to resolve ensure that the tag matches a tag in the [aztec-packages repository](https://github.com/AztecProtocol/aztec-packages/tags).
Comment thread
signorecello marked this conversation as resolved.

## Updating `aztec-nargo`

`aztec-nargo` is updated by running:

```bash
aztec-up
```
4 changes: 2 additions & 2 deletions docs/sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -578,9 +578,9 @@ const sidebars = {
],
},
{
label: "Updating",
label: "Versions and Updating",
type: "doc",
id: "developers/updating",
id: "developers/versions-updating",
},
{
label: "Wallets",
Expand Down