接入PlatON节点

一、节点奖励

1.1 奖励池来源

  • 增发:每年增发(上年总量的2.5%)的80%
  • 基金会捐赠:相当于初始分配总量的3%,在前10年内分配,保持节点奖励池每年不变

例如:
第一年的总发行量为100亿LAT,2%用于节点奖励,即2亿;
基金会捐赠总计3%,前10年内分配,见下表:

第一年
62215742 LAT
第二年
55965742 LAT
第三年
49559492 LAT
第四年
42993086 LAT
第五年
36262520 LAT
第六年
29363689 LAT
第七年
22292388 LAT
第八年
15044304 LAT
第九年
7615018 LAT
即,第一年的节点奖励总计为:262,215,742 LAT

1.2委托奖励比例说明:

在执行质押命令时,请您一定慎重考虑委托奖励比例的数值,如果想修改委托奖励比例,大约每30个小时内只能调整1次,并且调整范围最高±5%。
委托奖励比例定义:您的节点所得收益分给您节点委托人的比例。

  • 规则:0%-100%,0%您的节点获得全部收益,100%您的节点除了所出块中包含的手续费以外,全部分给您的节点委托人。
  • 委托奖励比例影响的收益种类:

出块奖励:按照委托奖励比例的数值分配;
质押奖励:按照委托奖励比例的数值分配;
交易手续费:不受委托奖励比例制约,全部归节点所有。

  • 计算方式:

假设某个节点自有质押量为10,00
该节点有两个用户A和B委托,A委托800,B委托200,委托总量1000。
该节点设置委托奖励比例为20%,且该节点排名处于201名以内,则收益计算方式为:

  • 节点质押奖励=节点当前结算周期质押奖励*80%:

委托用户A收益=节点当前结算周期质押奖励20%800/1000
委托用户B收益=节点当前结算周期质押奖励20%200/1000

  • 节点出块激励=节点出单个块奖励*80%:

委托用户A收益=节点出单个块奖励20%800/1000
委托用户B收益=节点出单个块奖励20%200/1000

  • 接入前准备工作:
  • 云厂商推荐:阿里云、腾讯云、百度云、AWS、华为云
  • 服务器区域:海外(大陆区域一定概率存在网络异常情况),推荐新加坡、法兰克福等
  • 最低配置:

最低配置2核8G、推荐配置4核8G;磁盘300GB,带宽按需
请您配置好云主机磁盘监控,避免磁盘耗尽导致节点停止,如果对Linux比较熟悉,建议将节点部署到单独挂载的数据盘。(接入手册默认将节点数据目录安装在系统盘)

  • 安全注意事项:

云主机安全组22端口尽量只对操作PC公网IP源地址开放,如果没有固定公网IP,可在需要操作的时候根据当时的公网IP(访问ip.cn获取)临时开放;建议开放16789端口的TCP/UDP协议,有利于节点互联互通。
节点相关keys请务必异地备份。

2.1 账户钱包准备

  • 质押账户钱包地址

质押账户是节点所有行为的操作主体,账户中需要有至少10万LAT用来质押,以及少量的交易手续费用来执行节点操作(不能是锁仓LAT),例如版本声明,修改验证人信息等操作。请您注意质押账户具有以下特性:

  • 锁仓LAT、不锁仓LAT都可以用来质押,也可以混合质押,只要您保障质押账户中至少拥有10万LAT即可;
  • 节点质押成功后,质押账户钱包中的余额不能用来委托,无论是否锁仓,但可以用余额来增加质押,锁仓LAT也可以用来增加质押;
  • 请不要只质押10万LAT,尽量多质押一些,以免节点因零出块惩罚(扣除大约11000 LAT)被罚后质押不足10万LAT而被强制解质押,解质押需要等待大概21天,这期间您的节点没有任何收益,质押账户中的LAT也无法进行转账交易;
  • 请在质押账户中预留一部分的非锁仓LAT,用以发送节点操作,例如版本声明、版本升级等。
  • 收益账户

节点的收益账户用来接收您的节点所获得的奖励,如果您有定期使用节点收益账户钱包余额增加委托的需求,请您注意操作环境的安全性并制定相应的定期委托策略。

3.1 部署节点时注意事项

  • 重要资料备份
  • 质押账户钱包文件管理方式

由于质押账户中有大量的LAT,出于安全考虑,建议使用离线MTool签名的方式来管理节点,节点服务器上只需要保存质押账户的观察钱包文件即可。
您也可以从安全角度考虑,自行制定安全管理办法与流程。

4.1 节点运营注意事项

  • 节点运行状况监控

为了节点服务器能稳定运行,需要您制定监控策略实时掌握服务器的运行状况,主流云厂商都提供后台设置监控事件的规则。

  • 惩罚机制

A.零出块处罚

某个共识周期被选为验证节点,如果没有生产任何区块或生产的所有区块都没有被其他验证节点确认,则认定为零出块。
某个共识周期零出块,如果在其后的20个共识周期(约2个半小时)内没有出块,则被处罚,需要被扣除相当于2500个区块的出块奖励(大约11000LAT),并被限制节点资格,如果扣除后质押金不够 100,000LAT,则强制退出节点。

