首页 > 数字货币 > 详情

最新教程:如何设置波卡验证人节点

 

以下信息适用于当前处于软启动阶段的 Polkadot 网络。在软启动期间,网络在转换为 PoS (权益证明) 之前先作为 PoA (权威证明) 网络启动。你可以按照本指南设置验证节点,但验证节点的首次选举和奖励将会晚一些开启。如果要在 Kusama 上设置验证节点,请查看 Kusama 指南[1] 。

本指南会指导你如何在 Polkadot 网络上设置验证节点。

 


预备知识

 


在实时网络上运行验证节点需要承担非常多的责任!你不仅要对自己的权益负责,而且还要对当前的提名人的权益负责。如果你因为一些操作失误被 slash,你的利益和名誉都会受到威胁。但是,运行验证节点也会有很多好处,在获得更多收益的同时,你也为去中心化网络的安全做出了贡献。

由于安全性对于成功运行验证节点至关重要,你可以查看相关信息安全验证节点[2]来了解构建基础结构时要考虑的因素。Web3 基金会还维护了一个安全验证人设置的参考文档[3],你可以通过自己部署来使用 (点击这里[4]查看视频操作过程)。在你成为验证人的不断积累过程中,你可能会把这个存储库作为起点,做适当的修改和自定义。

如果你需要帮助,请在 Riot 上点击访问 Polkadot Validator Lounge[5] 。

我们团队及其他验证人会在这里提供帮助和解答,或者根据经验分享一些小提示。

我需要多少 DOTs ?

你可以在查看这里[6]粗略估算至少需要多少 DOT。验证节点的筛选是通过 Phragmen 算法[7],要被选入验证人节点池,也就是成为验证节点,你需要一笔最小质押。这部分质押可以是你自己也可以来自提名人[8]。这意味着,作为最小质押,你必须拥有足够的 DOT 存款来设置 Stash 和 Controller 账户[9],以及一些额外的用于交易的手续费。其余的 DOT 可能来自提名人。

注意: 你为验证节点投入的任何 DOT 都有可能被 slash,这意味着不安全或者不正确的设置可能会直接导致 DOT 丢失!如果你没有信心可以成功运行一个节点,建议将 DOT 提名给受信任的验证节点。

 

初始设置

 

要求

初学者运行验证节点的最常见方法是运行在 Linux 的云服务器上。你可以选择自己喜欢的 VPS[10] 供应商, 以及任何你喜欢的操作系统来使用。本指南中我们将使用 Ubuntu 18.04 ,但其他平台的说明应该与此类似。

Polkadot 中的交易权重以标准硬件为基准。建议验证节点至少运行标准硬件,以确保他们能够及时处理所有块。以下内容不是最低要求但如果你决定以低于此的速度运行,则可能会遇到性能问题。

标准硬件

有关硬件标准的完整详细信息,请参见这里[11]

  • CPU - Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
  • 储存 - NVMe 固态驱动器。应该合理调整大小以应对区块链增长。Polkadot 的前 6 个月,大约可以使用在 30GB - 50GB 之间,但需要每 6 个月重新评估一次。
  • 内存 - 64 GB。

以上发布的规格绝不是你在运行验证人时能使用的最低规格, 但是应该注意,如果你使用的规格更低,则可能需要切换一些额外的优化,才能与使用标准配置的其他验证人相同。

安装 Rust

在选择云服务提供商并设置在新服务器上后,要做的第一件事就是安装 Rust 。如果你从未安装 Rust, 则首先进行安装。

该命令可以获取 Rust 最新版本并安装。

curl https://sh.rustup.rs -sSf | sh

另外,如果已经安装了 Rust,请运行以下命令确保你使用的是最新版本。

rustup update

最后,请运行此命令以安装必要的依赖项,以便编译和运行 Polkadot 节点软件。

sudo apt install make clang pkg-config libssl-dev build-essential

注意:如果你使用的是 OSX 并且安装了 Homebrew[12],则可以使用下面这个同等效果的命令,而不要用上面的那个:

brew install cmake pkg-config openssl git llvm

安装和配置网络时间协议 (NTP) 客户端

NTP[13] 是一种旨在同步时间的网络协议, NTP 允许你同步网络中所有系统的时间。当前,验证人的本地时间需要保持合理的同步,因此你应该运行 NTP 或者类似的服务。你可以通过运行以下命令检查是否具有 NTP 客户端:

如果你使用的是 Ubuntu 18.04 / 19.04, 则应该默认安装了 NTP 客户端

timedatectl

如果已经安装并且正在运行 NTP, 则应该看到 System clock synchronized: yes (或者类似的系统通知),如果你没有看到,可以执行以下命令并安装:

sudo apt-get install ntp

ntpd 将在安装后自动启动 。你可以查询 ntpd 以获得状态信息,以验证是否一切正常:

