Prepare your baker for Ithaca2 (DEPRECATED)

Ithaca2 is one of the most important amendments so far. To continue baking after activation, bakers need to upgrade their infrastructure before the end of the adoption period.
This tutorial provides practical commands to successfully upgrade a baker's infrastructure. As a reminder, we recently wrote an article describing the breaking changes regarding Ithaca2 (Psithaca2) and its new consensus algorithm: Tenderbake.
After Ithaca2 is activated, it will be technically impossible to bake without Octez v12.2 or later.
This version contains all binaries (baker and accuser) necessary for Ithaca2 and the associated testnet.

Changes regarding the baker's signing scheme

With Tenderbake, endorsement operations now consist of a level, a round, a slot, and a payload hash. A Baker can emit at most one endorsement per round, but it is allowed to emit more endorsements per level. The former high-water mark mechanism used by the signer has been adapted accordingly. The tezos-signer for previous protocols signed messages with the following format:
Now, they have the following shape:
where the magic byte has changed from 0x01 (for blocks) and 0x02 (for endorsements), to 0x11 (for blocks), 0x12 (for preendorsements), 0x13 (for endorsements).
The signer is authorized to sign whenever the level is strictly higher than the previous level, or the level is the same, but the round is strictly higher. Octez v12.2 contains the updated signer. Bakers using a Ledger Nano must upgrade their Ledger's software (see instructions). Any other custom solution must be adapted to the signing logic.
Likewise, if you use tezos-signerdon't forget to update, and relaunch it.

Upgrading to v12.2 using released binaries

See our official technical documentation here.

Upgrading to v12.2 using Docker

Without Docker Compose

If you launch your node with a simple docker command, you should use the v12.2 image and the following image to run your node:
docker run -d --name container_name tezos/tezos:v12.2 tezos-node --rpc-addr
Then you can, for example, access the created container and launch your Ithaca2 daemons:
docker exec -it container_name sh
#import your baking key
#The baking daemon
tezos-baker-012-Psithaca --endpoint run with local node /run/tezos/node/data/
#The accuser daemon
tezos-accuser-012-Psithaca --endpoint run

With Docker Compose

Docker Compose users only need to change the docker image and relaunch the containers to update Octez:
... services: [type]-node: image: tezos/tezos:v12.2 ...
Afterward, launch your baking/accuser daemons as you normally do.

Upgrading to v12.2 building from sources

Note: it requires basic knowledge of the OPAM package manager and the OCaml packages workflow.
Step 1: Access your tezos repository and execute the following commands:
git fetch
git checkout v12.2
rm -rf _opam _build
make build-deps
eval $(opam env)
Step 2: Launch the binaries
Note, that there is no endorser daemon anymore. The baker daemon performs both baking and endorsement operations. Launch your baker:
tezos-baker-012-Psithaca run #with optional arguments
Global options:
-d --base-dir <path>: client data directory (absent: TEZOS_CLIENT_DIR env)
-c --config-file <path>: configuration file
-t --timings: show RPC request times
--chain <hash|tag>: chain on which to apply contextual commands (possible tags are 'main' and 'test')
-b --block <hash|tag>: block on which to apply contextual commands (possible tags are 'head' and 'genesis')
-w --wait <none|<int>>: how many confirmation blocks before to consider an operation as included
-p --protocol <hash>: use commands of a specific protocol
-l --log-requests: log all requests to the node
-A --addr <IP addr|host>: [DEPRECATED: use --endpoint instead] IP address of the node
-P --port <number>: [DEPRECATED: use --endpoint instead] RPC port of the node
-S --tls: [DEPRECATED: use --endpoint instead] use TLS to connect to node.
-m --media-type <json, binary, any or default>: Sets the "media-type" value for the "accept" header for RPC requests t
And the accuser:
tezos-accuser-012-Psithaca run
Bakers using a Ledger hardware wallet for operation signing will need to upgrade the Tezos Baking app to v.2.2.15 or later. See instructions below.

Upgrading Ledger Nano software

Only the Tezos Baking app v2.2.15 or later is compatible with Ithaca2 (due to the changes imposed by the adoption of the Tenderbake consensus algorithm). It is however also compatible with the current protocol version, so it is safe (and advisable) to upgrade now.
Henceforth, this is the list of tags supported by the Ledger apps:
To upgrade, bakers will need to
  • Exit the Tezos Baking app;
  • Upgrade the Tezos Wallet and Tezos Baking apps using the Ledger Live application;
  • Authorize the Ledger to bake for their specific key;
  • Relaunch the Baking App.
To avoid missing assigned baking/endorsing slots, owning a second Ledger Nano can be useful for signing operations while the first Ledger Nano is being upgraded.
The following example uses a Ledger Nano S.
Step 1: Exit Tezos Baking application and launch Ledger Live.
On the bar at the bottom left, access the Manager section and search for Tezos. Upgrade both the Tezos Wallet and Tezos Baking applications to version 2.2.15.
If you don't see the Tezos Baking app, you may need to activate Ledger Live's developer mode.
Ledger Live application
Step 2: Import your Tezos baking address by clicking on Add account, and follow the steps to add your Tezos account.
Add account
Choose an account to import
Account successfully added
Step 3: Before launching the baker and accuser daemons, you need to re-authorize your Ledger to bake for your baking key.
tezos-client setup ledger to bake for <account-alias-or-ledger-uri> #it is possible to provide a watermark with --main-hwm <HWM>
Step 4: Your Nano S is now upgraded, and you are ready to bake on Ithaca2. Don't forget to launch the Tezos Baking app! Happy baking!