Swisstronik v8 Testnet
Upgrade plan for v1.0.8
Upcoming v1.0.8 upgrade contains the following:
Add explicit checks for RA Quote
Add migration for updated power reduction
Use previous cosmos sdk to re-enable delegation
Make ecrecover precompile work the same as go-ethereum
Add check of transaction / call sender in enclave
Allow unsigned calls for eth_estimateGas
Minor bug fixes
Backup
Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the .swisstronik directory. If you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade. See below upgrade by cosmovisor section.
It is critically important for validator operators to back-up the .swisstronik/data/priv_validator_state.json file after stopping the swisstronikd process. This file is updated every block as your validator participates in consensus rounds. It is a critical file needed to prevent double-signing, in case the upgrade fails and the previous chain needs to be restarted.
Manually
If you're not using cosmovisor, you can perform the upgrade manually.
Prepare new binary
Download new binary:
wget https://github.com/SigmaGmbH/swisstronik-chain/releases/download/testnet-v1.0.8/swisstronikd.zipExtract downloaded archive:
unzip swisstronikd.zipPlease, ensure that downloaded swisstronikd binary has 955f02ba4058a8f7cdc1dd4cc376b6ad7a7b52e5 commit. You can check it by running swisstronikd version --long.
In bin folder you will be able to find required files.
Copy libsgx_wrapper_v1.0.8.x86_64.so lib:
sudo cp bin/libsgx_wrapper_v1.0.8.x86_64.so /usr/libCopy v1.0.8_enclave.signed.so to ENCLAVE_HOME directory (by default it is $HOME/.swisstronik-enclave):
cp bin/v1.0.8_enclave.signed.so $ENCLAVE_HOMEDURING UPGRADE: Modify your .service file
Once your validator reach upgrade height, it will stop produce new blocks automatically. After your node stopped, switch the binary you're using to swisstronikd v1.0.8 at ExecStart in your .service file.
NOTE: swisstronikd v1.0.8 is located in bin folder from previous step with unpacking .zip archive.
Then run:
sudo systemctl daemon-reloadThen you should restart your validator
Using cosmovisor
If you're running your node using cosmovisor, please follow next steps.
Download binaries
Download new binary:
wget https://github.com/SigmaGmbH/swisstronik-chain/releases/download/testnet-v1.0.8/swisstronikd.zipExtract downloaded archive:
unzip swisstronikd.zipPlease, ensure that downloaded swisstronikd binary has 955f02ba4058a8f7cdc1dd4cc376b6ad7a7b52e5 commit. You can check it by running swisstronikd version --long.
In bin folder you will be able to find required files.
Copy libsgx_wrapper_v1.0.8.x86_64.so lib:
sudo cp bin/libsgx_wrapper_v1.0.8.x86_64.so /usr/libCopy v1.0.8_enclave.signed.so to ENCLAVE_HOME directory (by default it is $HOME/.swisstronik-enclave):
cp bin/v1.0.8_enclave.signed.so $ENCLAVE_HOMESetup cosmovisor
If you haven't configured cosmovisor before, do the following steps.
Install the latest version of Cosmovisor (1.5.0):
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
cosmovisor version
# cosmovisor version: v1.5.0Copy old swisstronikd binary:
cp $(whereis swisstronikd) .Initialize cosmovisor:
export DAEMON_HOME=/path/to/.swisstronik
export DAEMON_NAME=swisstronikd
cosmovisor init swisstronikdPut v1.0.8 binaries
Copy swisstronikd v1.0.8 to $HOME/.swisstronik/cosmovisor/upgrades/v1.0.8/bin
mkdir -p $HOME/.swisstronik/cosmovisor/upgrades/v1.0.8/bin
cp swisstronikd $HOME/.swisstronik/cosmovisor/upgrades/v1.0.8/binNOTE: swisstronikd v1.0.8 is located in bin folder from previous step with unpacking .zip archive.
Please, ensure that downloaded swisstronikd binary has 955f02ba4058a8f7cdc1dd4cc376b6ad7a7b52e5 commit. You can check it by running swisstronikd version --long.
Check folder structure
At this moment, you should have the following structure:
.
βββ current -> genesis or upgrades/<name>
βββ genesis
β βββ bin
β βββ swisstronikd # old: v1.0.7
βββ upgrades
βββ v1.0.8
βββ bin
βββ swisstronikd # new: v1.0.8Export the environmental variables:
export DAEMON_NAME=swisstronikd
# please change to your own swisstronik home dir
# please note `DAEMON_HOME` has to be absolute path
export DAEMON_HOME=$HOME/.swisstronik
export DAEMON_RESTART_AFTER_UPGRADE=trueDisable auto downloading of binaries
Set DAEMON_ALLOW_DOWNLOAD_BINARIES to false to avoid cosmovisor trying to download binaries.
Start the node
Start the node:
cosmovisor run start --x-crisis-skip-assert-invariants --home $DAEMON_HOMESkipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are some other improvements coming to the crisis module in the next release of the Cosmos SDK.
Last updated