sudo ntpq -p

构建和安装 polkadot 二进制文件

创建和安装 polkadot 二进制文件

你将需要从 GitHub paritytech/polkadot[14] 储存库中,使用 v0.8 分支中提供的源代码来创建 polkadot 二进制文件。

通常应使用最新的 0.8.x 标签。在撰写本文的时候,它是 0.8.2,但你应该查看 "git tag" 命令 (git tag | grep "$v\0\.8") 的输出,来检查所有潜在的 0.8 版本列表。你应该将 v0.8.2 替换为最新版本(即最新编号)。你还可以在 release[15] 标签上找到 Polkadot 最新版本。

注意:如果你更喜欢用 SSH 而不是 HTTPS,则可以将下面的第一行替换为 git clone git@github.com:paritytech/polkadot.git.

git clone https://github.com/paritytech/polkadot.git
cd polkadot
git tag | grep "$v\0\.8"
git checkout v0.8.2
./scripts/init.sh
cargo build --release

此步骤将花费一些时间(通常需要 10 到 40 分钟,具体取决于你的硬件)。

 

请注意,如果遇到编译错误,则可能必须切换到一个更近的 nightly 版本。这可以通过运行以下命令来完成:

rustup install nightly-2020-05-15
rustup override set nightly-2020-05-15
rustup target add wasm32-unknown-unknown --toolchain nightly-2020-05-15

如果你有兴趣在本地生成密钥,你可以从同一目录安装 subkey 。然后,你可以获取生成的 subkey 可执行文件,并将其传输到 air-gapped 计算机中以提高安全性。

cargo install --force --git https://github.com/paritytech/substrate subkey

同步链数据

 

注意: 默认情况下,验证人节点需要处于归档模式。如果你已经以非存档模式同步了链,则必须首先使用 polkadot purge-chain 删除数据库,然后确保使用 --pruning=archive 选项运行 Polkadot。

你可以通过添加以下标记,在非归档模式下运行验证节点,:-unsafe-pruning --pruning OF BLOCKS>,但是请注意,归档节点和非归档节点数据库彼此不兼容,要进行切换,并且需要清除链数据 。

你可以通过运行以下命令开始同步节点:

./target/release/polkadot --pruning=archive

如果你不想立即以验证节点模式启动。

--pruning=archive 标记是由 --validator 和 --sentry 标记编译而来,因此只有在没有这两个选项之一的情况下启动节点时,才一定需要它。如果你没有将 pruning 设置为存档节点,即使未在验证节点和哨兵模式下运行,切换时也需要重新同步数据库。

 

注意: 验证节点应使用 RocksDb 后端进行同步。默认情况下,这是隐藏的,但可以通过传递 --database RocksDb 标记来显示。不过之后,建议切换到使用更快,更有效的 ParityDb 选项。在数据库后端之间切换将需要重新同步。

如果要测试 ParityDB ,可以添加标记 ---database paritydb。

根据执行此操作时链的大小,此步骤可能需要几分钟到几个小时不等。

