基于NEO的私链(Private Blockchain)或者联盟链的搭建

1.准备工作

1.NEO-GUI

2.NEO-CLI

3..NET Core Runtime (不能是2.x版本,官方建议是1.12,实际上我用1.14也是没有问题的)

4.四台windows操作系统的虚拟机(本文是基于AWS的,理论上本地跑虚拟机也是没问题的)

2.部署NEO节点

先给出官方文档的链接--NEO节点部署(官方文档),可以对照这个文档一起进行。

1.先准备好要充当节点的虚拟机。这里以AWS为例,打开AWS首页,注册登录,登录成功后,选择AWS管理控制台,然后再点击左上角的服务,选择EC2


2.新页面中点启动实例(PS:右上角有个节点选择,可以自由切换,我选择的是新加坡的),然后选择 windows server 2016 Base >>> 选择有符合条件的免费套餐 , 后面的默认配置就可以。关键是最后一步---核实实例启动,这里选择 创建一个新密钥对,并保存好。


3.创建成功后,回到控制台,稍等几分钟,等虚拟机准备好,然后选择刚刚创建的虚拟机,点连接,会出现一个弹框,点击下载选择桌面文件,密码那里按提示操作获取密码


4.打开刚刚下载的远程桌面文件,按提示粘贴上一步获取到的密码,成功连接后,等系统初始化完成就可以操作了。初始化完成后先把虚拟机的IE安全设置关掉(不然无法下载文件,而且每打开一个网页都要警告一次,贼烦),点击左下角的搜索按钮,输入server manager,然后在Local server面板找到IE Enhanced Security Configuration,点击ON,然后在弹出的面板里选择OFF,关闭掉IE安全设置


5.打开NEO节点部署(官方文档),下载NEO-GUI,NEO-CLI,.NET Core Runtime这里说一下,为什么要下载NEO-GUI?按照官方文档的说明,理论上我们只下载NEO-CLI就可以的了。但是官方文档没有指明NEO-CLI运行需要的两个库文件具体在哪里可以下载。官方文档这里的第一步的程序包应该指的就是NEO-GUI,然后再NEO-GUI目录下的x64(或者x86,根据你的操作系统来选择)文件下可以找到这两个库文件。将这两个文件复制到NEO-CLI文件目录下。


6.安装.NET Core Runtime ,安装完成后,打开命令行,我这里用的是PowerShell,用命令行切换到NEO-CLI目录,输入 dotnet neo-cli.dll ,不出意外的话,NEO节点就部署成功了,如图所示。


3.搭建私链(或者联盟链)

官方文档在这---NEO私链搭建(官方文档),可以对照着一起来做。

1.文档中有指出需要4台虚拟机,所以我们需要4台虚拟机,并且都是部署好NEO节点的。可以按照上一步教程,将另外3台配置好。这里的给虚拟机命名的时候最好自己弄个简单的标识排序,不然后面操作起来可能会乱,比如我这里的4台虚拟机分别命名是neo-window,neo-window1,neo-window2,neo-window3。当然这些看个人习惯来。

NEO 私有链的部署至少需要 4 台服务器才能取得共识,每台服务器对应一个共识节点,每台服务器上有一个 NEO 钱包文件

2.另外3台部署成功后,打开其中一台虚拟机,我这里打开的是第一台(neo-window),然后启动NEO-CLI,用 create wallet xxxx.db3 新建4个钱包,我这里分别创建的是wallet1.db3 ~ wallet4.db3。新建好后将四个pubkey保存到一个txt文件里,后面会用到。然后将其它3个钱包文件分别复制粘贴到相应的虚拟机上。注意要放在跟neo-cli.dll同一个目录下


3.后台打开AWS控制台,将4台虚拟机的IP地址记录下来。这一步后面修改节点配置文件的时候会用到。如图所示,要把IPv4 公有IP记录下来。


4.如果你之前有启动过neo-cli.dll,那么要先删除掉NEO-CLI目录下的Chain目录,不然做到最后面可能会出现有连接数,但是区块高度为0的状况同样的,如果你因为好奇心打开过NEO-GUI,你也需要删除相应的Chain目录。如果没有,可以跳过删除这一步。之后打开NEO-CLI目录,用txt方式打开目录下的 protocol.json 文件,这个是节点的配置文件。按照官方文档的格式进行修改


下面是我修改好的文件,修改好后,保存,并复制替换掉其它虚机上的客户端的节点配置文件

