Aptos在开发网的部署和更新

2022/05/10

aptos在开发网的部署和更新

该部署方案针对的是开发网devnet。

硬件要求:

  • For running a production grade FullNode:
    • CPU: 4 cores (Intel Xeon Skylake or newer).
    • Memory: 8GiB RAM.
  • For running the FullNode for development or testing:
    • CPU: 2 cores.
    • Memory: 4GiB RAM.

存储要求:

Aptos 存储的数据量取决于区块链的账本历史(长度)和链上状态(例如账户)的数量。 这可能受到许多因素的影响,包括:区块链的年龄、平均交易率和账本修剪器的配置。

生成密钥和公钥Peer地址

为了固定身份,可以预先获得一批密钥和公钥Peer地址,源代码方式和Docker方式皆可。

# 源代码
# 生成密钥文件
cargo run -p aptos-operational-tool -- generate-key --encoding hex --key-type x25519 --key-file private-key.txt
# 生成公钥地址
cargo run -p aptos-operational-tool -- extract-peer-from-file --encoding hex --key-file private-key.txt --output-file peer-info.yaml
# docker
docker run --rm aptoslab/tools:devnet sh -c "echo '开始生成私钥...' && aptos-operational-tool generate-key --encoding hex --key-type x25519 --key-file /root/private-key.txt && echo '\n\n开始生成公钥和 Peer ID...' && aptos-operational-tool extract-peer-from-file --encoding hex --key-file /root/private-key.txt --output-file /root/peer-info.yaml && echo '\n\n您的私钥:' && cat /root/private-key.txt && echo '\n\n您的公钥和 Peer ID 信息如下:' && cat /root/peer-info.yaml"

如何使用固定身份

修改 public_full_node.yaml 的 full_node_networks.identity 字段,有两种类型,from_configfrom_storage。在测试初期使用前一种方法,后期可能要转移到 from_storage 方案。

# from_confing
full_node_networks:
  identity:
    type: "from_config"
    key: "key value"
    peer_id: "peer value"

# from_storage
full_node_networks:
  identity:
    type: "from_storage"
    key_name: "fullnode_network"
    peer_id_name: "owner_account"
    backend:
      type: "vault"
      server: ""
      ca_certificate: ""
      namespace: ""
      token:
        from_disk: "/opt/vault/token"

三个重要文件

  • public_full_node.yaml:启动的配置文件
  • waypoint.txt:路标文件,以 https://devnet.aptoslabs.com/waypoint.txt 为准
  • genesis.blob:创世区块,以 https://devnet.aptoslabs.com/genesis.blob 为准

后两个文件的内容或路径需要在配置文件中进行设置。推荐使用路径的方案,这样的话 public_full_node.yaml 相对来说变动更小。需要注意,版本的更新可能会导致三个文件都需要更新。

源代码部署

# commit id: fb026ef59ef41f18589422ef647f19322672bd1a
git clone https://github.com/aptos-labs/aptos-core.git
cd aptos-core
./scripts/dev_setup.sh
source ~/.cargo/env

git checkout --track origin/devnet

# 获得三个文件
mkdir -p run/data
cp -a config/src/config/test_data/public_full_node.yaml run/
cd run
wget https://devnet.aptoslabs.com/waypoint.txt -O waypoint.txt
wget https://devnet.aptoslabs.com/genesis.blob -O genesis.blob

# 修改配置文件
sed -i "s#/full/path/to/waypoint.txt#./waypoint.txt#" public_full_node.yaml
sed -i "s#/full/path/to/genesis.blob#./genesis.blob#" public_full_node.yaml

# 运行
cargo run -p aptos-node --release -- -f ./public_full_node.yaml

镜像部署

镜像部署是最简便的部署方式,也是最推荐的方式。

前置条件:

  • Docker
  • Docker-compose v2.2.1

1. 安装前置条件

# 安装 Docker
wget -O get-docker.sh https://get.docker.com
sudo sh get-docker.sh
rm -f get-docker.sh

# 安装 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

docker -v
docker-compose -v

2.获得 docker-compose 以及三个文件

mkdir -p /opt/aptos/
cd /opt/aptos

# 下载 docker-compose 编排文件
wget -O ./docker-compose.yaml https://github.com/aptos-labs/aptos-core/blob/devnet/docker/compose/public_full_node/docker-compose.yaml

# 下载 全节点配置文件
wget -O ./public_full_node.yaml https://github.com/aptos-labs/aptos-core/blob/devnet/docker/compose/public_full_node/public_full_node.yaml

# 下载 创世节点文件
wget -O ./genesis.blob https://devnet.aptoslabs.com/genesis.blob

# 下载 waypoint(可验证检查点)文件
wget -O ./waypoint.txt https://devnet.aptoslabs.com/waypoint.txt

3. 修改配置

主要指的是固定账户信息。目前使用手动修改的方案吧,后面可以用template 进行渲染。

4. 运行

cd /opt/aptos
docker-compose pull
docker-compose up -d

docker ps -a

curl 127.0.0.1:9101/metrics 2> /dev/null | grep -m 1 peer_id

节点更新

指的是devnet清空更新,主网更新的话不需要清理数据。

  1. 关闭节点
  2. 清理数据
  3. 更新 waypoint.txt 和 genesis.blob 文件。根据需求确认是否需要更新 public_full_node.yaml
  4. 更新程序
  5. 启动程序

状态判断

# 查看同步状态,和链上状态进行比对
curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_state_sync_version{.*\"synced\"}" | awk '{print $2}'
# 查看出站数,是否大于零
curl 127.0.0.1:9101/metrics 2> /dev/null | grep "aptos_connections{direction=\"outbound\""

Search

    Table of Contents