如果你想要确定需要运行多长时间,服务器日志 (从polkadot 过程打印到 STDOUT) 将告诉你节点已处理和验证的最新数据块。你可以通过 [Telemetry](https://telemetry.polkadot.io/#list/Polkadot CC1 "Telemetry") 或者 PolkadotJS 区块浏览器[16]将其与当前最高的块进行比较。

 

注意: 如果你并不持有 DOT , 则可以在软启动期结束之后再进行尝试。你仍然可以运行节点,但你需要一笔最小持有量的 DOT 才能继续,因为在软启动期间,转账是被禁用的。需要了解的是,即使对于那些拥有 DOT 的人,他们也只能表明其 意图 进行验证;在 NPoS 阶段开始之前,它们也将无法运行验证人节点。

Bond DOTs

 

注意: 在 Polkadot 的软启动阶段,转账功能被禁用。这意味着,如果你在这段时间内设置验证人,则可能无法按照建议的方式将 stash 和 controller 设置为两个单独的帐户。你不得不使它们成为同一帐户,这意味着你将把该帐户绑定到其自身。但是,强烈建议你尽快更换 controller。

强烈建议你将 controller 帐户和 stash 帐户设为两个单独的帐户。为此,你将创建两个帐户,并确保每个帐户至少有足够的资金来支付进行交易的费用,因为你的大部分资金都将用作抵押资金进行托管。

请确保不要将所有 DOT 余额作为保证金,因为那样会使你无法从保证金余额中支付交易费用。

接下来设置我们的验证节点,我们将执行以下操作:

  • 绑定 Stash 账户中的 DOT。这些 DOT 将会用于质押以确保网络安全,并且可以被 slash。
  • 然后选择 Controller,这是决定何时开始或停止验证的帐户。首先转到 Staking[17] 部分。点击 "Account Actions" 然后点击 "New stake" 按钮。

dashboard bonding

  • Stash 账户 - 选择你的 Stash 账户。在此示例中,我们将绑定 100 milliDOTs - 确保你的 Stash 账户里至少有这么多 DOT。当然,你可以质押更多金额。
  • Controller 账户 - 选择之前创建的 Controller 账户。该帐户还需要少量的 DOT 才能开始和停止验证。
  • Value bonded - 你希望从 Stash 账户中绑定或者质押多少 DOT。请注意,你不需要绑定该账户中的所有 DOT。并且你要知道,之后始终可以绑定更多DOT 。但是,从任何已经绑定的账户中提取都需要一个解除绑定的期限。在 Kusama 网络中,解除绑定时间为 7 天。在 Polkadot 网络中,计划解除绑定时间为 28 天。
  • Payment destination - 接收 staking 奖励的帐户。点击这里[18]了解更多。

填写完所有内容后,单击 Bond 并使用你的 Stash 账户签名交易。

几秒钟后,你应该会看到 "ExtrinsicSuccess" 消息。你应该会看到一张包含所有账户的新卡 (注意: 可能需要刷新当前界面)。右边的保证金金额对应于 Stash 账户的保证金。

 

设置 Session key

 

注意: Session key 是共识关键,那么,如果不确定节点是否具有当前的 Session key,你可以使用 setKeys 交易来使用两种可用的 RPC 方法之一来查询你的节点: hasKey[19] 检查特定密钥,或 hasSessionKeys[20] 检查完整的 session key 公钥字符串。

节点完全同步后,请按 Ctrl-C 停止该过程。在终端提示下,你现在将开始在验证人模式下运行该节点,并带有允许进行一些高级操作所需的不安全 RPC 调用的标记。

./target/release/polkadot --validator --name "name on telemetry"

你可以给验证人取一个你喜欢的名字,但是你需要了解,其他人也可以看到这个名字,并且该名字将包含在使用同一 telemetry 服务器的所有服务器的列表中。由于很多人在使用 telemetry,因此更建议你选择更独特的方法。

生成 Session Key

你需要通过签名并提交外部密钥来告知 Session Key。这就是将验证节点与 Polkadot 上的 Controller 帐户相关联的方法。

方法 1: PolkadotJS-APPS

你可以通过应用 RPC 在客户端中生成 Session Key[21]。如果执行此操作,请确保已将 PolkadotJS-Apps 资源管理器附加到验证节点。你可以在 “设置” 标签中将应用程序仪表板配置为连接到验证节点的端点。如果你连接到由 Web3 基金会的 Parity 托管的默认终结点,则将无法使用此方法,因为对此节点发出 RPC 请求将影响托管在  public node 上的本地密钥库,并且你需要确保自己与 your node 的密钥库进行交互。

确保连接到节点后,设置节点 session 密钥的最简单方法是调用 author_rotateKeys RPC 请求在验证者的密钥库中创建新密钥。导航到 “工具箱” 选项卡,然后选择“ RPC调用”然后选择 author > rotateKeys() 选项,并记住保存你返回的输出以用于后续步骤。

Explorer RPC call

方法 2: CLI

如果你使用远程服务器,则在同一台机器上运行此命令更加容易(在节点运行时配置了默认的 HTTP RPC 端口时):

curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "author_rotateKeys", "params":[]}' http://localhost:9933

输出将有十六进制编码的 "result" 字段。结果是四个公钥的串联。保存此结果以备后用。

此时你可以重新启动节点, 省略 --unsafe-rpc-expose 标记,因为不再需要它了。

提交 setKeys 交易

你需要通过签名并提交外部信息来告诉链上的 Session key。这就是将验证人与你的 Controller 帐户相关联的工具。转到 Staking > Account Actions[22],然后在你之前生成的绑定账户上单击 "Set Session Key" 。在字段中输入 author_rotateKeys 的输出,然后单击 "Set Session Key"。

提交这个外部信息,你现在就可以开始验证了。

验证

