# Swisstronik v4 Testnet

## Upgrade plan for v1.0.3

The upcoming v1.0.3 upgrade will introduce a couple of new features:

* Performance improvements
* The ability to send unencrypted transactions to simplify user onboarding

### 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 the '[Upgrade by Cosmovisor](#using-cosmovisor)' section below.

It is critically important for validator operators to back up the `.swisstronik/data/priv_validator_state.json` file after stopping the gaiad 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 the new binary:

```
wget https://github.com/SigmaGmbH/swisstronik-chain/releases/download/testnet-v1.0.3/swisstronikd.zip
```

Extract the downloaded archive:

```
unzip swisstronikd.zip
```

In `bin` folder you will be able to find required files.

Copy `libsgx_wrapper_v1.0.3.x86_64.so` lib:

```
sudo cp bin/libsgx_wrapper_v1.0.3.x86_64.so /usr/lib
```

Copy `v1.0.3_enclave.signed.so` to `ENCLAVE_HOME` directory (by default it is `$HOME/.swisstronik-enclave`):

```
cp bin/v1.0.3_enclave.signed.so $ENCLAVE_HOME
```

**DURING 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.3 at `ExecStart` in your `.service` file.

NOTE: `swisstronikd` v1.0.3 is located in `bin` folder from previous step with unpacking `.zip` archive.

Then run:

```
sudo systemctl daemon-reload
```

Then you should restart your validator.

### Using Cosmovisor

If you're running your node using Cosmovisor, please follow these steps.

**Download binaries**

Download the new binary:

```
wget https://github.com/SigmaGmbH/swisstronik-chain/releases/download/testnet-v1.0.3/swisstronikd.zip
```

Extract the downloaded archive:

```
unzip swisstronikd.zip
```

In `bin` folder you will find the required files.

Copy `libsgx_wrapper_v1.0.3.x86_64.so` to the library directory:

```
sudo cp bin/libsgx_wrapper_v1.0.3.x86_64.so /usr/lib
```

Copy `v1.0.3_enclave.signed.so` to `ENCLAVE_HOME` directory (by default it is `$HOME/.swisstronik-enclave`):

```
cp bin/v1.0.3_enclave.signed.so $ENCLAVE_HOME
```

**Setup Cosmovisor**

If you haven't configured Cosmovisor before, follow these 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.0
```

Rename and copy `swisstronikd_v1.0.2` to `swisstronikd`:

```
cp $(whereis swisstronikd_v1.0.2) .
```

Initialize Cosmovisor:

```
export DAEMON_HOME=/path/to/.swisstronik
export DAEMON_NAME=swisstronikd

cosmovisor init swisstronikd
```

**Put v1.0.3 binaries**

Copy `swisstronik` v1.0.3 to $HOME/.swisstronik/cosmovisor/upgrades/v1.0.3/bin

```
mkdir -p  $HOME/.swisstronik/cosmovisor/upgrades/v1.0.3/bin
cp swisstronikd $HOME/.swisstronik/cosmovisor/upgrades/v1.0.3/bin
```

NOTE: `swisstronikd` v1.0.3 is located in `bin` folder from previous step with unpacking `.zip` archive.

**Check folder structure**

At this moment, you should have the following structure:

```
.
├── current -> genesis or upgrades/<name>
├── genesis
│   └── bin
│       └── swisstronikd  # old: v1.0.2
└── upgrades
    └── v1.0.3
        └── bin
            └── swisstronikd  # new: v1.0.3
```

**Export 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=true
```

**Disable 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_HOME
```

Skipping the invariant checks is strongly encouraged since it decreases the upgrade time significantly and since there are other improvements coming to the crisis module in the next release of the Cosmos SDK.

**NOTE**: in v1.0.3 release we've enabled possibility to send unencrypted transactions. To expose JSON-RPC for them, specify `--json-rpc.address-unencrypted` and `json-rpc.ws-address-unencrypted` parameters.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.swisstronik.com/swisstronik-docs/node-setup/setup-node/testnet/upgrade-your-testnet-node/swisstronik-v4-testnet.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
