背景
公司需要上线byteball的见证节点,在测试环境同步testnet见证节点数据
apt install g++ make
wget https://nodejs.org/download/release/v5.12.0/node-v5.12.0-linux-x64.tar.xz
tar xvf node-v5.12.0-linux-x64.tar.xz
mv node-v5.12.0-linux-x64 /usr/local/node
ln -s /usr/local/node/bin/node /usr/local/bin/node
ln -s /usr/local/node/bin/npm /usr/local/bin/npm
npm config set registry https://registry.npm.taobao.org
高版本或者低版本的node/npm在npm install的时候会出现各种各样的问题,建议直接卸载系统内部的node和npm,手动安装node-v5.12.0版本
cd /opt/byteball
git clone https://github.com/byteball/byteball-witness
cd byteball-witness
npm install
testnetify.sh文件,但是这个文件还缺少一行,完整如下:#!/bin/sh
sed -ie "s/version = '1.0'/version = '1.0t'/; s/alt = '1'/alt = '2'/" node_modules/byteballcore/constants.js
sed -ie "s/.hub = 'byteball.org\/bb'/.hub = 'byteball.org\/bb-test'/" conf.js
主要是修改了node_modules/byteballcore/constants.js和conf.js文件,修改成为测试网络的配置。
conf.js文件里的exports.bLight = false;bLight: 是否是轻钱包,默认是false ,(light client (true) or full node (false).storage: 区块存储方式,可以是mysql和sqlite,默认sqlite,如果需要修改为mysql,需要将这个sql库导入,并在conf.json文件加入这个配置项:{control_addresses: 远端可以配对的设备地址。可以在GUI钱包menu button-Settings-Global preference- Device address找到,以0开头的字符串payout_address: 执行pay命令时候付款的对方地址。可以填写自己的钱包地址,作为后面获取见证节点获取奖励的接受地址deviceName: 在对话界面显示的名称permanent_paring_secret: 加密配对地址的认证词,跟在配对地址#后面KEYS_FILENAME: 保存的keys文件名称以下文件是示例:
/*jslint node: true */
"use strict";
exports.port = 6611;
//exports.myUrl = 'wss://mydomain.com/bb';
exports.bServeAsHub = false;
exports.bLight = false;
exports.storage = 'sqlite';
exports.hub = 'byteball.org/bb-test';
exports.deviceName = ‘Witness-test';
exports.permanent_pairing_secret = 'randomstring';
exports.control_addresses = ['DEVICE ALLOWED TO CHAT'];
exports.payout_address = 'WHERE THE MONEY CAN BE SENT TO';
exports.bSingleAddress = true;
exports.THRESHOLD_DISTANCE = 50;
exports.MIN_INTERVAL = 60*1000; // min interval between witnessings in milliseconds
exports.MIN_AVAILABLE_WITNESSINGS = 100;
exports.KEYS_FILENAME = 'keys.json';
console.log('finished witness conf');
Ctrl+Z放在后台,所以建议开启一个screen来运行,第一次运行会让输入设备名称和加密钱包密码,这里自己定义好并记住screen -S witness
cd /opt/byteball/byteball-witness
node start.js
.config/byteball-witness数据文件,里面包括这些文件:root@sh-gdex-08:~/.config/headless-byteball# ll
total 2664
drwx------ 2 root root 4096 Aug 9 18:20 ./
drwx------ 5 root root 4096 Aug 9 18:00 ../
-rw-r--r-- 1 root root 811008 Aug 9 18:00 byteball-light.sqlite
-rw-r--r-- 1 root root 32768 Aug 9 19:45 byteball-light.sqlite-shm
-rw-r--r-- 1 root root 795192 Aug 9 19:45 byteball-light.sqlite-wal
-rw-r--r-- 1 root root 0 Aug 9 18:20 byteball.sqlite
-rw-r--r-- 1 root root 31 Aug 9 18:00 conf.json
-rw-r--r-- 1 root root 243 Aug 9 18:00 keys.json
-rw-r--r-- 1 root root 1060736 Aug 9 19:55 log.txt
keys.json:是钱包的加密文件conf.json:配置文件,包括上面的msql的配置都放在里面,会覆盖默认的conf.js文件*.sqlite: 文件是数据文件,可以用sqlite连接进去看里面的表的结构~/.config/byteball-witness/conf.json,增加 admin_email和from_email地址
admin_email: 作为接受节点报警的邮件地址from_email: 作为发送邮件的地址,前提是需要在本地部署SMTP服务 节点启动同步完数据需要转一笔 byte 到节点钱包地址,大概 100000 bytes 。之后就可以让其他用户的钱包修改他们的见证节点地址为自己的节点地址 ⚠️但是需要关注邮件告警,"Only [1-100] spendable outputs left, will split an output of 25000”,见证节点同步数据缺失超过100个区块会被停止作为见证节点的资格
线上可以使用这个这样页面: https://byteball-cashback-witness.com/balance-and-withdrawal.php,输入框输入你的见证节点的地址,如果是见证节点,会红字提示:"Witness addresses can not use cashback witness system.",不是则没有这个提示