要验证你的节点是否在线并且已同步,跳转至 [Telemetry](https://telemetry.polkadot.io/#list/Polkadot CC1 "Telemetry") 并找到你的节点。请注意,这将显示 Polkadot 网络上的所有节点,这就是为什么选择唯一名字很重要的原因。

如果一切正常,请继续并单击 "Validate" 。

Polkadot UI.

  • Payment preferences - 你可以指定将支付给你的奖励比例。其余的将在提名人之间分配。

单击 "Validate"。

如果转到 "Staking" 选项卡,你将看到当前在网络上运行的活跃验证人的列表。在页面顶部,它显示了可用的验证人插槽的数量,以及已发出信号表示希望成为验证人的节点的数量。你可以转到 “Waiting” 选项卡仔细检查以查看是否在此处列出了你的节点。

staking queue

验证人集在每一个新的 era 进行刷新。在下一个周期开始的时候,如果有可用插槽,并且选择了你的节点加入验证人节点池,你的节点将会成为活跃的验证节点。在此之前,它会保留在 waiting 队列中。如果没有选择你的验证节点成为验证人节点池的一部分,它将一直保留在 waiting 队列中,直到成为验证人。如果未选择特定周期的 validator set ,则无需重新启动。但是,可能需要增加质押 DOT 的数量或为验证人寻找提名人,以便加入验证人节点池。

恭喜! 如果你已按照所有这些步骤进行,并被选为验证人节点池的一员,那你已经成功开始运行 Polkadot 验证节点了!如果你需要帮助,请联系 Polkadot Validator chat[23]

 

FAQ

 

为什么在无对等方时我无法同步链?

zero-peer

确保启用 30333 libp2p 端口。最后 ,在网络上发现其他对等方需要花一点时间。

如何清除我的所有链上数据?

如何清除我的所有链上数据?

./target/release/polkadot purge-chain

VPS 列表

  • OVH[24]
  • Digital Ocean[25]
  • Vultr[26]
  • Linode[27]
  • Contabo[28]
  • Scaleway[29]

 

使用 Docker

 

如果你已经安装了 Docker ,则可以使用它来启动验证节点而无需构建二进制文件。你可以使用一个简单的单行命令来执行此操作:

$ docker run parity/polkadot:latest --validator --name "name on telemetry"

参考链接


[1]Kusama 指南: https://wiki.polkadot.network/docs/en/mirror-maintain-guides-how-to-validate-kusama[2]安全验证节点: https://wiki.polkadot.network/docs/en/maintain-guides-secure-validator[3]安全验证程序设置的参考实现: https://github.com/w3f/polkadot-secure-validator

[4]这里: https://www.youtube.com/watch?v=tTn8P6t7JYc

[5]Polkadot Validator Lounge: https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation

[6]这里: https://wiki.polkadot.network/docs/en/learn-faq#what-are-the-ways-to-find-out-the-minimum-stake-necessary-for-the-validators

[7]Phragmen 算法: https://wiki.polkadot.network/docs/en/learn-phragmen

[8]提名人: https://wiki.polkadot.network/docs/en/maintain-nominator

[9]账户: https://wiki.polkadot.network/docs/en/learn-keys

[10]VPS: https://wiki.polkadot.network/docs/en/maintain-guides-how-to-validate-polkadot#vps-list

[11]这里: https://github.com/paritytech/substrate/pull/5848

[12]Homebrew: https://brew.sh/

[13]NTP: https://en.wikipedia.org/wiki/Network_Time_Protocol

[14]paritytech/polkadot: https://github.com/paritytech/polkadot

[15]release: https://github.com/paritytech/polkadot/releases

[16]PolkadotJS 区块浏览器: https://polkadot.js.org/apps/#/explorer

[17]Staking: https://polkadot.js.org/apps/#/staking/actions

[18]这里: https://wiki.polkadot.network/en/latest/polkadot/learn/staking/#reward-distribution

[19]hasKey: https://polkadot.js.org/api/substrate/rpc.html#haskey-publickey-bytes-keytype-text-bool

[20]hasSessionKeys: https://polkadot.js.org/api/substrate/rpc.html#hassessionkeys-sessionkeys-bytes-bool

[21]Session Key: https://wiki.polkadot.network/en/latest/polkadot/learn/keys/#session-key

[22]Staking > Account Actions: https://polkadot.js.org/apps/#/staking/actions

[23]Polkadot Validator chat: https://matrix.to/#/!NZrbtteFeqYKCUGQtr:matrix.parity.io?via=matrix.parity.io&via=matrix.org&via=web3.foundation

[24]OVH: https://www.ovh.com.au/

[25]Digital Ocean: https://www.digitalocean.com/

[26]Vultr: https://www.vultr.com/

[27]Linode: https://www.linode.com/

[28]Contabo: https://contabo.com/

[29]Scaleway: https://www.scaleway.com/


  • 欢迎学习 Substrate: https://substrate.dev/

  • 关注 Substrate 进展:https://github.com/paritytech/substrate

  • 关注 Polkadot 进展:https://github.com/paritytech/polkadot

原文:https://wiki.polkadot.network/docs/en/maintain-guides-how-to-validate-polkadot

翻译:PolkaWorld

免责声明:
本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

转载须知:转载本文,请携带本文标题+链接:http://www.fx163.com/article/84664.html

觉得不错,分享此文章

网友评论

文明上网理性发言,请遵守新闻评论服务协议

发表评论

文明上网理性发言,请遵守新闻评论服务协议
11条评论
|
选择文件
相关推荐