一、系统环境和依赖
1.1 系统要求
必须是linux系统,使用 Ubuntu 14.04 以上的64位系统,推荐使用 Ubuntu 16.04以上版本系统
必须有公网ip
建议4核以上CPU,主频不低于2G
建议内存8G以上
建议公网带宽5Mb以上
建议可用空间32GB以上的SSD硬盘
1.2 系统依赖安装
# Install dependency package
sudo apt-get install curl ntp wget git libssl-dev openssl make gcc g++ autoconf automake python build-essential -y
# libsodium for ubuntu 14.04
sudo apt-get install libtool -y
# libsodium for ubuntu 16.04
sudo apt-get install libtool libtool-bin -y
1.3 Node.js 安装
ASCH v1.5基于Node.js v10.14开发,最低要求为v10.14(推荐使用当前最新LTS版本:v10.15.1)。在安装 node.js 时一定要注意版本是否符合要求。建议使用 nvm 管理版本。
# Install nvm
curl -o- https://raw.githubusercontent.com/creationix/nvm/v… | bash
# This loads nvm
export NVM_DIR=”$HOME/.nvm”
[ -s “$NVM_DIR/nvm.sh” ] && \. “$NVM_DIR/nvm.sh”
[ -s “$NVM_DIR/bash_completion” ] && \. “$NVM_DIR/bash_completion” # This loads nvm bash_completion
# Install node and npm for current user.
nvm install v10
# check node version and it should be v10.x.x
node –version
二、Asch Mainnet 节点安装
Mainnet 默认端口为8192, P2P 端口为8193。如果开启了防火墙,请确保放行此两个端口的出入数据(TCP协议)
2.1 下载安装包并解压
wget http://china.aschcdn.com/asch-linux-latest-mainnet…
tar zxvf asch-linux-latest-mainnet.tar.gz
cd asch-linux-1.4.2-mainnet // 不同版本的安装包解压出来的目录名不同,此处为1.4.2
2.2 修改config.json
vim config.json
#修改 publicIp 为自己服务器的公网 IP
2.3 下载数据库快照并解压替换
主网数据库较大,不建议从头开始同步。可以下载数据库快照,直接解压后替换 asch 目录下的 data 目录。
wget http://china.aschcdn.com/blockchain-mainnet-snapsh…
tar zvxf blockchain-mainnet-snapshot.tar.gz
2.4 启动节点,监听区块同步情况
执行 ./aschd start
此时可以监听日志(位于logs/debug.yyyyMMdd.log)查看日志信息或者通过接口 http://yourip:8192/api/blocks/getHeight来查看区块高度是否增长。
三、Asch Testnet 节点安装
Testnet 默认端口为4096, P2P 端口为4097。如果修改了端口,请两者一并修改,P2P 端口 = 默认端口 + 1
3.1 下载安装包并解压
wget http://china.aschcdn.com/asch-linux-latest-testnet…
tar zxvf asch-linux-latest-testnet.tar.gz
cd asch-linux-1.5.0-testnet // 不同版本的安装包解压出来的目录名不同,此处为1.5.0
3.2 修改config.json
vim config.json
#修改 publicIp 为自己服务器的公网 IP
3.3 下载数据库快照并解压替换
主网数据库较大,不建议从头开始同步。可以下载数据库快照,直接解压后替换 asch 目录下的 data 目录。
wget http://china.aschcdn.com/blockchain-testnet-snapsh…
tar zvxf blockchain-testnet-snapshot.tar.gz
3.4 启动节点,监听区块同步情况
执行 ./aschd start
此时可以监听日志(logs/debug.2018xxxx.log)或者通过接口 http://yourip:4096/api/blocks/getHeight来查看区块高度是否增长。
四、Asch Localnet 节点安装
Localnet 默认端口为4096, P2P 端口为4097。如果修改了端口,请两者一并修改,P2P 端口 = 默认端口 + 1
4.1 下载安装包并解压
wget http://china.aschcdn.com/asch-linux-latest-localne…
tar zxvf asch-linux-latest-localnet.tar.gz
#不同版本的安装包解压出来的目录名不同,此处为1.4.2
cd asch-linux-1.4.2-localnet
4.2 修改config.json
vim config.json
# 修改 publicIp 为自己服务器的公网 IP 或局域网 IP
4.3 启动节点,监听区块同步情况
执行 ./aschd start
此时可以监听日志(logs/debug.2018xxxx.log)或者通过接口 http://yourip:4096/api/blocks/getHeight来查看区块高度是否增长。
4.4 创世账户
在 localnet 里,创世账户会有1亿个初始 XAS。创世账户主密码为:
stone elephant caught wrong spend traffic success fetch inside blush virtual element
五、源码安装
下面以安装 Mainnet 为例,演示如何通过源码安装 Mainnet 节点,请在安装前确保系统环境和依赖安装完成
5.1 克隆源码到本地
git clone https://github.com/AschPlatform/asch
5.2 安装依赖
npm install
备注: 此处依赖较多,可能需要较长时间
5.3 修改 app.js
//搜索testnet,修改为 mainnet。修改后的结果如下:
appConfig.netVersion = process.env.NET_VERSION || ‘mainnet’
5.4 覆盖config.json
默认的config.json 是用于 localnet 调试,Mainnet 需要修改。
cp config-mainnet.json config.json
修改 config.json 里的 publicIp 字段为自己服务器的 IP 地址。
5.5 创建依赖目录
mkdir -p public/dist
mkdir -p data/contracts
mkdir chains
5.6 配置网页客户端
# 下载前端源码
git clone https://github.com/AschPlatform/asch-frontend-2.gi…
# 安装包管理器yarn
npm install -g yarn
# 安装依赖包
yarn install
# 编译 dev: localnet, test: testnet, pro: mainnet
yarn pro
# 把编译后的结果拷至 asch 主目录下的 public/dist目录中
cp -r dist/spa-mat/* ../asch/src/public/dist
# 详细内容请参考前端项目内的文档
5.7 下载快照并解压
cd asch
wget http://47.75.26.122/blockchain-mainnet-snapshot.tar.gz
tar zvxf blockchain-mainnet-snapshot.tar.gz
5.8 启动节点
./aschd start
六、常见错误处理
6.1 网页客户端无法访问
网页客户端访问地址为:http://your_ip:your_port, Mainnet 端口默认为8192, Testnet 以及 Localnet 默认为 4096.
排查步骤:
查看是否改了config.json里的port字段
查看防火墙是否放行端口
查看节点是否启动,执行命令./aschd status, 如果没有启动则显示Asch server is not running,此时执行./aschd start即可
6.2 受托人节点无法生产区块
排查步骤:
从网页客户端查看受托人排名是否进入前21
使用下面的命令搜索错误日志grep Failed logs/debug.log,如果出现字样Failed to get public ip, block forging MAY not work!说明公网ip没有自动获取到,需要手动配置。
使用下面的命令搜索错误日志grep error logs/debug.log如果出现字样Failed to load delegates: Account xxxxxxxxx not found。说明你配置的账户密钥还没有注册成为受托人,或者注册成为受托人之前就启动了服务,这时重启服务即可
注意 如果你的节点正在同步区块,不要立即重启,等同步完成了再重启
./aschd restart
正常情况下应该会出现如下log
grep Forging logs/debug.log
#Forging enabled on account: xxxxxxxxxxxxxx
6.3 无法同步区块(卡块)
对比自己节点区块高度和最新区块高度。最新区块高度。 如果发现自己节点的高度一直落后且不增长,可以断定为自己的节点没有同步区块。
解决方法:
升级到最新版本并重启
./aschd upgrade
./aschd start
重建
./aschd rebuild
七、节点升级
在安装完节点以后,后续节点的升级可以通过简单的./aschd upgrade来完成,不必重复安装。
进入 asch 目录执行命令:
./aschd upgrade
./aschd start
八、常用命令
# 启动节点
./aschd start
# 停止节点
./aschd stop
# 查看节点运行状态
./aschd status
# 重启节点
./aschd restart
# 升级节点
./aschd upgrade
# 重新同步区块
./aschd rebuild
# 查看节点版本
./aschd version
# 开启区块生产(仅供受托人使用)
./aschd enable “your sercret”
# 查看log
tail -f logs/debug.201xxxxx.log
九、受托人配置
使用文本编辑工具(比如 vim)打开config.json, 找到secret字段,将你的受托人主密码填进去即可,该字段为 json 字符串数组,一台机器可以配置多个,但不能重复。
注意 不管运行了几个节点,请不要重复配置相同的受托人主密码
执行以下命令:
# 重启节点
./aschd restart
# 打开生产区块开关
./aschd enable “your sercret”