Linux搭建Neo私有链

准备工作

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

这4台服务器都随意选的,官方给的教程是4台服务器,那我们做实验也不可能真的去买4台服务器,所以我选择了使用虚拟机Vmware。

首选我准备一个Linux镜像:我选用的是ubuntu-16.04

镜像版本

新建虚拟机和安装镜像就不写了,直接跳过。

第一步: 安装.Net Core,注意,需要2.0及以上的版本

sudo wget -q packages-microsoft-prod.deb https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb

sudo dpkg -i packages-microsoft-prod.deb

sudo apt-get install apt-transport-https

sudo apt-get update

sudo apt-get install dotnet-sdk-2.1.200

其它类型Linux服务器可以参考微软官方文档安装:
https://www.microsoft.com/net/download/linux-package-manager/ubuntu16-04/sdk-current

第二步: 安装 LevelDB 和 SQLite3 开发包

sudo apt-get install libleveldb-dev sqlite3 libsqlite3-dev

第三步: 安装neo-cli

sudo wget -c 'https://github.com/neo-project/neo-cli/releases/download/v2.7.5/neo-cli-linux-x64.zip'

sudo unzip neo-cli-linux-x64.zip

到此为止准备工作就结束了,现在关闭我们新建的虚拟机。

关机后我们克隆三份相同虚拟机。(因为Neo需要四个节点共识,如果不克隆就要安装四个虚拟机,耗时耗力!另外,建议大家克隆完成后,更改一些Linux系统的名字,不然台服务器在同一个网络重名可能会出问题。)

Linux搭建Neo私有链_第1张图片
克隆虚拟机

开始搭建私有链

第一步: 创建四个钱包文件

因为我Window本地有neo-cli,我就直接使用PowerShell创建了,当然也可以使用我们刚搭建的环境去创建,但是记得创建了之后要删除同步的Chian数据。

另外这四个pubkey一定要保存好,稍后我们会使用

neo> create wallet test1.json
password: ******
password: ******
address: AWxxYq2bC3V6uMf2YR1M645XPjsZWgPsUg
 pubkey: 02dd5ab23f18ff6e3e0a8f9b1a88c27fbf19d199c335d5a67f1ceed2d4a4df0479
neo> create wallet test2.json
password: ******
password: ******
address: AZTzjCCrxqtvpo3F9aG6eqU7CmKWLUd8Zw
 pubkey: 03f9e7101393cd7ccea79b3fa29b6084ad736b1abb760b77e060444eeb5f57591d
neo> create wallet test3.json
password: ******
password: ******
address: AQoKXnxEUWkSjjWGsHd5gUuDZuBukUsowG
 pubkey: 028507b2c7de32fa5814b78de3d9154b16628b15645c37fe60ea3a21d448f82b7b
neo> create wallet test4.json
password: ******
password: ******
address: ALpVJeceiABMUC3CXSAzeRmhDbiccmbU8y
 pubkey: 024346183e33097ce60d74ec05fa7396a4e9efe9b82545a1f25892cf517aa9b1ba
Linux搭建Neo私有链_第2张图片
PowerShell

第二步: 修改protocol.json配置文件

vim protocol.json

修改Magic的值,保持范围在[0 - 4294967295]区间即可。

在StandbyValidators中写入我们保存的四个pubkey。

在SeedList中写入四台虚拟机的ip地址,端口保持不变。

保存文件分别替换掉四台虚拟机neo-cli中的皮protocol.json文件即可

详细配置文件如下:

{
  "ProtocolConfiguration": {
    "Magic": 9345724,
    "AddressVersion": 23,
    "SecondsPerBlock": 15,
    "StandbyValidators": [
      "02dd5ab23f18ff6e3e0a8f9b1a88c27fbf19d199c335d5a67f1ceed2d4a4df0479",
      "03f9e7101393cd7ccea79b3fa29b6084ad736b1abb760b77e060444eeb5f57591d",
      "028507b2c7de32fa5814b78de3d9154b16628b15645c37fe60ea3a21d448f82b7b",
      "024346183e33097ce60d74ec05fa7396a4e9efe9b82545a1f25892cf517aa9b1ba"
    ],
    "SeedList": [
      "192.168.154.129:10333",
      "192.168.154.130:10333",
      "192.168.154.131:10333",
      "192.168.154.132:10333"
    ],
    "SystemFee": {
      "EnrollmentTransaction": 1000,
      "IssueTransaction": 500,
      "PublishTransaction": 500,
      "RegisterTransaction": 10000
    }
  }
}

第三步: 启动节点并同步

启动节点:

dotnet neo-cli.dll

打开钱包:

open wallet wallet1.db3

开启节点共识:

start consensus

查看节点状态:

show state

如果效果如下就说明已达成了节点共识:

Linux搭建Neo私有链_第3张图片
节点共识

第四步:提起Neo

安装 PC 版客户端(Neo-GUI),修改配置文件 protocol.json 使其连接到私有链中。

打开钱包,如果左下角有连接数不为零,而且一直在同步区块,表示该客户端已经成功地连接到了私有链中。

在 PC 版客户端中打开钱包 wallet1.db3,添加多方签名地址,输入 protocol.json 中的 4 个公钥,设置最小签名数量为 3(共识节点数量 / 2 + 1),如图所示。

Linux搭建Neo私有链_第4张图片
创建多方签名

确定,然后需要重建钱包索引,在菜单栏中点击 钱包 重建钱包索引 然后你就会看到在合约地址中有 1 亿的 NEO 了。(4个钱包都要执行相同的操作)

Linux搭建Neo私有链_第5张图片
100000000Neo

我们要将该 NEO 从合约地址转到普通地址中,打开 4 个钱包中的任意一个,点击 交易 转账 输入一个标准地址,将 1 亿 NEO 转到这个地址中。

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

Linux搭建Neo私有链_第6张图片
转账Neo

提取 NeoGas 的操作方法也类似,点击 高级 提取 NeoGas 提取 ,(记得这时所在的钱包 X,下文会用到),如图所示

Linux搭建Neo私有链_第7张图片
验证签名

接下来的操作与转账 NEO 类似,将没有足够的签名的代码复制下来,打开第二个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名, 然后将代码复制下来,打开第三个钱包,点击 交易 签名 粘贴刚才复制的代码,点击 签名,点击 广播 后提取 NeoGas 的交易开始广播,约 15 秒后提取成功。

提取成功后 NeoGas 会进入到你发起提取 NeoGas 的交易所在的钱包(即上方的 X 钱包)的第一个标准地址,如图所示

Linux搭建Neo私有链_第8张图片
转账成功

参考:http://docs.neo.org/zh-cn/network/private-chain.html

你可能感兴趣的:(Linux搭建Neo私有链)