火星链 火星链
Ctrl+D收藏火星链

ALI:技术 | Substrate 2.0 搭建私有区块链网络

作者:

时间:1900/1/1 0:00:00

相信很多朋友已经在使用Substrate2.0构建自己的runtime模块,但官方Substrate开发者中心还没有2.0版本的教程。

在本文中,我整理总结了如何使用Substrate2.0启动一个区块链网络,并使用你选择的验证者/管理者集合。

你需要:

一个Linux或Mac操作系统下的命令行客户端

Git

你将学习到:

从源代码编译一个Substrate节点

为区块链网络中的验证人生成ed25519密钥对

创建和编辑chainspecjson文件

编译所需工具

Substrate是一个开源区块链开发框架,用来构建你自己的区块链,以及可以用来开发各种各样的去中心化应用程序。

目前Substrate没有提供二进制安装包,因此必须从源代码中编译它,这可能是一个耗时的过程。

Substrate仓库会经常更新,请确保参加此网络的每个节点都有同样版本的Substrate以保证成功。在实践中,类似但不完全相同的版本通常可以正常工作,但是依靠这个通常会让人感到沮丧。

我们将使用master分支的这个commit来获取更多的一致性。

首次操作

首先,我们将通过gitclone下载Substrate代码。目前还没有v2.0的分支。

gitclonehttps://github.com/paritytech/substrate

cdsubstrate

仓库中包含一个名为subkey的工具,我们需要用它来生成和检查密钥对。让我们先编译它。--force选项意味着我们将移除之前安装的版本,重新安装此版本。

cargoinstall--force--pathsubkeysubkey

现在让我们编译我们将要运行的区块链节点。由于Substrate是一个框架,使用它编写自定义的runtime代码。之前写过文章详细涵盖了这方面的内容。

五部门:利用区块链等现代信息技术 推进银行函证数字化转型工作:1月30日消息,财政部发布《关于开展银行函证试点工作的通知》,财政部、人民银行、国资委、银保监会、证监会联合在部分上市公司、会计师事务所和银行业金融机构开展银行函证试点工作。《通知》指出,试点会计师事务所、试点银行应分别整合内部函证申请和回函业务,集中开展银行函证工作,保障函证质量,防范舞弊风险。利用区块链等现代信息技术,推进函证数字化转型工作,加快银行函证数字平台建设,提升函证工作效率效果。(财联社)[2022/1/30 9:22:21]

Substrate仓库本身已经有两个随时可以运行的节点环境。

第一个在node目录,它包含了许多功能,可以构建实际可运行的区块链。事实上,它看起来和Polkadot类似,它也是基于Substrate构建的。

第二个是在node-template目录下的最小化runtime代码。我们将在本文中使用节点模板node-template,因为它比较简单,通常是编写自定义runtime的起点。

#切换到node-template目录

cdnode-template

#确保你的rusttoolchain是最新的

./scripts/init.sh

#编译本地节点版本

cargobuild

下次更新

更新或改变Substrate版本时,这个过程类似,但构建速度更快。

cdnode-template

./scripts/init.sh

cargobuild

提示:如果想要node-template安装在可执行文件路径下,你可以在上一步使用cargoinstall代替cargobuild。

Alice和Bob启动区块链

在我们生成自己的密钥并启动一个真正特定的Substrate网络之前,让我们了解下基础知识,首先使用一个预先定义的网络规范,称为local,使用两个预先定义的密钥,称为Alice和Bob。

动态 | 五粮液集团引入区块链等技术 建立市场化供应链体系:据新华社消息,近日,“川港澳合作周”在香港拉开帷幕,五粮液集团全程参与活动。五粮液正以全球视野引入移动互联网、物联网、区块链等技术,充分利用新业态下云计算、大数据和互联网等优势开展质量管理,建立五粮液品牌联通消费者最短的市场化供应链体系。[2018/11/8]

Alice首先启动

Alice应该从Substrate仓库的根目录运行此命令。

#如果你仍然在node-template/目录

cd..

#启动节点

./target/debug/node-template

--base-path/tmp/alice

--chain=local

--alice

我们了解一下这些命令选项的含义:

--base-path指定一个目录,Substrate用它来存储与此链有关的所有数据。如果目录不存在,将创建它。如果已经存在其它区块链的数据,启动将会报错。这种情况下,要么清除目录,要么选择不同的目录。

--chain=local指定要使用的链规范。有几个预先准备的选项,包括local,dev等,但我们要指定自己的chainspec文件。

--alice指定我们正在使用预定义的Alice密钥作为此节点的验证者。这里是和v1.0的不同之处,v2.0使用这个快捷方式替代v1.0中--nameAlice--validator,同时Alice的会话密钥会被添加到keystore文件中。

chainspec文件和keystore文件,这两个我们将在稍后阶段说明。

当节点启动后,你应该看到类似下面的输出:

2019-09-0407:25:11SubstrateNode

2019-09-0407:25:11version2.0.0-d8589ad-x86_64-macos

2019-09-0407:25:11byAnonymous,2017,2018

动态 | 区块链是个好技术 但被“炒币”耽误了:据每经网报道,区块链从业者王飞飞表示:区块链是个充满想象力的技术,但被‘炒币’给耽误了。交易所和项目方存在潜在利益,有的交易所为了收取项目方佣金也会“睁一只眼闭一只眼”上币。在相关部门加强监管后,依然有人换个“马甲”,以海外注册的方式搅乱币圈和链圈的生态。此外,还存在虚拟货币交易所目前甄别虚拟货币项目的方法尚未成熟,虚拟货币用户进入“存量博弈”等问题。[2018/10/10]

2019-09-0407:25:11Chainspecification:LocalTestnet

2019-09-0407:25:11Nodename:Alice

2019-09-0407:25:11Roles:AUTHORITY

2019-09-0407:25:11InitializingGenesisblock/state(state:0x2b2e…9b06,header-hash:0x7d3d…f9e9)

2019-09-0407:25:11LoadingGRANDPAauthoritysetfromgenesisonwhatappearstobefirststartup.

2019-09-0407:25:11Loadedblock-time=BabeConfiguration{slot_duration:10000,c:(1,4),median_required_blocks:1000}secondsfromgenesisonfirst-launch

2019-09-0407:25:11CreatingemptyBABEepochchangesonwhatappearstobefirststartup.

2019-09-0407:25:11Highestknownblockat#0

2019-09-0407:25:11UsingdefaultprotocolID"sup"becausenoneisconfiguredinthechainspecs

2019-09-0407:25:11Localnodeidentityis:QmbqmYrUEMcPFqnKjBAjZXgZBgpFs9Xsp5zhpbPXtENngE

声音 | 罗斯·莱克:中国可以更好地结合区块链等技术 推出新产品新服务:据中国金融新闻网报道,国际货币基金组织副法务总监、FINTECH工作组联合负责人罗斯·莱克称,从IMF的角度来看,金融科技的含义十分广泛,不只限于各项技术,而是覆盖了互联网、云计算、分布式账簿计划、区块链及加密货币等系统,也包括人工智能、大数据、生物统计数据、API及移动通信等科技。“这些技术在中国都得到了很好的体现。中国可以将以上技术更好地结合,推出激动人心的新产品与新服务。”[2018/9/4]

2019-09-0407:25:16Idle(0peers),best:#0(0x7d3d…f9e9),finalized#0(0x7d3d…f9e9),?0?0

你可以通过节点在命令行中产生的输出了解很多信息。需要注意的几行:

Nodename:Alice显示指定的节点名称,这里是预定义的Alice

Localnodeidentityis:QmbqmYrUEMcPFqnKjBAjZXgZBgpFs9Xsp5zhpbPXtENngE节点ID,Bob节点启动时需要依赖此ID

还有一些选项,大家可以通过./target/debug/node-template--help去了解,比如:

--port30333指定节点将监听的p2p端口。默认是30333,如果Bob的节点在同一物理机上运行,就需要明确指定一个不同的端口。

--ws-external默认情况下,节点监听9944端口上的RPC连接,只有本地主机的连接会被接受,但你可以通过指定它改变此行为。你也可以通过指定--ws-port12345更改端口。

--rpc-cors指定允许访问HTTP和WSRPC服务器的浏览器来源Origins。它是以逗号分隔的来源列表。all值将禁用来源验证。默认是允许localhost,https://polkadot.js.org和https://substrate-ui.parity.io这些来源。此处有个坑!在--dev模式下运行时,默认设置为允许所有来源。

