Testnet Upgrade to v1.1.3

Documentation to upgrade from testnet v1.1.2 to v1.1.3

Upgrade Instructions using Cosmovisor

Cosmovisor must be set up, as instructed on the previous page, before proceeding with the following steps.

  1. Check that the GRPC port set up in $HOMEDIR/config/client.toml matches the one in $HOMEDIR/config/config.toml.

${HOMEDIR}/config/client.toml
<!-- truncated -->
# <host>:<port> to Tendermint RPC interface for this chain
node = "tcp://localhost:26657"
<!-- truncated -->
${HOMEDIR}/config/config.toml
<!-- truncated-->
[rpc]
# TCP or UNIX socket address for the RPC server to listen on
laddr = "tcp://127.0.0.1:26657"
<!-- truncated-->

Delete any existing scheduled upgrades.

rm -rf $HOMEDIR/data/upgrade-info.json
  1. Set up the pre-upgrade script in Cosmovisor configuration.

${HOMEDIR}/cosmovisor/config.toml
cosmovisor_custom_preupgrade = '1.1.3_preupgrade.sh'

Download this script inside $HOMEDIR/cosmovisor/ by using the following command.

wget -O $HOMEDIR/cosmovisor/1.1.3_preupgrade.sh https://raw.githubusercontent.com/imua-xyz/testnets/refs/heads/main/scripts/1.1.3_preupgrade.sh

Modify the script with a text editor of your choice. All node runners should change the value of NODE_DIR to their HOMEDIR.

$HOMEDIR/cosmovisor/1.1.3_preupgrade.sh
# Find this line and replace it
NODE_DIR="${NODE_DIR:-/$HOME/.imuad}"
# with this line containing the actual path
NODE_DIR=/path/to/.imuad
  • Non-validator nodes (explorer or archival) should comment out the following lines, marked by a comment with such instructions. This typically will not apply to most readers.

$HOMEDIR/cosmovisor/1.1.3_preupgrade.sh
# For non-validator please comment out the following two lines
  replace_file "$ORACLE_BEACON_CONFIG" "$NODE_DIR/config/$ORACLE_BEACON_FILENAME" "$ORACLE_BEACON_FILENAME"
  replace_file "$ORACLE_FEEDER_YAML" "$NODE_DIR/config/$ORACLE_FEEDER_FILENAME" "$ORACLE_FEEDER_FILENAME"
  • Validator nodes should create these oracle price feeder files; observe that the names are prefixed with 1.1.3_ to indicate that these aren't yet active. Remember to use your own API keys here, or alternatively, use self-hosted Holesky beacon and execution layer nodes.

${HOMEDIR}/config/1.1.3_oracle_env_beaconchain.yaml
urls:
  beaconchain: !!str https://rpc.ankr.com/premium-http/eth_holesky_beacon/${ANKR_API_KEY}
  eth: !!str https://eth-holesky.g.alchemy.com/v2/${ALCHEMY_API_KEY} 
nstid:
  !!str 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee_0x9d19  
bootstrap: !!str 0x38674073a3713dd2C46892f1d2C5Dadc5Bb14172  

The oracle_feeder.yaml is a copy of the previous version with the chainid updated and a status section added.

$HOMEDIR/config/1.1.3_oracle_feeder.yaml
tokens:
  - token: ETHUSDT
    sources: chainlink
  - token: WSTETHUSDT
    sources: chainlink
  - token: USDCUSDT
    sources: chainlink
  - token: NSTETH
    sources: beaconchain
  - token: SOLUSDT
    sources: chainlink
  - token: XRPUSDT
    sources: chainlink

sender:
  # replace with the actual value of $HOMEDIR
  path: $HOMEDIR/config
imua:
  chainid: imuachaintestnet_233-9 # changed
  appName: imua
  # change the port numbers if required
  grpc: 127.0.0.1:9090
  ws: !!str ws://127.0.0.1:26657/websocket
  rpc: !!str http://127.0.0.1:26657
status: # added
  grpc: 50002

The third oracle file oracle_env_chainlink.yaml is unchanged during this upgrade.

Mark the script as executable.

chmod +x $HOMEDIR/cosmovisor/1.1.3_preupgrade.sh
  1. Download the new genesis file next to the existing genesis file. At the time of upgrade, it will be moved by the pre-upgrade script to the correct location.

wget -O $HOMEDIR/config/1.1.3_genesis.json https://raw.githubusercontent.com/imua-xyz/testnets/refs/heads/main/scripts/1.1.3_genesis.json
  1. Download the 1.1.3 binary and schedule the upgrade.

HOMEDIR="/path/to/.imuad" # edit this
VERSION="1.1.3"
UPGRADE_NAME=$VERSION
UPGRADE_HEIGHT=14762500
pushd /tmp
wget -O imuad_${VERSION}.tar.gz "https://github.com/imua-xyz/imuachain/releases/download/v${VERSION}/imuachain_${VERSION}_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/aarch64/arm64/').tar.gz"
tar -xvzf imuad_${VERSION}.tar.gz
# Cosmovisor step
cosmovisor --cosmovisor-config ${HOMEDIR}/cosmovisor/config.toml \
    add-upgrade ${UPGRADE_NAME} \
    bin/imuad \
    --upgrade-height ${UPGRADE_HEIGHT}
popd

Verify the contents of the upgrade file.

$HOMEDIR/data/upgrade-info.json
{
  "name": "1.1.3",
  "time": "0001-01-01T00:00:00Z",
  "height": 14762500
}

Check that the new binary exists in Cosmovisor.

$HOMEDIR/cosmovisor/upgrades/1.1.3/bin/imuad version
1.1.3

Restart the cosmovisor-imuad service

sudo systemctl restart cosmovisor-imuad

Post-Upgrade

To account for drift in the block production speed, there may be some lag between the last block of imuachaintestnet_233-8 and the first block of imuachaintestnet_233-9. In such an event, the logs will include a similar line.

4:29AM INF Genesis time is in the future. Sleeping until then... genTime=2024-08-31T22:58:52Z module=server server=node

Once the upgrade is successful and blocks are being produced for the new chain-id, remove the pre-upgrade script from the Cosmovisor configuration file.

${HOMEDIR}/cosmovisor/config.toml
cosmovisor_custom_preupgrade = ''

Restart the service.

sudo systemctl restart cosmovisor-imuad

Last updated