乐趣区

Mac上用docker搭建Neo私链并调试

用虚拟机搭建私链的问题
上一篇 Neo 私链中使用四台阿里云的 windows 搭建了私链,看到了网络建立的过程,但这样子有很多问题。

阿里云跑了一天花了 100 块,费钱。
手动搭建,下次又要重来。
我用的 mac 电脑,跑 windows 虚拟机很费劲。

总之,如果可以脚本化,自动化就更好了。所以总结一下用 docker 搭建私链。
另外我的目的是研究代码,而研究代码光看不行,还要深入细节,如果可以调试就好了。调试一般分为两种,最简单的是看 log,这种方法其实已经很无敌了,加上时间可以看性能,时序相关的问题;输出到文件可以调查长期运行后发生的错误。不过作为一个工具控,我还是要找到打断点调试的方法,????,说白了,打断点比在源码中插入很多 log 要方便点,还是人懒。
创建私链并打断点调试的方案
现在有以下几个方案,我都试验了,因为在 mac 上搞 Neo,花了不少时间:

mac 上用 docker 跑一个私链,用 vs code 远程调试。
mac 上用 docker 跑一个私链,自己再开一个 debug 节点,调试本节点。
在 windows 虚拟机里面用 docker 跑一个私链,自己在再一个 debug 节点,调试。

结论:方法 1:在 mac 中用 vs code 远程调试总是失败,不能获取调试进程,获取到了也调试不了,浪费了一天时间检查各种问题,最终放弃。
方法 2:在 mac 上用 docker 跑私链是没问题,但是 mac 上调试 neo-cli。。。会崩溃。。。原因是需要 leveldb,虽然 mac 可以用 brew 安装 leveldb,但是好像要适配一下,我就不趟这水了,所以直接再 windows 上打开 neo-cli,接上私链调试。
方法 3:windows 上安装 docker 也是有条件的:Docker for Windows requires Windows 10 Pro or Enterprise version 10586, or Windows server 2016 RTM to run。不巧的是我的 windows 虚拟机是家庭版,就不折腾了。上面装个 neo-gui 玩玩得了。
所以,最后的结论是:在 mac 上用 docker 跑了一个私链,然后在 windows 虚拟机上调试和玩 Neo-gui。反正能用就好,其实最好可以全都在 windows 或者 linux 环境下玩,像我这样插一个 mac 就是有点麻烦了。
废话少说,下面看看如何用 docker 建立私链并调试吧。
使用 docker 创建私链
这个在 Neo 的一个国外社区 CityOfZion 中已经有人做了,clone 下来按照步骤一步一步来就好 CityOfZion/neo-privatenet-docker
docker 的使用方法,这里有一本好书 docker_practice,可以免费看,作者也是个大牛,也做区块链,有兴趣的可以看看他的项目。
所需要的命令:
git clone https://github.com/CityOfZion/neo-privatenet-docker.git
cd neo-privatenet-docker
./docker_build.sh
./docker_run_and_create_wallet.sh

当执行成功后,就会产生一个私钥,里面就有提取好的 Neo,可惜是私链的,不然就发财了。看下图就是成功后的打印。
提取 Neo 和 Gas 成功
在 Neo-gui 里面查看提取的 Neo
我们切回 windows(注意虚拟机要是桥接模式),打开 Neo-gui,
1. 注意 copy 正确的 protocol.json 到 neo-gui 的所在的目录注意下图红框,设置正确的公钥和 ip 地址
image.png
先创建一个无用的钱包

右击该钱包导入 WIF
再该钱包右击,导入 WIF,用户体验的设计很奇怪
4. 看到提取的 NEO 和 NeoGas 成功导入

第二步就是为了可以右击导入,neo-gui 没有别的入口提供导入功能
调试

下载 neo-cli 的代码
切换到和 docker 一样的版本,我这边是 v2.6.0
copy libleveldb 到 neo-gui 的目录
copy protocol.json
copy config.json,注意修改一下端口,不要和 docker 中的节点使用一样的
注意虚拟机要是桥接模式

可以调试了
总结
后面我们可以方便的玩代码了,深入代码细节,可以学到很多东西,有点兴奋。
参考资料
CityOfZion/neo-privatenet-dockerDebugging .Net Core apps inside Docker container with VSCodevs code: Attaching to remote processesnodejs : LIVE DEBUGGING WITH DOCKERDebug .NET Core with docker containers #130vs code taskGuide: How to Import Private Key to NEO GUI
作者:沈寅链接:https://www.jianshu.com/p/cd7… 來源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

退出移动版