连接UI

有一个很好的图形用户界面,称为PolkadotJsAppsUI,可以用它连接你的节点。之前写过文章详细涵盖了这方面的内容。

声音 | 河北副省长陈刚:加快运用区块链技术 打造高质量发展样板:8月5日消息,省委常委、副省长,雄安新区党工委书记、管委会主任陈刚强调:“要加快区块链、大数据等技术研究运用,把制度建设和信息技术相融合,不断扎紧监管制度的笼子,积极探索廉洁雄安建设的新路径。”[2018/8/5]

点击链接会跳转到该UI的官方页面,非常方便,但与你正在运行的Substrate版本相比可能已经过时。在UI页面过期的情况下,你可以通过从github获取代码在本地运行该应用。一般来说,其仓库中的指令将是你的最佳指南,但大致过程应该是这样的。

#抓取代码

gitclonehttps://github.com/polkadot-js/apps

cdapps

#安装依赖

yarn

#启动项目

yarnrunstart

你会注意到,在命令行和用户界面中,还没有产生任何块。一旦另一个验证者加入网络,将开始生成区块。

Bob加入

现在,Alice节点已经启动并运行,Bob可以通过引导节点来加入网络。他的启动命令类似下面:

./target/debug/node-template

--base-path/tmp/bob

--chain=local

--bob

--bootnodes/ip4//tcp//p2p/

上面已经解释了大多数这些选项,但有几个要注意的地方:

如果这两个节点在同一物理机器上运行,Bob必须指定一个不同的路径--base-path和端口--port。

--bootnodes选项,Bob必须正确指定以下三项:

Alice的IP地址,格式192.168.1.1

Alice的端口,可能为30333

Alice节点ID,从上面日志输出中复制(QmbqmYrUEMcPFqnKjBAjZXgZBgpFs9Xsp5zhpbPXtENngE)

如果所有进展顺利,在几秒之后,节点应该相互连接,开始生成区块。你应该看到类似下面的内容:

Idle(1peers),best:#1(0x9f1b…9b57),finalized#1(0x28be…45e5),?1.7kiB/s?1.4kiB/s

