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_config
和 from_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清空更新,主网更新的话不需要清理数据。
- 关闭节点
- 清理数据
- 更新 waypoint.txt 和 genesis.blob 文件。根据需求确认是否需要更新 public_full_node.yaml
- 更新程序
- 启动程序
状态判断
# 查看同步状态,和链上状态进行比对
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\""