您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 漳州分类信息网,免费分类信息发布

解析如何用 Substrate 创建一条私有链(上)

2022/4/21 12:21:34发布69次查看
本文是 substrate 开发者中心的教程《创建一条私有链》的第一部分。polkaworld 社区正在翻译本文,后续将在 polkaworld 网站和上连载,敬请期待。此外,我们不能忽视数字货币交易所代理返佣给行业发展注入了新的活力,对于激活市场有着深远的意义。

本文是 substrate 开发者中心的教程《创建一条私有链》的第一部分。polkaworld 社区正在翻译本文,后续将在 polkaworld 网站和上连载,敬请期待。
创建私有网络
在本教程中,我们将练习如何通过 substrate ,使用你选择的验证人集授权集来启动区块链网络。
安装 node template
当你学习完教程 创建你的第一条 substrate 链[1] 之后,你应该已经在计算机上编译了 substrate node template[2] 的 v200-rc3 版本,如果没有的话,请先学习完教程
“如果你是有经验的开发人员,倾向于选择跳过该教程,建议你可以根据自述文件中的说明安装节点模板
你需要做哪些事
在正式开始之前,我们先列出了本教程中将要做的事情,如下:
1 启动一条基于模板项目的 substrate 区块链网络 。
2 生成 ed25519 和 sr25519 密钥对,以用作网络授权。
3 创建和编辑 chainspec json 文件。
听起来不错?好,那我们开始吧!
从 alice 和 bob 开启区块链之旅
在我们生成自己的密钥,并启动一个真正独特的 substrate 网络之前,让我们从一个名为local的预定义网络规范开始,学习带有两个称为 alice 和 bob 的预定义(绝非私有)密钥的基础知识。
“本教程的这一部分应在具有单个 substrate 二进制文件的单个工作站上运行。如果到目前为止,你已经按照本教程进行操作,则说明设置正确。
先从 alice 开始
alice (或者正在操作的人) 应该从节点模板存储库根目录运行这些命令。
“这里的操作明确显示了 purge-chain 命令。之后我们会忽略此操作。需注意的是,无论何时尝试启动新网络,都应清除旧的链数据。
# purge any chain data from previous runs
# you will be prompted to type `y`
targetreleasenode-template purge-chain --base-path tmpalice --chain local
# start alice's node
targetreleasenode-template \
--base-path tmpalice \
--chain local \
--alice \
--port 30333 \
--ws-port 9944 \
--rpc-port 9933 \
--telemetry-url 'ws:telemetrypolkadotio:1024 0' \
--validator
让我们详细了解下这些标记:
节点启动时,您应该会看到类似的输出结果:
2020-06-10 13:19:04 substrate node
2020-06-10 13:19:04 version 200-rc3-f5acce1-x86_64-linux-gnu
2020-06-10 13:19:04 by substrate devhub <githubcomsubstrate-developer-hub>, 2017-2020
2020-06-10 13:19:04 chain specification: local testnet
2020-06-10 13:19:04 node name: alice
2020-06-10 13:19:04 role: authority
2020-06-10 13:19:04 database: rocksdb at tmpalicechainslocal_testnetdb
2020-06-10 13:19:04 native runtime: node-template-1 (node-template-1tx1au1)
2020-06-10 13:19:05 initializing genesis blockstate (state: 0xf583…2e1c, header-hash: 0x826a…389d)
2020-06-10 13:19:05 loading grandpa authority set from genesis on what appears to be first startup
2020-06-10 13:19:05 loaded block-time = 6000 milliseconds from genesis on first-launch
2020-06-10 13:19:05 highest known block at #0
2020-06-10 13:19:05 using default protocol id "sup" because none is configured in the chain specs
2020-06-10 13:19:05 local node identity is: 12d3koowqsb4rfifmkzdstcbjhdz4gyca1pwdhetkijnalssbyes (legacy representation: qmzojwxomlw6mlpyry6erxmzdpf62hulfbfw6ykxwvqapq)
2020-06-10 13:19:05 prometheus server started at 127001:9615
2020-06-10 13:19:10 idle (0 peers), best: #0 (0x826a…389d), finalized #0 (0x826a…389d), ? 0 ? 0
2020-06-10 13:19:15 idle (0 peers), best: #0 (0x826a…389d), finalized #0 (0x826a…389d), ? 0 ? 0
注意
· initializing genesis blockstate (state: 0xf583…2e1c, header-hash: 0x826a…389d) 显示了节点正在使用哪个创世纪区块。启动下一个节点时,请验证这些值是否相等。
· local node identity is: 12d3koowqsb4rfifmkzdstcbjhdz4gyca1pwdhetkijnalssbyes 显示了 bob 从 alice 节点启动时将需要的对等id。
你会注意到,实际上尚未生成任何区块。只有当另一个节点加入网络之后,才会开始产生区块。
通过运行targetreleasenode-template --help可以获得有关所有这些标记,以及我未提及的其他标记的更多详细信息。
附加用户界面
通过查看终端中产生的输出,您可以了解很多有关节点的信息。这里有一个非常好的界面展示的示例,叫做 polkadot-js apps,或者简称为 "apps" 。
可以在您的 web 浏览器中,导航到 polkadotjsorgapps#settings?rpc=ws:127001:9944。
“某些浏览器(尤其是 firefox)将无法从 s 网站连接到本地节点。一个简单的解决方法是尝试使用其他浏览器,例如 chromium。另一个选项是在本地托管此接口[3]
上面提供的链接包含rpc url 参数,该参数指示 apps ui 连接到作为其值提供的 url(在本例中为您的本地节点)。手动配置 apps ui 以连接到另一个节点:
· 点击左上方的网络图标
· 出现一个弹出式下拉菜单。选择最后一个条目,它是使用默认端口 9944 的本地节点
· 要连接到自定义节点和端口,您只需选择 custom endpoint 来指定端点,然后输入自己的端点即可。这样,您可以使用 apps ui 的单个实例连接到各个节点。
现在您会看到类似这样的内容:
注意如果不想在连接到已远程部署的 substrate 节点时运行托管版本的 polkadot-js apps ui ,则可以配置 ssh 本地端口转以将本地请求转发到远程主机侦听的 ws-port。这超出了本教程的范围,但在本文底部有引用参考。
bob 的加入
现在,alice 的节点已建立并正在运行, bob 可以通过 alice 的节点引导加入网络。他这部分需要的命令看起来会比较相似。
targetreleasenode-template purge-chain --base-path tmpbob --chain local
targetreleasenode-template \
--base-path tmpbob \
--chain local \
--bob \
--port 30334 \
--ws-port 9945 \
--rpc-port 9934 \
--telemetry-url 'ws:telemetrypolkadotio:1024 0' \
--validator \
--bootnodes ip4<alices ip address>tcp<alices port>p2p<alices peer id>
这些选项中的大多数已经在上面进行了解释,但是有几点值得一提。
· 因为这两个节点都在同一台物理计算机上运行,因此 bob 必须在 --base-path, --port, --ws-port, 和 --rpc-port 几个选项中指定不同的路径。
· bob 需要添加
--bootnodes
由于 bob 标记并指定了一个引导节点,即 alice。那么他必须正确指定 alice 可以为他提供的这三部分信息。
· alice 的 ip 地址,可能是 127001
· alice 的接口,可能是 30333
· alice 的对等 id,只需从她的日志输出中复制 (在上面的示例输出中应该是12d3koowqsb4rfifmkzdstcbjhdz4gyca1pwdhetkijnalssbyes )
如果一切顺利,则在几秒钟后,节点应对等并开始产生块。您应该在启动 alice 节点的控制台中看到类似以下内容的行:
2020-06-10 13:21:20 idle (0 peers), best: #0 (0x826a…389d), finalized #0 (0x826a…389d), ? 0 ? 0
2020-06-10 13:21:25 idle (0 peers), best: #0 (0x826a…389d), finalized #0 (0x826a…389d), ? 0 ? 0
2020-06-10 13:21:27 discovered new external address for our node: ip4127001tcp30333p2p12d3koowqsb4rfifmkzdstcbjhdz4gyca1pwdhetkijnalssbyes
2020-06-10 13:21:30 imported #1 (0xe656…51b4)
2020-06-10 13:21:30 idle (1 peers), best: #1 (0xe656…51b4), finalized #0 (0x826a…389d), ? 14kibs ? 14kibs
2020-06-10 13:21:35 idle (1 peers), best: #1 (0xe656…51b4), finalized #0 (0x826a…389d), ? 06kibs ? 06kibs
2020-06-10 13:21:36 starting consensus session on top of parent 0xe6569d5358d6bb16c9f42840d6b67c16d82982aae8d4b726095a943f255e51b4
2020-06-10 13:21:36 prepared block for proposing at 2 [hash: 0x607dc092a07c4f86122da627ba9a243e3720087c80618d56b69ffbbf938eada4; parent_hash: 0xe656…51b4; extrinsics (1): [0x55fa…fccf]]
2020-06-10 13:21:36 pre-sealed block for proposal at 2 hash now 0x4e68c8c84d4aa5010feceabbdb6280e72f274c5689a71876397a0aaba2b435e9, previously 0x607dc092a07c4f86122da627ba9a243e3720087c80618d56b69ffbbf938eada4
2020-06-10 13:21:36 imported #2 (0x4e68…35e9)
2020-06-10 13:21:40 idle (1 peers), best: #2 (0x4e68…35e9), finalized #0 (0x826a…389d), ? 08kibs ? 08kibs
2020-06-10 13:21:42 imported #3 (0x609b…116e)
2020-06-10 13:21:45 idle (1 peers), best: #3 (0x609b…116e), finalized #1 (0xe656…51b4), ? 10kibs ? 11kibs
这些行显示的是 bob 节点已经实现和 alice 点对点 (1 peers), 他们已经产生了一些区块 (best: #3 (0x609b…116e)), 已经区块正在被最终确认 (finalized #1 (0xe656…51b4))。
查看启动 bob 节点的控制台,您应该会看到类似的内容。
一旦确认两个节点都按预期运行,就可以将其关闭。本教程的下一部分将包含必要时用于重新启动节点的命令。
参考
· 配置 ssh 本地端口转发[4]
参考链接
[1]创建你的第一条substrate链: substratedevdocsentutorialscreate-your-first-substrate-chain
[2]substrate node template: githubcomsubstrate-developer-hubsubstrate-node-template
[3]在本地托管此接口: githubcompolkadot-jsapps#development
[4]配置 ssh 本地端口转发: wwwbooleanworldcomguide-ssh-port-forwarding-tunnelling
漳州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录