天之道,损有余而补不足,人之道则不然,损有余而补不足。
--《道德经》
凡有的,还要给他,叫他有余,没有的,连他所有的也要夺走。
--《马太福音》

本文介绍如何搭建本地的 Lotus 测试网络,以便在线上测试网络不可用的时候,进行本地挖矿测试。

搭建本地测试网络需要编译 lotus-seed 工具去预密封一些种子节点,所以我们需要先编译一下 debug 版本:

cd {LOTUS_BASE_DIR}
make clean debug 

这里编译成 debug 版本还有一个好处就是,可以测试小扇区,最小支持 1024 字节的扇区。我们知道测试网最小的扇区是 1GB, 我们的开发电脑配置一般都不会很高,即使 1GB 的扇区,预密封一个也需要 1 小时左右。而且在密封期间由于 CPU 占用很高,如果你本机 电脑还开了很多其他任务的话,很容易造成电脑死机。1024 字节的小扇区,有利于我们在很短的时间内顺利地测试完一个流程。

下面我们开始搭建本地测试网络。

1.预密封一些扇区

这里我们采用 1024 Byte 的扇区,如果你要测试 1GB 扇区的话,把 --sector-size 设置成 1073741824

./lotus-seed pre-seal --sector-size 1024 --num-sectors 2

运行完这条命令之后,会在你的 home 目录生成一个 .genesis-sectors 目录

2.生成创世区块,并运行第一个节点

./lotus daemon --lotus-make-random-genesis=genesis.car \
			   --genesis-presealed-sectors=~/.genesis-sectors/pre-seal-t0101.json \
			   --bootstrap=false

pre-seal-t0101.json 文件中指定创世矿工,以及它所预密封的两个扇区。

3.设置创世矿工

./lotus-storage-miner init --genesis-miner --actor=t0101 --sector-size=1024 --pre-sealed-sectors=~/.genesis-sectors --nosync

注意:这里的 --sector-size 应该跟上面的设置成一样的,否则会报错。

4.启动矿工

./lotus-storage-miner run --nosync

矿工启动之后我们可以查看本地钱包余额,你会发现钱包中有一些初始的余额,大概几万个测试币。

5.启动其他节点,加入本地网络

首先我们把前面生成的 genesis.car 文件拷贝到指定的节点。

scp genesis.car miner1@192.168.0.110:/home/miner1

然后启动 lotus daemon

lotus daemon --genesis=genesis.car --bootstrap=false

接下来把当前节点连接到创世节点

lotus net connect {genesis_node_id}

我们可以通过 lotus net peers 验证一下节点是否添加成功,你还可以通过 lotus sync status 查看同步状态。

6. 搭建视频

我把整个搭建测试网络流程的实操步骤都录制成了视频,视频地址为: https://v.youku.com/v_show/id_XNDQ4MDU1NDg2OA==.html