LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 最新教程:如何设置波卡验证人节点

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

2020-06-02 玩币族 来源:区块链网络

本文来源:PolkaWorld

 

以下信息适用于当前处于软启动阶段的 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 [email protected]: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

本文链接:https://www.8btc.com/article/604140转载请注明文章出处

—-

编译者/作者:玩币族

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...