此行显示,Bob有对等节点Alice(1peers),它们产生了一个区块(best:#1(0x9f1b…9b57)),并且区块已被最终确定/敲定(finalized#1(0x28be…45e5))。

这也是v2.0和v1.0的区别之处。v2.0的节点模板中增加引用了Grandpa模块来做最终一致性,而在v1.0的网络中,只有创世区块会被最终敲定,v1.0的节点模板中没有最终一致性模块。

生成密钥

现在我们知道了基本原理和命令行选项,是时候生成我们自己的密钥而不是使用众所周知的Alice和Bob密钥。

每个想要加入这个区块链网络的人,都可以使用我们之前提到的subkey工具,或PolkadotJSAppsUI生成自己的密钥。在本文中,我们将使用RPC调用。该小节是本文更有价值的一部分内容。

生成key

对于大多数想要运行验证节点的用户,可以使用author_rotateKeys这个RPC调用。该RPC调用将生成会话密钥sessionkey,并返回其公钥publickey。命令如下:

curl-H'Content-Type:application/json'--data'{“jsonrpc”:“2.0”,“method”:“author_rotateKeys”,“id”:1}'localhost:9933

导入keystore

如果会话密钥需要匹配固定种子seed,则可以按类型单独设置它们。RPC调用需要密钥种子和密钥类型。此处列出了Substrate中默认支持的类型。命令如下:

curl-H'Content-Type:application/json'--data'{"jsonrpc":"2.0","method":"author_insertKey","params":,"id":1}'localhost:9933

KEY_TYPE-需要用4个字符的类型标识符替换,比如:ed25

SEED-是密钥的种子seed

PUBLIC-给定密钥的公钥

启动你的私有区块链

上一次,我们使用--chain=local这是一个预定义的chainspec,它将Alice和Bob指定为验证人以及许多其他的默认值。本节将介绍如何创建自己的chainspec。

创建chainspec

我们不是从头开始完全编写chainpec,而是对我们之前使用的那个进行一些修改。

首先,我们需要将chainspec导出到json文件。

./target/debug/node-templatebuild-spec--chain=local>customSpec.json

我们刚创建的文件包含几个字段,人们可以通过探索它们来学习很多东西。目前,最长的字段是一个十六进制编码的数据,它是我们runtime的wasm的二进制。

我们感兴趣的部分,是像这样的验证人地址:

"consensus":{

"authorities":[

"5FA9nQDVg267DEd8m1ZypXLBnvN7SFxYwV7ndqSYGiN9TTpu",

"5GoNkf6WdbxCFnPdAnYYQyCjAKPJgLNxXwPjwTh6DGg6gN3E",

],

"code":

}

我们需要做的就是将列出的验证人地址更改为我们在上一步中生成的地址。

注意:应该由一个人执行这些步骤,并共享生成的文件给其他验证人。因为从rust->wasm的构建不是“可重现的”,每个人都会得到一个略有不同的wasmblob,如果每个参与者自己生成文件,这将破坏共识。

准备好chainspec后,将其转换为“raw”chainspec。regular和raw之间的区别只是所有字段在"raw"chainspec中编码为了十六进制。

./target/debug/node-templatebuild-spec--chaincustomSpec.json--raw>customSpecRaw.json

最后与网络中的所有其他验证人共享customSpecRaw.json。

启动链

你已完成所有必要的准备工作,现在准备好启动链。此过程非常类似于之前以Alice和Bob的身份启动链。

从干净的目录开始非常重要,如果你打算使用之前的目录,请删除该目录中的所有内容。

第一位参与者启动节点:

./target/debug/node-template

--chain./customSpecRaw.json

--validator

--namelester

以下是我们启动Alice时的一些不同之处。

--validator表示节点将参与出块而不是仅仅同步网络数据。

--name给节点取个可读性高的名字。

后续验证人现在可以像Bob之前一样加入网络,确保使用新的chainspec和密钥。你可以使用网络中任意已有的节点引导,而不仅是之前的节点。

小结

恭喜你!你已启动了自己的区块链!

在本文中,你学会了编译节点模板,生成自己的公私钥对,创建一个自定义的链,使用这些密钥对,并根据自定义chainspec和节点模板启动了一个私有区块链网络。

标签:ALILICSUBRATalice币价格PublicaSUB币Art Blocks Curated Full Set

币赢交易所热门资讯
ONE:关于ZYC活动奖励发放的公告

尊敬的BIONE用户:ZYC交易大赛已结束,奖励于11号上午12点前空投至Bione交易所个人账户中,请注意查收.

1900/1/1 0:00:00
PLE:MoneyGram在全球五个支付通道使用Ripple跨境支付解决方案ODL

据FXStreet报道,速汇金目前正在全球五个支付通道使用Ripple跨境支付解决方案ODL。在Ripple网络研讨会上,Ripple产品管理高级副总裁AsheeshBirla谈到了Ripple.

1900/1/1 0:00:00
COIN:Coindy币对交易所创始人徐晨涉案金额几十亿,已崩盘跑路?

出品/Blockeye文编/麦当劳2020年,的确是一个多灾多难的一年,在币圈呢少不了当韭菜被割,出了门说不准就疫情上身,哪里都难.

1900/1/1 0:00:00
USD:关于AUSD即将上线法拉第的公告

尊敬的用户:AUSD即将上线法拉第交易所,并开通AUSD/USDT交易对。具体上线时间为:开启充提:2月12日15:00开放交易:2月13日10:00币种介绍:代币名称:Appealdollar.

1900/1/1 0:00:00
GAT:回形针科普视频一夜爆火,给区块链发展带来了什么?

2月2日,由回形针团队制作的科普视频《关于新冠肺炎的一切》在全网刷屏。这支视频在10分18秒的时间内,将新型冠状病肺炎的发生和传播,死亡率和传播速度,以及如何降低被感染的可能性等知识,以极高的.

1900/1/1 0:00:00
FIC:关于EOS及EOS代币恢复充提的公告

公告编号2020020502各位关心ZBG的投资者们和项目方:?EOS及EOS代币:IQ、MEETONE、GGS现已恢复充提币,感谢大家的信任与支持!风险提示:加密货币资产是创新的投资产品.

1900/1/1 0:00:00