Release Summary

Mandatory upgradeNo
Upgrade Deadline2022.4.20 12:00
Tag version of Githubhttps://github.com/vision-consensus/vision-core/releases/tag/mainnet_ultima_v1.1.1
Docker Image Versionmaintainers/vision-mainnet:ultima_v1.1.1

Features changed in this version

Version 1.1.0 of Ultima introduces several optimization updates. We optimized the compatibility of the EVM interface, mainly optimizing three interfaces: eth_getLogs, eth_getTransactionByHash, and eth_estimateGas.


1. EVM-compatible JsonRpc interface method optimization

In versions prior to ultima 1.1.1, no eth_getLogs method, eth_estimateGas is a fixed value, and the data returned by eth_getTransactionByHash is incomplete. In the new version, we have optimized these methods so that more complete information can be queried by these methods.

VIP: https://github.com/vision-consensus/vision-improvement-proposals/blob/feature/vip09/vip09.md
Code: https://github.com/vision-consensus/vision-core/pull/153

Node Upgrade Procedure

Compile the source code to upgrade

1. Close the process

# Get the PID of the running vision-core process
ps aux | grep "java -Xmx.*g -XX:+UseConcMarkSweepGC -jar"
# Stop the process
kill -15 PID

2. back up the node's data

# Back up the jar package of the currently running vision-core application
mv FullNode.jar FullNode.jar.$(date '+%FT%T').bak

# Back up the current database
tar --force-local -zcvf "output-directory-$(date '+%FT%T')-backup.tar.gz" output-directory

3. Get the new version of the jar package

# Get the latest version of java source code
git clone https://github.com/vision-consensus/vision-core.git

# Compile the source code and get the FullNode.jar package
cd vision-core
gradle build -x test

# Copy the FullNode.jar package to the previous working directory, you need to replace $OLD_WORKDIR in the following command according to the working directory you are using
cp -a build/libs/FullNode.jar $OLD_WORKDIR


Get the official jar package directly

You can also get the official jar package directly to re-run the service.
Link address : https://github.com/vision-consensus/vision-core/releases/download/mainnet_ultima_v1.1.1/FullNode.jar


Enables support for the new jsonrpc interface

This update to the underlying code mainly adds new interfaces. In order to enable support for these new interfaces, we need to add support fields to the configuration file. In order to do this, we need to pull the new configuration file : https://vision-mainnet-configs.s3.us-east-2.amazonaws.com/stage001/vision-mainnet.config

replace the original configuration file and run the node again. If we don't need support for these new interfaces, we can omit this step and use the previous configuration file.

4. Start the node

# Go to your original working directory, replace $OLD_WORKDIR by yourself

# Start the node
# FullNode:
nohup java -Xmx12g -XX:+UseConcMarkSweepGC -jar FullNode.jar -c configs/vision-mainnet.config &

# FVGuarantee:
nohup java -Xmx12g -XX:+UseConcMarkSweepGC -jar FullNode.jar --witness -p <privateKey> -c configs/vision-mainnet.config &

# If you need to use another witness account, please replace the <privateKey>
  1. Upgrade completed, please wait until the whole network upgrade is completed.

Docker image upgrade

1. Close the container

# Shut down the docker container, please replace the container name of the vision-core service by yourself

docker stop $CONTAINER_NAME


2. backup node data

# Enter the external volume mapped by the vision-core service container, please replace VOLUME_NAME by yourself


# Back up the current database

tar --force-local -zcvf "output-directory-$(date '+%FT%T')-backup.tar.gz" output-directory

3. pull the latest docker image

docker pull maintainers/vision-mainnet:latest


Pull the image first and then run the container

Please use "docker pull" to pull the latest image independently first. Then use the following docker run command to run the container. Otherwise, nodes that have pulled the image with the same name locally will run the container directly with the original image. In this case, the node is restarting the service without upgrading the underlying code.


Enable support for the new jsonrpc interface, which is optional in this update

There are several new jsonrpc interfaces in this update, if we want to enable support for these new interfaces, we need to use the new configuration file.

Please get the configuration file manually to replace the configuration file in the previous external mount volume, if you don't have a custom external mount volume, then the file should be located in the file system: /data/mainnet/configs/mainnet.config
New configuration file link: https://vision-mainnet-configs.s3.us-east-2.amazonaws.com/stage001/vision-mainnet.config

How to do it.

cd /data/mainnet/configs/

wget https://vision-mainnet-configs.s3.us-east-2.amazonaws.com/stage001/vision-mainnet.config

mv vision-mainnet.config mainnet.config

4. Starting a Docker container service with a new image

# fv witness Node:
docker run -itd \
    -v "/data/mainnet:/data/vision" \
    -p 7080:7080 \
    -p 7081:7081 \
    -p 7082:7082 \
    -p 16666:16666 \
    -p 60061:60061 \
    -p 60071:60071 \
    -p 60081:60081 \
    --name vision-mainnet-FVGuarantee \
    maintainers/vision-mainnet:latest --private <private-key>

# Please replace <private-key> with the private key corresponding to the witness account used by your node.

# FullNode 节点:
docker run -itd \
    -v "/data/mainnet:/data/vision" \
    -p 7080:7080 \
    -p 7081:7081 \
    -p 7082:7082 \
    -p 16666:16666 \
    -p 60061:60061 \
    -p 60071:60071 \
    -p 60081:60081 \
    --name vision-fullnode \


Keep the original external mount volume

When rerunning a container with a new image, be sure to keep the original external container hanging on the volume. Do not change it.

5. The upgrade is complete, please wait for the completion of the network-wide upgrade