官方教程https://docs.qtestnet.org/how-to-setup-rootnode/
如何设置 Q 全节点
设置你的服务器
您必须准备好您的服务器/机器才能开始。 一种可能性是使用本地机器,或者您可以使用 AWS 上的云实例。
获取基本配置
克隆存储库
$ git clone https://gitlab.com/q-dev/testnet-public-tools
去 /testnet-fullnode
目录
$ cd testnet-public-tools/testnet-fullnode
该目录包含 docker-compose.yaml
使用 rpc 上的预配置快速启动完整节点的文件,blockchain explorer 使用 .env
(可以从创建 .env.example
).
配置端口
通过复制为节点 rpc api 和区块链资源管理器选择端口(或保留默认值) .env.example
至 .env
并编辑文件。
$ cp .env.example .env
$ nano .env
通过编辑节点 RPC API 和区块链资源管理器选择端口(或保留默认值) .env
文件。
EXT_PORT=<rpc port>
EXPLORER_PORT=<blockchain explorer port>
启动节点
通过执行以下命令启动节点 /testnet-fullnode
目录:
$ docker-compose up -d
验证您的安装
节点启动后,它开始与网络同步。
该设置包括一个本地区块链浏览器。 您可以通过浏览器打开 url 来浏览区块、交易和账户 http://localhost:PORT
在哪里 PORT
是您在上面为 EXPLORER_PORT 选择的数字,例如 http://localhost:8080
您可以使用以下命令检查您的节点实时日志:
$ docker-compose logs -f --tail "100"
寻找其他同行
如果您的客户端无法使用默认配置连接,我们建议您添加一个额外的标志来引用我们的其他对等点之一( $BOOTNODE1_ADDR
, $BOOTNODE2_ADDR
或者 $BOOTNODE3_ADDR
) 内 docker-compose.yaml
文件:
testnet-fullnode:
image: $QCLIENT_IMAGE
entrypoint: ["geth", "--bootnodes=$BOOTNODE1_ADDR,$BOOTNODE2_ADDR,$BOOTNODE3_ADDR", "--datadir=/data", ...]
如何设置 Q Validator 节点
设置你的服务器
您必须准备好您的服务器/机器才能开始。 一种可能性是使用本地机器,或者您可以使用 AWS 上的云实例。 有一个很好的外部教程,介绍如何在 AWS 上开始使用以太坊。 您可以将本 教程 基本参考。
基本配置
克隆存储库
$ git clone https://gitlab.com/q-dev/testnet-public-tools
去 /testnet-validator
目录
$ cd testnet-public-tools/testnet-validator
该目录包含 docker-compose.yaml
用于在 rpc 上使用预配置快速启动验证器节点的文件,区块链浏览器使用 .env
(可以从创建 .env.example
).
为验证器生成密钥对
为了签署区块并获得奖励,验证者需要一个密钥对。 创建一个 /keystore
目录,然后是将用于私钥加密的密码,并将其保存到文本文件中 pwd.txt
在 /keystore
目录。 假设你在 /testnet-validator
目录,发出此命令以生成密钥对:
$ docker-compose run --rm --entrypoint "geth account new --datadir=/data --password=/data/keystore/pwd.txt" testnet-validator-node
此命令的输出应如下所示:
Your new key was generated
Public address of the key: 0xb3FF24F818b0ff6Cc50de951bcB8f86b52287dac
Path of the secret key file: /data/keystore/UTC--2021-01-18T11-36-28.705754426Z--b3ff24f818b0ff6cc50de951bcb8f86b52287dac
- You can share your public address with anyone. Others need it to interact with you.
- You must NEVER share the secret key with anyone! The key controls access to your funds!
- You must BACKUP your key file! Without the key, it's impossible to access account funds!
- You must REMEMBER your password! Without the password, it's impossible to decrypt the key!
这样,一个新的私钥被生成并存储在 /keystore
使用密码加密的目录来自 pwd.txt
文件。 在我们的例子中, 0xb3FF24F818b0ff6Cc50de951bcB8f86b52287DAc ( 你会有不同的值 )是新生成的私钥对应的地址。
上生成密钥对和相应文件 页面 并将其保存到 /keystore
手动目录。 你也可以使用 create-geth-private-key.js
脚本中 /js-tools
文件夹。
无论您选择提供自己的虚键还是使用上述命令创建密钥对,请确保目录 /keystore
包含以下文件:
testnet-validator
| ...
| ...
└ keystore
| UTC--2021-01-18T11-36-28.705754426Z--b3ff24f818b0ff6cc50de951bcb8f86b52287dac
| pwd.txt
注意: 按照我们的示例,pwd.txt 包含明文形式的加密文件“UTC–2021-01-18T11-36-28.705754426Z–b3ff24f818b0ff6cc50de951bcb8f86b52287dac”的密码。
如果以后要修改密码,需要先停止节点。
$ docker-compose down
然后开始密码重置程序
$ docker-compose run testnet-validator-node --datadir /data account update 0xb3ff24f818b0ff6cc50de951bcb8f86b52287dac
注意: 您需要删除地址 0xb3ff24f818b0ff6cc50de951bcb8f86b52287dac 并添加您的帐户地址。
获取 Q 代币
为了成为验证者,您需要在验证者合约中投入一些股份,因此您需要 Q 代币。 获得一些 Q。 水龙头 您 查看 水龙头文档 以获取更多信息。 中查找您的地址来验证令牌是否已发送 Block Explorer 。
配置设置
复制 .env.example
至 .env
并编辑此文件 /testnet-validator
目录。
$ cp .env.example .env
$ nano .env
将步骤 3 中不带前导 0x 的地址放入 ADDRESS
,你的公网IP地址(请确保你的机器可以通过相应的IP访问)到 IP
(这是被其他网络参与者发现所必需的)并且可以选择为 p2p 协议选择一个端口(或者只保留默认值)。 所结果的 .env
文件应如下所示:
# docker image for q client
QCLIENT_IMAGE=qblockchain/q-client:1.2.2
# your q address here (without leading 0x)
ADDRESS=b3FF24F818b0ff6Cc50de951bcB8f86b52287DAc
# your public IP address here
IP=193.19.228.94
# the port you want to use for p2p communication (default is 30313)
EXT_PORT=30313
# extra bootnode you want to use
BOOTNODE1_ADDR=enode://c610793186e4f719c1ace0983459c6ec7984d676e4a323681a1cbc8a67f506d1eccc4e164e53c2929019ed0e5cfc1bc800662d6fb47c36e978ab94c417031ac8@79.125.97.227:30304
BOOTNODE2_ADDR=enode://8eff01a7e5a66c5630cbd22149e069bbf8a8a22370cef61b232179e21ba8c7b74d40e8ee5aa62c54d145f7fc671b851e5ccbfe124fce75944cf1b06e29c55c80@79.125.97.227:30305
BOOTNODE3_ADDR=enode://7a8ade64b79961a7752daedc4104ca4b79f1a67a10ea5c9721e7115d820dbe7599fe9e03c9c315081ccf6a2afb0b6652ee4965e38f066fe5bf129abd6d26df58@79.125.97.227:30306
接下来,您需要编辑 config.json
因为质押需要此文件。 将您上面的地址输入地址字段和密码 /keystore/pwd.txt
进入密码字段。 结果 config.json
应该类似于这样:
{
"address": "b3FF24F818b0ff6Cc50de951bcB8f86b52287DAc",
"password": "supersecurepassword",
"keystoreDirectory": "/data",
"rpc": "https://rpc.qtestnet.org"
}
在验证者合约中投入股份
如前所述,您需要向验证者合约投入股份才能成为验证者。
找到的 dApp“您的总部” https://hq.qtestnet.org 。 最终,你需要 Join Validator Ranking
获得奖励。 相应的功能位于 Consensus Services -> Validator Staking
在“管理余额”框中。 如果您看不到菜单项 Consensus Services
,你没有运行 dApp UI advanced mode
. 去 Settings
并激活它。
将您的验证器添加到 https://stats.qtestnet.org
如果你想让你的验证器向 网络统计 ,你可以在文件中的节点入口点添加一个额外的标志。 /testnet-validator/docker-compose.yaml
, 它应该是这样的:
testnet-validator-node:
image: $QCLIENT_IMAGE
entrypoint: ["geth", "--ethstats=<Your_Validator_Name>:<Testnet_access_key>@stats.qtestnet.org", "--datadir=/data", ...]
<Your_Validator_Name>
可以任意选择。 它将显示在统计信息中。 如果您想公开您的 ID,这可能类似于“OurCoolCompany – 不要相信,请验证”。 您可以使用特殊字符、表情符号和空格。 如果您希望保持匿名,我们将不胜感激,包括您的验证器 Q 地址的开头,这样您的客户和您的地址之间就有一个链接。
为了找出 <Testnet_access_key>
请加入 Q Discord 服务器 中找到统计密钥 🔑│testnet-key 频道 。
启动验证节点
现在使用 docker-compose 文件启动你的验证器节点 /testnet-validator
目录:
$ docker-compose up -d
注意:使用以下命令检查我们的节点实时日志:
$ docker-compose logs -f --tail "100"
寻找其他同行
如果您的客户端无法使用默认配置连接,我们建议您添加一个额外的标志来引用我们的其他对等点之一( $BOOTNODE1_ADDR
, $BOOTNODE2_ADDR
或者 $BOOTNODE3_ADDR
) 内 docker-compose.yaml
文件:
testnet-validator-node:
image: $QCLIENT_IMAGE
entrypoint: ["geth", "--bootnodes=$BOOTNODE1_ADDR,$BOOTNODE2_ADDR,$BOOTNODE3_ADDR", "--datadir=/data", ...]
验证节点正在生产块
为了开始验证,您必须等待新的纪元(即验证周期)。 如果之前一切正常并且承诺的权益足以进入验证者候选名单,您的验证者节点将在下一个验证周期开始生产区块。 请注意,启动时您可能会在 q-client 日志中看到很多警告:
WARN [01-18|13:12:00.431] Block sealing failed err="unauthorized signer"
这实际上是可以的,因为节点需要一些时间来与 Q 网络的对等点同步。 在达到完全同步之前,您的节点可能已经使用您是唯一验证者的最新快照开始创建区块。 对等点发现成功后,警告将消失。
注意: 所有验证器都需要根据宪法运行 omnibridge-oracle。 请 在此处 有关如何执行此操作的教程。
退出验证人排名
如果您想退出验证者排名,您必须 Announce Withdrawal
内 Consensus Services -> Validator Staking
100% 的自抵押 Q 代币。 这样做之后,您将立即被排除在排名之外,尽管您的节点可能仍会验证块,直到下一个验证周期开始(最多 8 分钟内)。
公布的金额将在一定时间内存入托管余额(见章程参数 constitution.valWithdrawP
) 直至完全取出。 通过退还股份或减少宣布的提款金额,可以随时重新加入小组。
注意: 如上所述,可以暂时退出排名。 重新进入,需要宣布退出
0
Q 会覆盖您的初始公告并将您的自有股份恢复到 100%。 你需要Join Validator Ranking
再次完成重新进入程序。 例如,如果您计划对节点进行维护停机,则临时退出(或暂停)可能会有用。