Upgrading to Cardano 1.35.0 for nodes created manually/using Coincashew

Sharing my working compiled steps to upgrade nodes to Cardano 1.35.0 for nodes
built using Coincashew or manual methods. This is NOT meant for nodes that were
built using CNTOOLS. Some good reference material have already been built for that.

While there has been material for Coincashew/manual builds, I have not seen a
complete compilation yet which included backup steps, dependency installation, and
some procedures that can reduce total downtime all combined.

As of this writing, Coincashew still had the steps to upgrade to a previous version
which was mostly parameterized. This makes it easy to update but not as easy to follow.
Hopefully, this sharing can help people who need it.

Although these steps are compiled by WISH Pool, we want to give credit also to the
incredible people from whom we copied large portions to create this
procedure. These include IOHK, Coincashew, Jack7E and jf3110

These upgrade steps are shared in good faith. While I have done multiple tests to
ensure it is working before I shared it, you may encounter issues unique to your
setup. For example, it is likely that your directories and currently installed apps
are different from mine.
Therefore, please do your own checks and adjust the commands accordingly.
I suggest that you backup your node first before doing the upgrade so you can easily
fall back to your backup if something goes wrong. As usual, try the upgrade on your
testnet nodes first and make sure they are working before updating mainnet.
Good luck!

# Start of Cardano 1.35.0 upgrade procedures

# Install new dependencies and update apps
sudo apt-get install nano llvm-12 numactl libnuma-dev autoconf automake libtool -y
sudo apt update
sudo apt upgrade -y

cd ~/git  # Create this directory if not existing
####### Remove space in "htt ps" below before running.
git clone htt ps://github.com/bitcoin-core/secp256k1.git 

cd secp256k1
git reset --hard ac83be33d0956faf6b7f61a60ab524ef7d6a473a
./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental
make check
sudo make install

# Upgrade GHCup installer to latest version
ghcup upgrade
ghcup --version

# Install ghc
ghcup install ghc 8.10.7
ghcup set ghc 8.10.7
ghc --version

# Install cabal
ghcup install cabal
ghcup set cabal
cabal --version
  • At this point, if you want to keep your node up as long as possible, I recommend you DO NOT shutdown your node and update your Config files yet. You can do this at a later stage after you have compiled the new binaries
# Build new binaries 
cd $HOME/git
rm -rf cardano-node-old
####### Remove space in "htt ps" below before running.
git clone htt ps://github.com/input-output-hk/cardano-node.git cardano-node2
cd cardano-node2
cabal update
git fetch --all --recurse-submodules --tags
git checkout $(curl -s https://api.github.com/repos/input-output-hk/cardano-node/releases/latest | jq -r .tag_name)
cabal configure -O0 -w ghc-8.10.7

Note: The line below changed from replace (>) to append (>>) from previous instructions probably to ensure that the entry “with-compiler: ghc-8.10.7” remains in cabal.project.local

echo -e "package cardano-crypto-praos\n flags: -external-libsodium-vrf" >> cabal.project.local

cabal build cardano-node cardano-cli

######### Do the steps below from another terminal window #######
# Backup files while waiting for the "cabal build" command to complete

# Backup config files (change all testnet to mainnet for Mainnet)
cd $HOME/cardano-my-node
cp -p testnet-alonzo-genesis.json testnet-alonzo-genesis.json.`date +%Y%m%d`
cp -p testnet-byron-genesis.json testnet-byron-genesis.json.`date +%Y%m%d`
cp -p testnet-config.json testnet-config.json.`date +%Y%m%d`
cp -p testnet-shelley-genesis.json testnet-shelley-genesis.json.`date +%Y%m%d`
cp -p testnet-topology.json testnet-topology.json.`date +%Y%m%d`

# Backup binary files
cd /usr/local/bin 	# Assuming this is the location of your cardano-node and cardano-cli

# Change the version number in the commands below accordingly
sudo cp -p cardano-node cardano-node.1.34.1
sudo cp -p cardano-cli cardano-cli.1.34.1

####### End of commands to be done in another window #######

# Run this after the "cabal build cardano-node cardano-cli" command completes
# This will verify that you have the correct version numbers
$(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-node") version
$(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-cli") version

### Copy latest config files

# Stop Cardano node before updating config files
sudo systemctl stop cardano-node.service

# Use these commands to refresh the config files from IOHK
cd $HOME/cardano-my-node
wget -N https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/${NODE_CONFIG}-config.json
wget -N https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/${NODE_CONFIG}-byron-genesis.json
wget -N https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/${NODE_CONFIG}-shelley-genesis.json
wget -N https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/${NODE_CONFIG}-alonzo-genesis.json
*  You probably don't want to overwrite your current topology files but if for some reason you want to overwrite your topology file, uncomment the command below and run it
#wget -N https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/${NODE_CONFIG}-topology.json

# Install the binary files

# Replace binary files
sudo cp $(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-node") /usr/local/bin/cardano-node
sudo cp $(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-cli") /usr/local/bin/cardano-cli

# Verify versions are properly installed
cardano-node version
cardano-cli version

### Reboot to refresh the system 
sudo reboot

# Do this only if you need to manually start cardano service 
sudo systemctl start cardano-node.service

# Organize git directory
cd $HOME/git
mv cardano-node/ cardano-node-old/
mv cardano-node2/ cardano-node/

# That's it!  You have completed the upgrade to Cardano 1.35.0

Didn’t realize the # comment marks will be interpreted as headings. Apologies for this but the content is still readable. If you want a cleaner version, I have also published this in SPOT Check. Direct link here:

Thanks for this post! I’m having a problem with llvm-12 installing on a debian (buster) OS build.

Any idea how to resolve this?

also for anyone copy/pasting, this line has a “1” that gets copied due to the link being clicked: git checkout $(curl -s https://api.github.com/repos/input-output-hk/cardano-node/releases/latest | jq -r .tag_name)

Hi there! Just a heads up. I am seeing commit tags for node version 1.35.1. Might wanna wait on updating your MAINNET nodes at the moment :slight_smile:


The configuration files haven’t changed since the 1.31.0 release last November. By default, there’s no need to create new ones for 1.35.0

What are the requirements for installing llvm-12 numactl libnuma-dev? I can’t find any references to those packages in the Release Cardano Node 1.35.0 · input-output-hk/cardano-node · GitHub repository.


1 Like