作者:ZhangHQNEO2.9将ApplicationLogs等插件机制进行了改动,相比上一版本有很大的变化。构建私有链时存在一些差异。这里详细介绍2.9。私有链构建过程。1、准备四个Linux环境。这里我使用了四台腾讯云的服务器。配置:CentOS7.4系统,2核,4G内存,40G硬盘,1M带宽。2、安装dotnetcore,使用命令:sudorpm-Uvhhttps://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpmsudoyumupdatesudoyuminstalldotnet-sdk-2.13,其他必要的依赖项:安装sqlite:sudoyuminstallsqlite-develinstallleveldb:sudoyuminstallleveldb-develinstalllibunwind:sudoyuminstalllibunwind-devel4,下载neo-cli:sudowgethttps://github.com/neo-projec。..解压:sudounzipneo-cli-linux-x64.zip5.下载插件:进入Plugins目录:cdneo-cli/Plugins下载ApplicationLogs:sudowgethttps://github.com/neo-projec。..下载SimplePolicy.zip:sudowgethttps://github.com/neo-projec...下载StatesDumper.zip:sudowgethttps://github.com/neo-projec...6。将插件解压到Plugins目录下:sudounzipApplicationLogs.zip-d..sudounzipSimplePolicy.zip-d..sudounzipStatesDumper.zip-d..解压完成后删除Plugins下的压缩文件。rm-fApplicationLogs.zipSimplePolicy.zipStatesDumper.zip7。使用neo-cli创建四个钱包文件。可以使用PC版钱包或者其他neo-cli命令行钱包创建:createwallet1.jsonpassword:***password:***address:AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDqpubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d9891163***awordpass***awallet:AP3jypBzSmwWVy7QaaTUctBLpuMe9CoNDqpubkey:030add17e36aa72949cdeb3486021ff7bb621541af6680b1d7e2aaa6d9891163address:AVhFga7Angfmtb1zQXEgau8Pkh1zr6ZbdNpubkey:0331089290e5886d9fcf52f29d51d8a9f705bbdbe59b0dba8212611d771d127367createwallet3.jsonpassword:***password:***address:AU1r8zrqmNynqtpWMwZnBTWksp5fuKvyaApubkey:021e67f86471a35ba4e0362e7eb246da28f7059298d768bc71e7de9cd908231591createwallet4.jsonpassword:***password:***address:APRyAAXy1y6upwjs4ijv6efts8PcnG5uWdpubkey:02fca1085da410796d7f3279660f52a92d216680060f1710c37f76e248f506cb91Aftercreatingthewallet,savethepublickeys4个钱包中的(保存在一个文件中以备使用.txt)可以直接复制上面的公钥或者使用CLI命令中的listkey命令查看公钥再复制。创建的钱包json文件在neo-cli目录下分别为1.json、2.json、3.json、4.json。将4个钱包文件复制到4个节点的neo-cli目录下,这里将生成的1.json钱包源文件复制进去。如果只是新建一个1.json,复制内容,钱包会打不开。9、修改节点配置文件:在本地编辑一个配置文件protocol.json。首先修改Magic值,该值用于标识消息的来源网络,指定不同的Magic以保证NEO区块链中的不同网络信息在传输过程中不会被发送到其他网络。Magic的类型是uint,所以请注意填充的值必须在[0-4294967295]范围内。然后修改StandbyValidators,这里填入第三步记录的4个公钥。最后修改SeedList,这里填写第一步记录的IP地址,端口号保持不变。比如我修改为如下配置。{"ProtocolConfiguration":{"Magic":123456,"AddressVersion":23,"SecondsPerBlock":15,"StandbyValidators":["03072384ece95c4febe7211ee4833cd36cdf0f255ec5263b28a4be1f2af7a3d7f3","0208da33cee651a4dc119654b5b8067ade533e39e63a8b4fdbd160d97f80c4cfb4","026f0af815d5c3895205e9f54b9402329f3ecc4d249fc0c8500e9b3ea8a3ec9d5b","03b4e070988627e2a5710b2c8c79f0f0be18821e1af5875b7beeb3fa8a921cde3f"],"SeedList":[“13.75.112.62:10333”,“137.116.173.200:10333”,“168.63.206.73:10333”,“137.116.171.134:10333”],“SystemFee”:{“EnrollmentTransaction”:10,“IssueTransaction”:5"PublishTransaction":5,"RegisterTransaction":100}}}最后将修改后的protocol.json复制到4个节点的client目录下,替换掉之前的protocol.json文件。这一步可以先删除各个节点的protocol.json文件,再创建并复制内容。为了更方便的打开钱包和开启共识,建议修改各节点下的config.json文件,将UnlockWallet配置改为如下:使用vi编辑各节点的config.json文件:viconfig.json"UnlockWallet":{"Path":"1.json","Password":"11111111","StartConsensus":true,"IsActive":true}其中,Path为钱包名称,Password为钱包密码,可以改成自己的钱包名和密码,其他两个不变。然后在4台虚拟机上依次输入以下命令启动节点,程序会自动打开钱包并启动共识。打开节点启动共识:使用命令打开节点:dotnetneo-cli.dll节点会自动启动共识:showstate查看共识状态如下,说明私链搭建成功提取NEO到安装PC版客户端(Neo-GUI)并修改配置文件protocol.json与4个节点的配置文件相同,连接到私链。打开钱包,如果左下角的连接数不为零,并且区块一直在同步,则说明客户端连接私链成功。在PC版客户端打开钱包1.json,添加多重签名地址,在protocol.json中输入4个公钥,设置最小签名数为3(共识节点数/2+1),即可看到合约地址中有1亿个NEO,分别打开4个钱包文件,进行同样的签名操作。打开钱包1.json,点击TransactionTransfer,输入一个标准地址,将1亿个NEO转入该地址。然后系统会提示“交易构建完成,但是签名不够”,然后复制代码,打开第二个钱包,点击交易签名粘贴刚刚复制的代码,点击签名,然后复制代码,打开第三个钱包Wallet,点击交易签名粘贴刚刚复制的代码,点击签名,然后会发现窗口中有一个广播按钮,表示交易已经签名(至少是最小数量多签合约所需的签名数)可以广播,点击广播转账交易开始广播,约15秒后转账成功。大功告成,你有了自己的区块链,还有1亿个NEO,你可以尽情的玩了。