B.双签处罚

在相同的区块高度生产或签名多个区块,被认定为双签行为。
双签行为除强制退出节点外,还需要扣除千分之十的质押LAT。
双签行为可以由任何人发起举报,当前验证节点验证并达成共识后,被举报人将被认定为违规行为并加以处罚。处罚金的 50%给与举报人,50%置入奖励池用于第二年的出块和 Staking奖励。

  • 处罚方式

限制节点资格:临时取消节点资格,锁定56个结算周期,锁定期间没有资格成为验证节点参与出块,也没有Staking奖励。
强制退出节点:强行解质押,并踢出备选节点候选人行列,所质押的LAT在168个结算周期后退回原质押账户,在质押金冻结期间不能重新质押成为新节点,重新质押后原委托关系废除。
扣除质押LAT:从节点质押金中扣除LAT,置入奖励池用于第二年的出块和Staking奖励,如果处罚后质押金不够100,000LAT,则强制退出节点。

5.2 设置阿里云监控磁盘空间、内存使用率、cpu使用率、官网云监控设置,傻瓜式操作,此处文档省去。

=======================================================================

成为主网验证节点

该指引将介绍如何在 Linux 下安装 PlatON 节点软件。

推荐配置

  • 服务器: 运行PlatON软件的服务器和备份服务器(均需具备防火墙)
  • 内存: 8GB RAM
  • 本地存储: 100GB系统盘、200GB数据盘(可在线扩容)
  • 处理器: 64位4核 (每核2.4 GHz以上)
  • 带宽: 5 MB/秒(可在线扩容)

安装概述

通常来说,安装一个新节点需要通过三到四个步骤(取决于您的操作系统),安装步骤将会详细地在下面列出来:

为便于节点数据目录所在磁盘能够在线扩容,建议您将节点数据目录挂载单独的数据磁盘。
本文档主要目的为快速部署节点,未涉及数据磁盘应用相关内容。如果您采用了挂载数据磁盘的方式,请您在参考本文档操作时,根据您的实际情况设置数据目录的路径。

在 Ubuntu 安装(18.04)

安装并运行 NTP 服务

root@platon-1:~# sudo apt-get update
root@platon-1:~# sudo apt-get install -y gnupg2 curl software-properties-common ntp
root@platon-1:~# sudo systemctl start ntp
root@platon-1:~# sudo systemctl enable ntp

验证 NTP 时间同步
root@platon-1:~# ntpq -4c rv | grep leap_none
associd=0 status=0614 leap_none, sync_ntp, 1 event, freq_mode,

注释: associd=0 status=0615 leap_none , sync_ntp, 1 event, clock_sync,其中leap_none为红色,表示NTP时间同步正常。

安装PlatON

root@platon-1:~# sudo wget https://download.platon.network/platon/platon/1.0.0/platon -O /usr/bin/platon
root@platon-1:~# sudo wget https://download.platon.network/platon/platon/1.0.0/platonkey -O /usr/bin/platonkey


root@platon-1:~# sudo chmod +x /usr/bin/platon  /usr/bin/platonkey
执行完上述命令后,platon和platonkey二进制就已经成功安装到您系统上的/usr/bin目录里,您可以在任何目录执行相关命令

root@platon-1:~# platon version
PlatON
Version: 1.0.0-unstable
Git Commit: 853d83b335da8c2c6a19dac7678024df12199961
Architecture: amd64
Protocol Versions: [63 62]
Network Id: 1
Go Version: go1.16.2
Operating System: linux
GOPATH=
GOROOT=/usr/lib/go-1.16
当您执行完platon version后,请您仔细检查您的Git Commit值是否与下面图一致,若一致则表明已经正确安装:

创建节点密钥

  • 节点公私钥

每个节点在网络中都有一个唯一的身份标识以便彼此区分,这个身份标识是一个公私钥对,可以在节点工作目录(如/platon/platon-node/)下通过以下命令生成:

root@platon-1:~# mkdir /platon
root@platon-1:~# mkdir -p /platon/platon-node/data && platonkey genkeypair | tee >(grep "PrivateKey" | awk '{print $2}' > /platon/platon-node/data/nodekey) >(grep "PublicKey" | awk '{print $3}' > /platon/platon-node/data/nodeid)

PrivateKey:  ccb1f37bfd57736732bb32932323ew3223bc32l23jv349b2fb1d7fef5dd6609f22b8da4355da0
PublicKey :  3329u23b23gh32gh23vg23h32d9b5bcb2e4216ca84421598232b64b7b323e78020b200c4d79d4b1403867cd5da4957f93a5aeca4a16b3b52328768e8a6

其中PrivateKey是节点的私钥,PublicKey是节点的公钥,公钥用于标识节点身份,可以被公开出去,私钥不能公开并且需要做好备份,否则有可能造成节点无法解质押!

同时会在节点工作目录下的子目录data中生成两个文件:

nodeid 节点公钥(ID)文件,保存节点的公钥。
nodekey 节点私钥文件,保存节点的私钥。

节点 BLS 公私钥

PlatON 节点除了需要节点公私钥外还需要一种被称为 BLS 公私钥的密钥对,这个密钥对在共识协议中将被使用,密钥对可以在节点工作目录(如~/platon-node)下通过以下命令生成:

root@platon-1:~# mkdir -p /platon/platon-node/data && platonkey genblskeypair | tee >(grep "PrivateKey" | awk '{print $2}' > /platon/platon-node/data/blskey) >(grep "PublicKey" | awk '{print $3}' > /platon/platon-node/data/blspub)

PrivateKey:  23hj32h390eaa44eb1b43c77b323kn32bv23vh4670233a9cc7ab0aa79cd63juvj
PublicKey :  ewewjhjewc84ddda2f40a8dcd4e9b361faskhedsjgdsjd sf08f03d9766b8b741863b5c139f15c3969e770071bb171c2289842e50986e35581705b27a8069f3e06b6426b8063aca0008946d7579ac811afewdnewjhd80351bcfewkew

其中PrivateKey是节点的 BLS 私钥,PublicKey是节点的 BLS 公钥,BLS 公钥用于共识协议中快速验证签名,可以被公开出去,BLS 私钥不能公开并且需要做好备份,否则有可能造成节点无法解质押!。

同时会在节点工作目录下的子目录data中生成两个文件:

*  blspub 节点 BLS 公钥文件,保存节点的 BLS 公钥。

*  blskey 节点 BLS 私钥文件,保存节点的 BLS 私钥。

加入PlatON主网络

在加入PlatON公有网络前请确保服务器本地具备以下条件:
本章节假设服务器为 Ubuntu18.04,可执行文件所在工作目录为 /platon/platon-node,注意后续所有命令行操作均在工作目录下进行。

加入PlatON主网络

任何人、任何组织都可以加入 PlatON 主网络。

启动验证节点

执行以下命令即可启动验证节点加入PlatON主网络

root@platon-1:/platon/platon-node# nohup platon --identity platon --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 --syncmode "fast" > ./data/platon.log 2>&1 &

查看节点状态

当 PlatON启动成功后,正常情况下会通过节点发现协议自动和距离自己最近的节点建立连接,连接成功后会启动区块同步,所以判断加入网络是否成功可以通过查看节点的 peers 同时确认当前节点块高是否增长来判断。
如果没有预先生成密钥,节点在启动时自动在节点的data目录下生成。如果采用自动生成的形式,将只会生成节点私钥与 BLS 私钥,相关公钥不会自动生成。

进入PlatON控制台

root@platon-1:/platon/platon-node# platon attach http://localhost:6789
Welcome to the PlatON JavaScript console!
instance: PlatONnetwork/platon/v1.0.0-unstable-853d83b3/linux-amd64/go1.16.2
at block: 0 (Sat, 13 May 53284 03:20:00 CST)
 datadir: /platon/platon-node/data
 modules: admin:1.0 net:1.0 personal:1.0 platon:1.0 rpc:1.0 web3:1.0


打印Welcome to the PlatON JavaScript console!相关信息,表示成功进入控制台,否则视为进入控制台失败,如有问题可联系社区服务人员。

查看节点的 peers

 通过在PlatON控制台中执行以下命令查看连接节点的信息。 

> admin.peers
[{
    caps: ["cbft/1", "platon/63"],
    id: "0e9b9887bec136c6eeb551072c4ce6c7caf5d68051b6a7c12f39637468e288e2bf4258cc907296f14dce1fc7cc01ab5cef51f7ce9ac4de3a9d4c6d4aa8dd166d",
    name: "PlatONnetwork/platon-15.223.104.62/v1.0.0-unstable-853d83b3/linux-amd64/go1.16.2",
    network: {
      consensus: false,
      inbound: true,
      localAddress: "172.27.249.238:16789",
      remoteAddress: "15.223.104.62:48410",
      static: false,
      trusted: false
    },
    protocols: {
      cbft: {
        commitBn: 497097,
        highestQCBn: 497099,
        lockedBn: 497098,
        protocolVersion: 1
      },
      platon: {
        head: "0xaaff29fc0ceb781e261a099997eacd36985b33a2561928b9fda8c0992ff419bd",
        number: 497240,
        version: 63
      }
    }
}, {

查看当前块高

通过在PlatON控制台中执行以下命令查看当前节点的块高
> platon.blockNumber
0

执行此命令数次,如块高数值在不断增长,则表示连接成功;
如果是新节点,块高一直为0时,则表示节点在同步区块,可能会存在延迟,可通过命令:
> platon.syncing
{
  currentBlock: 496971,
  highestBlock: 497443,
  knownStates: 36639,
  pulledStates: 36639,
  startingBlock: 0
}
如果打印false,表示节点未处于同步区块状态;
如果打印如上信息,表示节点正处于同步区块状态;

退出控制台:exit

成为验证节点

打赏

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注