Ultima-1.1.1

是否强制更新及版本号

事项备注
是否强更
版本号ultima1.1.1
最迟升级时间2022.4.20 12:00
Github代码Tag版本https://github.com/vision-consensus/vision-core/releases/tag/mainnet_ultima_v1.1.1
Docker镜像版本maintainers/vision-mainnet:ultima_v1.1.1
maintainers/vision-mainnet:latest

版本功能变动

Ultima1.1.1 版本针对EVM接口进行兼容优化,主要优化eth_getLogs,eth_getTransactionByHash,eth_estimateGas三个接口。

API

1、兼容EVM的JsonRpc接口方法优化

在ultima1.1.1 之前的版本中,没有eth_getLogs方法,eth_estimateGas为固定值,eth_getTransactionByHash返回数据不完整,在新版本中,我们对这些方法进行兼容优化,使得这些方法可以查询到更完整的信息

源码编译节点升级步骤

1. 关闭进程

# 获取正在运行的 vision-core 进程的PID
ps aux | grep "java -Xmx.*g -XX:+UseConcMarkSweepGC -jar"
# 停止该进程
kill -15 PID

2. 备份节点数据

# 备份当前运行的vision-core程序的jar包
mv FullNode.jar FullNode.jar.$(date '+%FT%T').bak

# 备份当前数据库
tar --force-local -zcvf "output-directory-$(date '+%FT%T')-backup.tar.gz" output-directory

3. 获取新版本的jar包

# 获取最新版的java源代码
git clone https://github.com/vision-consensus/vision-core.git

# 编译源代码, 获取FullNode.jar 包
cd vision-core
gradle build -x test

# 拷贝 FullNode.jar 包到先前的工作目录, 用户需要根据自己所使用的的工作目录来替换下面命令中的$OLD_WORKDIR
cp -a build/libs/FullNode.jar $OLD_WORKDIR

📘

直接获取官方提供的jar包

也可以直接获取官方提供的 jar 包来重新运行服务。
获取地址: https://github.com/vision-consensus/vision-core/releases/download/mainnet_ultima_v1.1.1/FullNode.jar

🚧

开启对新增jsonrpc 接口的支持

本次底层代码的升级主要是添加了新的接口。 为了开启对这些新增接口的支持, 我们需要在配置文件中添加支持字段。为了达成此目的, 我们需要重新拉取新的配置文件: https://vision-mainnet-configs.s3.us-east-2.amazonaws.com/stage001/vision-mainnet.config

替换掉原先的配置文件,然后再运行节点。 如果我们不需要对这些新增接口的支持的话, 那么可以省略该步骤, 依旧使用先前的配置文件。

4. 启动节点

# 进入到自己原先的工作目录, 请自行替换 $OLD_WORKDIR
cd $OLD_WORKDIR

# 启动节点
# 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 &

# 如果有需要使用其他的witness账户, 请自行替换 <privateKey>

5. 升级完成, 请等待全网升级完成

Docker镜像节点升级步骤

1. 关闭Docker 容器并删除

# 关闭docker容器, 请自行替换vision-core服务对应的容器名

docker stop $CONTAINER_NAME

docker rm $CONTAINER_NAME

2. 备份节点数据

# 进入vision-core服务容器映射出来的外部卷, 请自行替换 VOLUME_NAME
cd $VOLUME_NAME

# 备份当前数据库
tar --force-local -zcvf "output-directory-$(date '+%FT%T')-backup.tar.gz" output-directory

3. 拉取最新 docker 镜

docker pull maintainers/vision-mainnet:latest

🚧

先拉取镜像再运行容器

请先独立使用 docker pull 拉取最新的镜像。 再使用下面的 docker run 命令运行容器。 否则对于前面本地拉取过同名镜像的节点会直接使用原先的镜像运行容器。 这样的话, 节点相当于是重启了服务, 而没有升级新的底层代码.

📘

开启对新增jsonrpc接口的支持, 该操作步骤在此次升级中是可选的

此次升级新增了多个 jsonrpc 接口, 如果我们要开启对这些新增接口的支持, 需要使用新的配置文件。

请手动获取配置文件替换掉先前外部挂载卷中的配置文件, 如果您没有自定义外部挂载卷的话, 那么该文件在文件系统中的位置应该是: /data/mainnet/configs/mainnet.config
新配置文件连接: https://vision-mainnet-configs.s3.us-east-2.amazonaws.com/stage001/vision-mainnet.config

操作方式:

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
  1. 使用新镜像启动Docker 容器服务
# fv  witness节点:
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>

# 请自行使用自己节点使用的 witness 账户对应的私钥替换<private-key>.


# 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 \
    maintainers/vision-mainnet:latest

❗️

保持原有的外部挂载卷

在使用新的镜像重新运行容器时, 请务必注意保持原先的外部容器挂在卷的位置。 不要随意更改。

5. 升级完成, 请等待全网升级完成