{

"ProtocolConfiguration":{

"Magic":66123456,

"AddressVersion":23,

"StandbyValidators":[

    "0264e5b51fa2af8392292fd13e0381d913288e0d197086d12aef195d6823a349fa",

    "034a879e08069f89cdbc34067ff0df614d36bef7a30b014509dfe3170c6a9d7974",

    "0332c8d77ca8e2a7847325af55457f2793d285e2a914e349bc329c94e301c01dd6",

    "020a02297371c867c845471dc0030277dc669c89ae80071424442787535295c7a4"

],

"SeedList":[

    "54.255.212.167:10333",

    "52.221.255.41:10333",

    "13.229.109.145:10333",

    "13.228.25.57:10333"

],

"SystemFee":{

    "EnrollmentTransaction":1000,

    "IssueTransaction":500,

    "PublishTransaction":500,

    "RegisterTransaction":10000

    }

}

}

5.修改虚拟机的防火墙入站规则,这里要注意的是不仅需要修改虚拟机的入站规则,而且要去AWS控制台修改安全组里的入站规则,由于我4台虚拟机用的都是同一个安全组,所以只要修改一个就行了。虚拟机里windows操作系统的入站规则我就不具体写了,在控制面板里操作,这个比较简单。其实,如果想简单粗暴点,直接关掉windows的防火墙应该就可以了。。


6.在四台虚拟机上分别用neo-cli打开相对应的钱包,这里以第一台虚拟机为例。运行 dotnet neo-cil.dll 命令,如果你想检查当前的区块状态,可以使用show state,初始状态应该是高度为0,节点为0。然后打开本机对应的钱包文件,这台虚拟机对应的wallet1.db3。

输入命令 open wallet wallet1.db3 打开钱包

然后输入 start consensus 开启共识

其他虚拟机一样操作,分别打开对应的钱包文件,然后输入命令开启共识。不出意外的话就会出现如图所示的界面。关掉其中一台的话,其它三台依然可以产生共识


7.利用NEO-GUI提取NEO和GAS。安装好NEO-GUI后,将NEO-CLI目录下的 protocol.json 文件覆盖掉NEO-GUI目录下的protocol.json,然后运行neo-gui.exe。进行多方签名的设置。


但是有一个问题,这里有点比较坑的地方,文档里也没有明说。NEO-CLI和NEO-GUI是不能同时启动的,也就是说用 dotnet neo-cli.dll 启动了neo-cli的时候,不能运行neo-gui.exe,反之亦然。所以当产生共识之后,我们需要关闭其中一个节点的NEO-CLI,然后在这个节点上的NEO-GUI客户端进行操作。依次打开4个钱包,进行多方签名的设置和重建钱包索引的操作,这个操作是在同一台虚拟机上完成的。这个一定要注意。

然后把 NEO 从合约地址转到普通地址中,打开 4 个钱包中的任意一个,点击 交易  >>>  转账 输入标准地址和数额,将 1 亿 NEO 转到这个地址中。


然后系统会提示“交易构造完成,但没有足够的签名”,然后将代码复制下来,打开第二个钱包,点击交易签名粘贴刚才复制的代码,点击签名, 然后将代码复制下来,打开第三个钱包,点击交易签名粘贴刚才复制的代码,点击签名, 这时你会发现窗口中出现了一个广播按钮,代表交易已经签名完成(达到多方签名合约要求的最少签名数量)可以广播,点击广播后转账交易开始广播,约 15 秒后转账成功。

上面的操作也是在同一个客户端完成的。这里多说一句,我第一次弄的时候没有注意,我是在4个节点客户端上分别操作的,也就是说多方签名的设置和重建钱包索引操作,我是在4台虚拟机上分别完成的。这就造成了我没有正在运行的节点了(因为neo-cli和neo-gui不能同时运行,而neo-gui没有共识功能)。然后,到了提取NEO和GAS这一步时,就造成了,我的交易签名成功了,而且广播了,但是并没有转帐成功。造成这样的原因是因为我虽然广播了,但是此时没有节点帮我把这个交易打包上去。所以,我的交易转账当然不成功,在普通地址上也就没看到那些相应的NEO。这点是因为自己对区块链的概念不够深,我这里被困扰了很久。

8.GAS的提取教程基本上差不多,这里的不多说废话了,官方教程已经说得很详细了。。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容