NEAR Shardnet测试网验证节点任务

NEAR测试网跑验证人节点的任务,总共9个任务, 时间从7/13 到9/7。完成任务有的获得UNP奖励,有的获得DNP奖励。UNP在测试网结束的时候,可以1:1换取主网的NEAR DNP在测试网结束的时候,会按1:500 NEAR的比例,获得项目方质押,为期1年。

接下来这里介绍如何创建节点并质押。

1. 创建钱包

第一件事是创建一个 Shardnet 钱包。https://wallet.shardnet.near.org。点击“创建帐户”按钮来创建一个新帐户。

post image

按提示入帐户 ID,然后选择备份方法。 按必币圈通行规则选择助记词,然后会自动生成 12 个单词。一定要记好助记词,最好不要复制粘贴,我一直都是用笔记在一个小本子上,保证不触网。

post image

注册成功之后,就会自动进入钱包的主界面,并有50个测试币。

2. 创建VPS

我在e哥ericet的推荐下用的CONTABO,首先注册账户,登录后在左侧New Order菜单选择VPS。

post image

然后选择推荐的6 vCPU VPS并选上600G储存空间。

post image
post image

后面付款信息等等全部填好之后就可以坐等邮件发密码过来,然后用putty等就可以登录了。

post image

为了保险起见,运行官方提供的命令检查一下VPS是否满足要求。如果显示了“Supported”那就没问题了。

lscpu | grep -P ‘(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )’ > /dev/null \&& echo “Supported” \|| echo “Not supported”

post image

3. 设置NEAR客户端

接下来需要安装 Ubuntu 的所有可用补丁和更新。

sudo apt update && sudo apt upgrade -y

然后安装 NEAR需要的各种库。

sudo apt install -y git binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev cmake gcc g++ python docker.io protobuf-compiler libssl-dev pkg-config clang llvm cargo

如果安装 python 或 docker.io 时遇到问题,尝试以下命令:

sudo apt install python3sudo apt install docker-ce

安装 Python pip:

sudo apt install python3-pip

设置配置:

USER_BASE_BIN=$(python3 -m site — user-base)/bin导出 PATH=”$USER_BASE_BIN:$PATH”

安装build-essential

sudo apt install clang build-essential make

安装 Rust & Cargo

curl — proto ‘=https’ — tlsv1.2 -sSf https://sh.rustup.rs | sh

设置环境

source $HOME/.cargo/env

接下来进入正题,Github 中克隆NEAR的库和必须的commit

*git clone https://github.com/near/nearcore*cd nearcoregit fetch origin — tags

git checkout

通过以下命令编译 Nearcore 二进制文件,这需要几分钟。

cargo build -p neard — release — features shardnet

然后创建初始工作目录。

./target/release/neard — home ~/.near init — chain-id shardnet — download-genesis

创建后可以看到 `.near` 文件夹,里面有以下文件。

config.json :响应节点如何工作的配置参数。 config.json 包含节点在网络上运行所需的信息、如何与对等方通信以及如何达成共识。虽然有些选项是可配置的。一般来说,验证节点使用提供的默认 config.json就可以。

genesis.json :包含网络在创世时开始的所有数据的文件。这包含初始帐户、合同、访问密钥和其他代表区块链初始状态的记录。 genesis.json 文件是某个时间点的网络状态的快照,含有联系人帐户、余额、活跃验证节点和有关网络的信息。

node_key.json :包含节点的公钥和私钥的文件。还包括一个可选的 account_id 参数,它是运行验证器节点所必需的。

接下来我们来修改 config.json 。

*rm ~/.near/config.jsonwget -O ~/.near/config.json *https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json

现在是时候运行节点了。

cd nearcore./target/release/neard — home ~/.near run

区块同步完成之后,上半部分就算大功告成了。

post image

4. 创建节点

接下来创建节点,并部署质押池合约以从委托人那接收 NEAR 代币。首先我们需要登录NEAR钱包

near login

如果连上的是测试网(testnet)那么需要切换为shardnet

echo ‘export NEAR_ENV=shardnet’ >> ~/.bashrcsource .bashrc

VPS上输入命令后浏览器无法自动打开。在这种情况下,复制 URL 并将其粘贴到自己电脑上打开浏览器。(putty用鼠标选上就复制了,不用ctrl+C,那只会打断当前进程)

post image

在浏览器中链接刚才注册的钱包。

post image

然后回到VPS输入钱包id。如果看到消息“Logged in as {钱包id}.shardnet.near with public key {公钥 } successfully!’,则表示成功登录。

接下来,需要创建一个验证节点密钥。

near generate-key cp ~/.near-credentials/shardnet/.json ~/.near/validator_key.json pool_id当中填入刚才的钱包id 移动到 `~/.near/` 并编辑 validator_key.json 文件。 将“account_id”的值更改为“.factory.shardnet.near”。将“private_key”更改为“secret_key”,确保格式和下面的例子一样 {“account_id”: “xx.factory.shardnet.near”,“public_key”: “ed25519:HeaBJ3xLgvZacQWmEctTeUqyfSU4SDEnEwckWxd92W2G”,“secret_key”: “ed25519:****”} 接下来就可以启动节点了。 target/release/neard run 同时需要设置在后台运行的系统服务来保证near时刻在线。 sudo vi /etc/systemd/system/neard.service [Unit]Description=NEARd Daemon Service [Service]Type=simpleUser=#Group=nearWorkingDirectory=/home//.nearExecStart=/home//nearcore/target/release/neard runRestart=on-failureRestartSec=30KillSignal=SIGINTTimeoutStopSec=45KillMode=mixed [Install]WantedBy=multi-user.target 这里需要注意把改成自己的路径 然后运行 sudo systemctl enable neardsudo systemctl start neard 5. 部署质押池合约 首先需要调用质押池工厂,创建具有指定名称的新质押池,并将其部署到指定的钱包Id。 near call factory.shardnet.near create_staking_pool ‘{“staking_pool_id”: “”, “owner_id”: “”, “stake_public_key”: “”, “reward_fee_fraction”: {“numerator”: 5, “denominator”: 100}, “code_hash”:”DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ”}’ — accountId=”” — amount=30 — gas=300000000000000 在上面的示例中,需要替换: Pool Name:质押池名字,工厂自动将其名称添加到此参数中,创建 {pool_name}.{staking_pool_factory} 示例:如果质押池名字是stakewars 将创建:stakewars.factory.shardnet.nearaccountId:将管理质押池的 SHARDNET 帐户, 钱包ID(即,stakewares.shardnet.near)。公钥:validator_key.json 文件中的公钥。5:池将收取的费用(在这种情况下,分子5 分母100指代的是费用的 5%)。accountId:部署和签署挂载 tx 的 SHARDNET 帐户。通常与钱包 ID 相同。确保至少有 30 个 NEAR 可用,这是存储所需的最低要求。 创建成功之后就可以在 https://explorer.shardnet.near.org/nodes/validators 检查创建的质押池。 最开始节点仅仅是提案状态, 需要质押比席位价格(Seat Price)更多的 NEAR 代币才能处于活跃状态。 质押命令如下。 near call .factory.shardnet.near deposit_and_stake — amount — accountId .shardnet.near — gas=300000000000000 当质押交易完成后,还需要进行 Contract Ping。 near call .factory.shardnet.near ping ‘{}’ — accountId .shardnet.near — gas=300000000000000 接下来填表就可以了。 https://docs.google.com/forms/d/e/1FAIpQLScp9JEtpk1Fe2P9XMaS9Gl6kl9gcGVEp3A5vPdEgxkHx3ABjg/viewform