1、简介
为了让大家更好地参与到PlatON的测试,我们在此为大家提供了成为PlatON开发网验证节点的教程。教程一共分为三个部分,并对一些关键点作了标注,请一定按照步骤操作。如果需要获得更多关于PlatON开发的资料,可以查询开发者文档。
开发者文档:概述 | PlatON
注:
开发网为开发者或节点提供开发测试环境。可能出现不稳定,网络重置的情况。开发网络目前版本为1.0.0,仅支持二进制下载安装。
2、安装一个节点
该指引将介绍如何在 Linux 下安装 PlatON 节点软件。
▌ 2.1硬件要求
CPU:4核
内存:8G
磁盘:> 100G
▌ 2.2安装Ubuntu(18.04)
在物理机上安装Ubuntu系统或者使用云服务器
推荐使用ubuntu18.04进行安装,其他版本未进行测试
▌ 2.3安装并运行 NTP 服务
打开 Linux 终端并输入以下命令
sudo apt-get update &&
sudo apt-get install -y gnupg2 curl software-properties-common ntp &&
sudo systemctl enable ntp && sudo systemctl start ntp
NTP 服务用于时间同步,系统时间不正确将会影响 PlatON 正常运行
验证 NTP 时间同步
ntpq -4c rv | grep leap_none
说明
输出类似 associd=0 status=0615 leap_none , sync_ntp, 1 event, clock_sync的信息,其中leap_none为红色,表示NTP时间同步正常。
▌ 2.4安装 PlatON
wget http://111.231.58.192/install-platon-dev.sh && chmod +x install-platon-dev.sh && ./install-platon-dev.sh
执行完上述命令后,platon和platonkey二进制就已经成功安装到您系统上的/usr/bin目录里,您可以在任何目录执行相关命令。
查看platon版本号
platon version
输出以下信息
PlatON
Version: 1.0.0-unstable
Git Commit: 62b9a9001794b3d317ead9bd088bd35b1c929dcf
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.13.4
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.13
查看platonkey版本号
platonkey --version
输出以下信息
platonkey version 1.0.0-unstable-62b9a900
参考资料——开发网络相关资源
platon :
https://download.platon.network/platon/platon/1.0.0/platon
platonkey :
https://download.platon.network/platon/platon/1.0.0/platonkey
mtool windows :
https://download.platon.network/platon/mtool/windows/1.0.0/mtool-setup.exe
mtool linux :
https://download.platon.network/platon/mtool/linux/1.0.0/mtool-client.zip
开发网络链ID :
210309
开放RPC URL :
以及 ws://47.241.99.44:6790
scan浏览器地址 :
https://devnetscan.platon.network
▌ 2.5创建节点密钥
节点公私钥
每个节点在网络中都有一个唯一的身份标识以便彼此区分,这个身份标识是一个公私钥对,可以通过以下命令在节点工作目录(如~/platon-node)下生成:
mkdir -p ~/platon-node/data && platonkey genkeypair | tee >(grep “PrivateKey” | awk ‘{print $2}’ > ~/platon-node/data/nodekey) >(grep “PublicKey” | awk ‘{print $3}’ > ~/platon-node/data/nodeid)
输出如下信息
PrivateKey :
a2583f11f8dda0cb86ba27bcc82068376079ffa2b09572ae4699fc1d9b1a0876
PublicKey : 4fbbce92e1fde41ef793fc5e759d65885bcf60418ead8071a6a132c747f4ecc6f9bf8e3f533e7d921def9dcf958c6729a941acb8f058cd90fbc0820c2fcfce5d
其中PrivateKey是节点的私钥,PublicKey是节点的公钥,公钥用于标识节点身份,可以被公开出去,私钥不能公开并且需要做好备份。
同时会在节点工作目录下的子目录data(~/platon-node/data)中生成两个文件:
nodeid 节点公钥(ID)文件,保存节点的公钥。
nodekey 节点私钥文件,保存节点的私钥。
节点 BLS 公私钥
PlatON 节点除了需要节点公私钥外还需要一种被称为 BLS 公私钥的密钥对,这个密钥对在共识协议中将被使用,可以通过以下命令在节点工作目录(如~/platon-node)下生成密钥对:
mkdir -p ~/platon-node/data && platonkey genblskeypair | tee >(grep “PrivateKey” | awk ‘{print $2}’ > ~/platon-node/data/blskey) >(grep “PublicKey” | awk ‘{print $3}’ > ~/platon-node/data/blspub)
输出如下信息
PrivateKey : 9bdb88e6eb37f6b3a5c2ce8b3b50e5b64439344bc0896607b11a64f854159a37
PublicKey : 809cd1731df172bf64a04e1943312bdc24729a11bf23b42b9142f56ea664db362398014b3f018374068f6b69566bf60cd06079acd656f3da0dec8b912e1ff1254482ac671214c893cc6e5e3ab4ebaf1436cfc018463265201a531528dff93204
其中PrivateKey是节点的 BLS 私钥,PublicKey是节点的 BLS 公钥,BLS 公钥用于共识协议中快速验证签名,可以被公开出去,BLS 私钥不能公开并且需要做好备份。
同时会在节点工作目录下的子目录data中生成两个文件:
blspub 节点 BLS 公钥文件,保存节点的 BLS 公钥。
blskey 节点 BLS 私钥文件,保存节点的 BLS 私钥。
PlatON隐私计算,目的是为了在去中心化的不可信环境中,能够有效利用所有参与者的资源,并确保各个参与者提供的算力资源是有效的、可信的,同时能够对计算数据、计算逻辑本身提供隐私保护。
3、加入 PlatON 网络
PlatON主网上线时间待定,ChainID待定。PlatON开发网络于北京时间2021年3月10日上线,ChainID:210309。
注:
可执行文件所在工作目录为 ~/platon-node,该章节所有命令行操作均在工作目录下进行。
▌ 3.1加入PlatON开发网络
下载创世区块文件genesis.json
cd ~/platon-node && wget https://download.platon.network/platon/platon/1.0.0/genesis.json
初始化创世区块文件
cd ~/platon-node && platon --datadir ./data init genesis.json
说明
出现Successfully wrote genesis state相关提示说明初始化创世信息完成。
▌ 3.2启动验证节点
输入以下命令
cd ~/platon-node/ && nohup platon --identity platon-node --datadir ./data --port 16789 --rpcport 6789 --rpcapi “db,platon,net,web3,admin,personal” --rpc --nodekey ./data/nodekey --cbft.blskey ./data/blskey --verbosity 1 --rpcaddr 127.0.0.1 --bootnodes
enode://c72a4d2cb8228ca6f9072daa66566bcafa17bec6a9e53765c85c389434488c393357c5c7c5d18cf9b26ceda46aca4da20755cd01bcc1478fff891a201042ba84@devnetnode1.platon.network:16789 --syncmode “fast” > ./data/platon.log 2>&1 &
▌ 3.3查看节点状态
当 PlatON启动成功后,正常情况下会通过节点发现协议自动和距离自己最近的节点建立连接,连接成功后会启动区块同步,所以判断加入网络是否成功可以通过查看节点的 peers 同时确认当前节点块高是否增长来判断。
如果没有预先生成密钥,节点在启动时自动在节点的data目录下生成。如果采用自动生成的形式,将只会生成节点私钥与 BLS 私钥,相关公钥不会自动生成。
进入PlatON控制台
platon attach http://localhost:6789
查看节点的 peers(控制台操作)
admin.peers
查看当前块高(控制台操作)
platon.blockNumber
节点列表中出现一系列PlatON网络节点并且块高在不断增长,则表示连接成功!(由于新节点需要同步,可能会存在延迟)
退出控制台
exit
4、成为验证节点
PlatON 是实行民主治理的区块链项目,验证节点由所有 LAT 持有者共同推选,以维护和发展 PlatON 网络。得票数最多的 201 名节点将成为备选节点,从中用 VRF 随机选出 43 个验证节点,参与管理整个 PlatON 网络。
▌ 4.1安装 MTool
step1. 下载MTool工具包
cd ~ && wget https://download.platon.network/platon/mtool/linux/1.0.0/mtool-client.zip
step2. 解压MTool工具包
(if ! command -v unzip;then sudo apt install unzip; fi;) && unzip mtool-client.zip && cd mtool-client
step3. 下载脚本
脚本下载到mtool-client 目录下,否则脚本无法找到新版本mtool的路径。
cd ~/mtool-client && wget http://111.231.58.192/mtool_install.sh
step4. 执行命令
chmod +x mtool_install.sh && ./mtool_install.sh
说明
提示 Install mtool succeed. 时,表示 MTool 安装成功。
step5. 重启终端
安装完成之后,需要重启终端,让新添加的环境变量生效。
▌ 4.2配置 MTool
修改chainId
需要修改mtool配置文件config.properties中的chainId
输入以下命令
vi ~/mtool-client/config.properties
显示
chainId=100
hrp=lat
host=127.0.0.1
port=6789
修改
chainId=100
为
chainId=210309
输入
:wq
回车退出
创建钱包
PlatON 中,参与验证节点进行出块要创建两个钱包。如果已经有钱包,可通过将钱包文件拷贝到$MTOOLDIR/keystore目录下,跳过本步骤。
创建质押钱包
质押钱包用于质押 token,质押成功后才能成为备选节点候选人。运行以下命令创建质押钱包:
mtool-client account new staking
注:
如果提示ERROR: JAVA_HOME is not set的错误,请重新登录终端,如果问题依然存在,则执行
source ~/.bashrc
输入一次密码,再输入一次确认密码,即可创建钱包文件,创建成功后会在目录$MTOOLDIR/keystore下生成质押钱包文件staking.json。
创建收益钱包
收益钱包用于收取区块奖励和Staking奖励,Staking奖励统一发放给验证节点,由验证节点自行分配。运行以下命令创建收益钱包:
mtool-client account new reward
输入一次密码,再输入一次确认密码,即可创建钱包文件,创建成功后会在目录$MTOOLDIR/keystore下生成质押钱包文件reward.json。
配置验证节点信息
cd $MTOOLDIR && wget https://download.platon.network/platon/scripts/validator_conf.sh
运行脚本配置
chmod +x validator_conf.sh && ./validator_conf.sh
说明
提示Please enter the platon node IP address: 时,请输入 PlatON 节点服务器 ip 地址:127.0.0.1。
提示validator conf success,并输出validator_config.json地址时,表示脚本执行成功。
验证节点信息配置文件说明
完成配置验证节点信息后,会在 MTool 的安装目录的 validator 子目录下,生成验证节点信息文件 validator_config.json,文件内容如下:
{
"nodePublicKey": "0abaf3219f454f3d07b6cbcf3c10b6b4ccf605202868e2043b6f5db12b745df0604ef01ef4cb523adc6d9e14b83a76dd09f862e3fe77205d8ac83df707969b47", "blsPubKey": "82d740cbc0314ec558c5426f88fdad6f07a07f9846c6be4e40cd628b
74b9f641ddad01e4c281a2c3693f8ff2a73a410297aff379ee0575127d51de99b97acc9a1b7bc8ca132ef6f0379a3ec9d76a603d623176e49e1c53e87fead36317895099",
"nodeAddress": "http://192.168.120.146", "nodePort": "16789", "nodeRpcPort": "6789"
}
参数说明
nodePublicKey: 节点 ID,可通过节点数据目录 data 下的 nodeid 文件查看;
blsPubKey: BLS 公钥,可通过节点数据目录 data 下的 blspub 文件查看;
nodeAddress: 节点地址,如果 MTool 和节点在同一台机器或同一个局域网内,可以使用内网IP,否则使用公网 IP,格式为:http://18.238.183.12。
nodePort: 节点 P2P 端口,默认为16789。
nodeRpcPort: rpc端口,默认为 6789。
▌ 4.3自定义PlatScan头像
如果用户不需要在PlatScan显示自己指定的头像,可以忽略此步骤。否则需要如下操作:
注册keybase账户
用户首先需要在 keybase.io 官网进行注册,如果已注册可登录keybase官网。
上传指定头像
点击用户头像,即可上传头像。
生成PGP key
如果用户有PGP key,登录成功后,会在用户头像旁边显示一串16位的公钥,如:EB621920A48D0699 ;如果用户还没有PGP key ,可以点击用户头像旁边的add a PGP key即可生成。
修改externalId值
修改验证节点信息文件validator_config.json的externalId字段值为上一步生成的PGP key。
提示:用户完成质押操作后,即可在PlatScan上显示用户自定义的头像。
▌ 4.4发起质押操作
如果共识节点部署完成,并且节点已经追上全网块高,您就可以使用 MTool 进行质押操作。质押操作前请确确保质押账户余额足够,质押最低门槛为10万 LAT。如果是接入测试网,可以按照后续说明申请测试LAT。
申请测试LAT
如果您有领取大额测试LAT的需求,请您按照格式要求发送邮件至support @ latticex. foundation,邮件要求:
标题:PlatON开发网Token申请
姓名:
联系方式:
微信号(或其他即时通讯软件):
申请金额:
用途:
收款账户:
备注:
注:
请不要将质押账户的所有LAT进行质押,至少保留1个LAT,以备支付后续发起节点管理的交易手续费,比如升级提案的投票,解质押等交易。
执行命令
mtool-client staking --config $MTOOLDIR/validator/validator_config.json --keystore $MTOOLDIR/keystore/staking.json --amount 100000 --benefit_address xxx196278ns22j23awdfj9f2d4vz0pedld8a2fzwwj
–delegated_reward_rate 5000 --node_name myNode --website www.mywebsite.com --details myNodeDescription --external_id 121412312
提示: please input keystore password : 输入质押钱包的密码,然后回车,如果显示如下信息则代表质押成功:
operation finished
transaction hash:
0x89b964d27d0caf1d8bf268f721eb123c4af57aed36187bea90b262f4769eeb9b
SUCCESS
参数说明
config:验证节点信息文件路径
keystore:发送交易的冷钱包路径
amount: 质押数,不少于100000lat-质押门槛,小数点不超过8位
restrictedamount: 不少于100000lat-质押门槛,小数点不超过8位(使用锁仓余额质押)
autoamount:不少于100000lat-优先使用锁仓余额质押,若锁仓余额不足质押金,再使用自由金额质押
benefit_address:验证节点收益地址
delegated_reward_rate:委托奖励比例,单位:万分比,整数,范围[0,10000],如输入5000,表示分红比例为50%
node_name:验证人名称,不超过30字节,支持字母、数字、空格、上下划线及#,必须字母开头
website:官网路径,不超过70字节,数字字母组成
details:简介,验证人简要介绍说明,不超过280字节,建议英文
external_id:节点头像icon在keybase.io的ID,或者外部系统身份认证ID