Upgrade to 8.0.0 for Coincashew Users

Hi all,

Here’s an upgrade guide for 8.0.0 for Coincashew users. This isn’t essential yet, but it is the latest version now. The numbering has been updated to reflect the protocol version, i.e. version 8.X.X is protocol v8.

Credit to @Gaia-Stake-Pool as I copied his last one and just amended it.

Update Instructions:

Update and restart your instance:

sudo apt-get update && sudo apt-get upgrade -y && sudo reboot

Download and install the new branch of libsodium,

git clone https://github.com/input-output-hk/libsodium
cd libsodium
git checkout dbb48cc
./autogen.sh
./configure
make
make check
sudo make install

Download latest cardano-node git and checkout latest branch:

cd $HOME/git
git clone https://github.com/input-output-hk/cardano-node.git cardano-node2
cd cardano-node2/
git fetch --all --recurse-submodules --tags
git checkout tags/8.0.0

Note: make sure you have ghc 8.10.7 and cabal 3.6.2.0 before proceeding.

(Others have used 9.2.7 for ghc, so you can use that too)

ghcup upgrade
ghcup install ghc 8.10.7
ghcup set ghc 8.10.7
ghcup install cabal 3.6.2.0
ghcup set cabal 3.6.2.0
cabal update
ghc --version
cabal --version

Build the node:

cd $HOME/git/cardano-node2
cabal configure -O0 -w ghc-8.10.7
echo -e "package cardano-crypto-praos\n flags: -external-libsodium-vrf" >> cabal.project.local
cabal build cardano-node cardano-cli

This upgrade takes about 20 minutes.

Check cardano-cli and cardano-node that the build was successful:

$(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-cli") version
$(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-node") version

If it shows 8.0.0, you can shut down the node and move the binaries to your bin:

sudo systemctl stop cardano-node

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

Check that successful version is reported:

cardano-node version
cardano-cli version

You also need to download the Conway Gensis file from here for your relevant network, e.g. pre-prod, mainnet, Environments - The Cardano Operations Book

And add

"ConwayGenesisFile": "conway-genesis.json",
"ConwayGenesisHash": "f28f1c1280ea0d32f8cd3143e268650d6c1a8e221522ce4a7d20d62fc09783e1", 

to your config.json file.

Now may be the time to setup p2p as well, as that is starting to be rolled out (on one relay only at the moment).

Then start your node.

Just be aware, it will replay the ledger, which can take an hour or two, so make sure you are doing this when you aren’t scheduled for a block any time soon.

sudo systemctl start cardano-node

Clean up:

cd $HOME/git/
rm -rf cardano-node-old
mv cardano-node cardano-node-old
mv cardano-node2 cardano-node

Monitor the progress by either using gliveview or journalctl:

journalctl --unit=cardano-node --follow

8 Likes

Some like @ChrisSTR8 and @georgem1976 managed to build it with GHC 9.2.3 I thought, so this statement should be changed.

You also need to install a new version of libsodium (this commit: GitHub - input-output-hk/libsodium at dbb48cce5429cb6585c9034f002568964f1ce567), which this guide doesn’t mention…

2 Likes

Definitely ghc 9.2.7 can build cardano-node 8.0.0:

$ cardano-node --version
cardano-node 8.0.0 - linux-x86_64 - ghc-9.2
git rev 69a117b7be3db0f4ce6d9fc5cd4c16a2a409dcb8
2 Likes

yes, I think you’re right. I saw some others mention 9.2.7 as well.

The IOHK install.md still references 8.10.7 though. I’ve amended the guide above to note 9.2.7 and the libsodium install/update.
image

Also good point about the libsodium.

git clone https://github.com/input-output-hk/libsodium
cd libsodium
git checkout dbb48cc
./autogen.sh
./configure
make
make check
sudo make install
2 Likes

I personally think it’s way too cumbersome to build cardano-node (always was), like literally endless very specific (old) versions of the build tools and obscure branches. With nodes of other chains you can just upgrade all to latest do make install and get it over with, here endless fine tuning to get the build done.

8.0.0 didn’t build at first for me got “error: undefined reference to ‘crypto_vrf_ietfdraft13_secretkeybytes’”, had to change the libsodium branch to dbb48cc to make it work.

1 Like

I did actually build my 8.0.0 nodes with GHC 8.10.7 and Cabal 3.6.2.0 as per recommendation of IOG. I didn’t attempt to build with GHC 9.2.3 yet, even though I also heard it compiles under newer GHC versions. By reports of SPOs who compiled with newer GHC versions, it doesn’t seem the code is optimised for the newer GHC versions in a way that you see performance gains. So there don’t seem to be any benefit of compiling with newer GHC versions as of yet.

2 Likes

Yes, I have built it on 8.10.7 and 9.2.7, and with and without dbb48cc. All on pre-prod. But it would be good if IOG update the build requirements for clarity.

With P2P enabled for my relay, block replay is about 90% complete after 10 hours. In gLiveView I don’t see any peers. This relay was working well previously with P2P, so hopefully once the replay is done, the peers will connect again. But, this slow block replay is not ideal.

Oh, yeah, that is taking a while! Are you keeping track of it on journalctl?

Yep, I used journalctl to watch things… It finally finished and the peers connected, so it’s looking good.

I can’t say for sure the p2p was the reason for the slow block replay, but I have 2 other relays that are using static configuration, and they each took about 6-8 hours.

Thanks for posting the instructions in this thread. I absolutely appreciate the coincashew guide!

1 Like

Thank your for your summary. Also used ghc 9.2.7 without problems :slight_smile:

2 Likes

I confirm too it works with ghc 9.2.7!
Simply plan sufficiently ahead (hours!) of your next block to do the upgrade!

1 Like

Docker solves this issue and I appreciate them having an official Docker image, even though there is much more to be desired there. Like an official ARM image.

But I feel your pain on this one. This problem is magnified when it comes to dealing with different system architectures.

Thanks for the nice tutorial.

Any idea why this would happen:

Conway related : Wrong genesis file: the actual hash is "95e0a3478f0cde6071469a5aa0426e79e9a966c4334384a2fe0f4792b8cc2512", but the expected genesis hash given in the node configuration file is "f28f1c1280ea0d32f8cd3143e268650d6c1a8e221522ce4a7d20d62fc09783e1"

On one node 8.0.0 is running without a problem. On another I get this wrong genesis hash error.

Looks like your conway-genesis.json is different on the node with the hash error.

The configs appeared to be identical. But they were not. Three hours later I found this, just an empty line in the config at the end:

conway-genesis.json

{
  "genDelegs": {}
}

(there was an extra empty line here... :( )

Thanks for the hint @jf3110

1 Like

Hi, can anyone confirm that memory ramps up and 24GB is completely necessary for this upgrade?

nope, its not necesarry as far I know… at least not 24G

1 Like

Have you run the cabal update command after you cloned the github repo? It needs to be done before you build.

Did u install new libsodium version?

Download and install the new branch of libsodium,

git clone https://github.com/input-output-hk/libsodium
cd libsodium
git checkout dbb48cc
./autogen.sh
./configure
make
make check
sudo make install

then try again to build the node

1 Like