准备工作
硬件环境
可使用$ lscpu | grep -oh avx 查看cpu是否支持AVX
cpu: 8-Core (16-Thread) Intel i7/Xeon or equivalent with AVX support
ram: 16GB DDR4
Storage: 500GB SSD
操作系统
CentOS Linux release 7.7.190
clang依赖
nearcore 1.21.0 以上版本 clang>3.9
yum install centos-release-scl
yum install llvm-toolset-7
scl enable llvm-toolset-7 bash
clang --version
将 scl enable llvm-toolset-7 bash
加入~/.bash_profile
并source ~/.bash_profile
创建账户
记录好助记词
https://wallet.testnet.near.org/create
从github克隆项目
clone nearcore仓库
$ git clone https://github.com/near/nearcore
$ git fetch origin --tags
选择版本(目前最新版本为1.21.1)
export NEAR_RELEASE_VERSION=$(curl -s https://github.com/near/nearcore/releases/latest | tr '/" ' '\n' | grep "[0-9]\.[0-9]*\.[0-9]" | head -n 1)
$ git checkout $NEAR_RELEASE_VERSION
编译nearcore二进制
大概需要半个小时
$ cd nearcore
$ make release
初始化工作目录
–account-id也可以不指定,后面可以手工添加validator_key.json
$ mkdir -p /data/.near
$ ./target/release/neard --home /data/.near init --chain-id testnet --download-genesis --download-config --account-id 验证者账户ID
如果您对 ~/.near 中的默认工作目录没问题,则可以跳过 --home 参数。如果需要更换,请传递您的首选位置。
测试网的创世文件很大(6GB +),所以这个命令将运行一段时间并且不会显示任何进度。
- config.json - 节点配置参数
- genesis.json - 创世配置文件。包含初始账户、合约、访问密钥和其他代表区块链初始状态的记录
- node_key.json - 包含节点的公钥和私钥的文件。还包括一个可选的 account_id 参数,该参数是运行验证器节点所必需的
- data/ - 节点将在其中写入其状态的文件夹
替换config.json
$ rm /data/.near/config.json
$ wget https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/testnet/config.json -P /data/.near/
配置更新,如果是归档节点archive设置为true
{
...
"archive": true,
"tracked_shards": [0],
...
}
获取历史数据
20m带宽大概需要下载100分钟
$ wget https://near-protocol-public.s3.ca-central-1.amazonaws.com/backups/testnet/rpc/data.tar -P /data/.near/
$ mkdir /data/.near/data
$ tar -vxf /data/.near/data.tar -C /data/.near/data
$ rm /data/.near/data.tar
运行节点
$ echo 'RUST_LOG=debug,actix_web=info ./target/release/neard --home /data/.near run'> start_near.sh
$ chmod +x start_near.sh
$ nohup ./start_near.sh >> near.log 2>&1 &
验证rpc是否正常
$yum install -y httpie
$http post http://localhost:3030 jsonrpc=2.0 id=dontcare method=network_info params:='[]'
验证节点设置
创建/data/.near/validator_key.json
{
"account_id": "YOURACCOUNT.testnet",
"public_key": "ed25519:<YOURPUBKEY>",
"secret_key": "ed25519:<YOURPRIVKEY>"
}
部署staking池
参考https://docs.near.org/docs/validator/staking
$ near call pool.f863973.m0 create_staking_pool '{"staking_pool_id":"抵押池名称", "owner_id":"抵押池所有者账户ID", "stake_public_key":"抵押池所有者账户公钥", "reward_fee_fraction": {"numerator": 10, "denominator": 100}}' --account_id 调用合约者账户ID --amount 50 --gas 300000000000000
再去https://wallet.testnet.near.org/staking 看看我们的节点能显示