如何简单实现Filecoin devnet 开发网搭建? | 开发者专区系列05

自Filecoin开发者测试网上线后,星际鑫航的技术男神们就按捺不住了。都说Filecoin项目复杂,开发量巨大,这些程序猿怀着“代码改变世界”的理想,一直在深度参与测试、bug提交、与协议实验室团队沟通问题。

于是,不安分的星际鑫航开发团队又出来搞事情,推出最新的开发网部署成果:基于Filecoin,搭建自己的开发者测试网。(简称开发网)

下面开始相应的教程,其中涉及大量代码,非开发人员阅读可能会引起不适,请自行决定是否阅读。

1、为什么要搭建自己的开发网?

关于这个问题,就见仁见智了。目前针对不同基础的开发者,协议实验室提供的开发者测试网有三个版本。分别如下:

devnet-user
目前,这是默认使用的网络,用于测试和试验。需要用户从主节点手动部署节点, 我们之前有篇文章介绍: 如何开始测试网络挖矿 | 开发者专区系列02 连接的就是这个网络。

devnet-nightly
构建网络,专门为开发人员准备的,需要从 devnet-nightly 标签下构建, 并且在启动的时候必须将节点配置为使用 small sectors(小扇区),这个网络同步的速度会快一些。 每天 06:00 由 CI 从主节点部署,官方提示你应该尽量避免接入这个网络。

env FIL_USE_SMALL_SECTORS=true go-filecoin daemon

devnet-test
这是专门为 Infra 开发人员部署的网络,一般从 redeploy_test_devnet 标签构建。如果你是一般开发人员或者是普通用户,你也应该避免使用这个网络。

官方既然已经有三个版本的开发者测试网,为什么星际鑫航还要自己搭建呢?

理由1:官方的开发者测试网络,数据同步太慢,耗时太长。

在目前只有 6w 多个区块的情况下,同步一个节点就要耗费一周的时间。参与开发网测试,第一步就是要部署自己的节点,如果在一开始就停滞太久,效率太低。

理由2:有必要部署一条山寨版 Filecoin ,方便国内对Filecoin项目有兴趣的人群深度参与。

基于以上两个理由,星际鑫航推出了自己的开发网,方便业内同行参与,并将完整搭建教程公开。

2、搭建教程

步骤1.搭建主节点(种子节点)

我们需要重新编译 Filecoin, 为了能够清晰的看到整个 Filecoin 从同步数据,挖矿,创建矿工,发布订单到接单的整个流程,建议开启 Debug 模式。 修改方法很简单,在 go-filecoin 根目录下的 main.go 第 22 行改为 n = 5

// TODO fix this in go-log 4 == INFOn, err := strconv.Atoi(os.Getenv(“GO_FILECOIN_LOG_LEVEL”))if err != nil { n = 5}

然后重新 build

go run ./build/*.go build

然后就可以搭建主节点了,如果你之前有运行过 go-filecoin 节点的话,需要把 .filecoin 移除或者备份。

mv ~/.filecoin filecoin-bak

先初始化节点,这里需要用我们刚刚编译的时候生成的 genesisfile, 并且移除 --devnet-user flag

$ ./go-filecoin init --genesisfile=./fixtures/genesis.car$ ./go-filecoin daemon

我们编译的时候程序给我们生成了 5 个初始地址,并为每个地址分配了 1000000000000 个 FIL 币,如果你觉得不够你挥霍, 你还可以改大一些,在 fixtures/setup.json 中。

{ “keys”: 5, “preAlloc”: [ “1000000000000”, “1000000000000”, “1000000000000”, “1000000000000”, “1000000000000” ], “miners”: [{ “owner”: 0, “power”: 1 }]}

然后我们开始导入初始地址,并设置矿工:

$ mineraddr= ( j q − r ′ . M i n e r s [ 0 ] . A d d r e s s ′ . / f i x t u r e s / g e n . j s o n ) (jq -r '.Miners[0].Address' ./fixtures/gen.json) (jqr.Miners[0].Address./fixtures/gen.json) peerid= ( . / g o − f i l e c o i n − − e n c = j s o n i d ∣ j q − r ′ . I D ′ ) (./go-filecoin --enc=json id | jq -r '.ID') (./gofilecoinenc=jsonidjqr.ID) ./go-filecoin config mining.minerAddress m i n e r a d d r mineraddr mineraddr walletaddr= ( . / g o − f i l e c o i n − − e n c = j s o n w a l l e t i m p o r t . / f i x t u r e s / 0. k e y ∣ j q − r ′ . A d d r e s s e s [ 0 ] ′ ) (./go-filecoin --enc=json wallet import ./fixtures/0.key | jq -r '.Addresses[0]') (./gofilecoinenc=jsonwalletimport./fixtures/0.keyjqr.Addresses[0]) ./go-filecoin config wallet.defaultAddress w a l l e t a d d r walletaddr walletaddr ./go-filecoin miner update-peerid --from $walletaddr --gas-price 0 --gas-limit=300 $mineraddr $peerid

启动挖矿,查询余额

$ ./go-filecoin mining start$ ./go-filecoin wallet balance $walletaddr

这时你应该会看到你的钱包里面已经有巨额资金了。一个创世节点就搭建起来了,同时你应该可以在控制台看到很详细的日志输出。网络默认是 30 秒出一个区块,区块的信息也会在控制台详细打印输出。

步骤2. 搭建 faucet 服务

首先我们需要在主节点搭建一个水龙头服务(faucet),以便其他节点可以到水龙头去申请测试代币。faucet 启动程序在 tools/faucet 目录下:

./tools/faucet/faucet -faucet-val=500 -fil-wallet ${walletaddr} -limiter-expiry 0h0m10s

服务器启动成功之后,使用浏览器访问 http://localhost:9797 就能看到熟悉的 faucet 页面了

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

步骤3. 搭建 genesisfile.car 下载服务

这个也是从节点初始化的时候所必须的服务,在 devnet-user 网络我们都是用 http://user.kittyhawk.wtf:8020/genesis.car,现在因为我们需要用我们自己搭建网络的 genesis.car, 所以我们也需要搭建这样一个服务。 genesis-file-server 服务程序同样在 tools 目录下。

./tools/genesis-file-server/genesis-file-server --port 8020

genesis-file-server 启动成功之后我们就可以开始搭建从节点了,监听的端口是 8020.

步骤4. 搭建从节点

Note: 其实理论来说,没有主从节点的说法,都是对等节点,这里只是为了便于大家理解,给个标记而已。 搭建从节点就非常简单了,首先我们需要把刚刚在主节点构建生成的 go-filecoin 文件拷贝到需要搭建从节点的机器上,然后执行初始化脚本:
./go-filecoin init --genesisfile=http://192.168.0.110:8020/genesis.car

这里的 192.168.0.110 是我的主节点的 IP,所以这里你需要换成你的 ip 或域名。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

然后启动守护进程,启动之后由于是内部网络,你会发现区块数据同步很快。

步骤5. 连接到主节点

接下来我们只需要将所有的从节点都连接上主节点,整个网络就搭建完成了。

首先在主节点上运行 go-filecoin id 获取主节点网络地址:

{ “Addresses”: [ “/ip4/127.0.0.1/tcp/6000/ipfs/QmQvUmeB2jtFWJEmCe5LXyDmRzToJkDDzC6eK9oWvfspzM”, “/ip4/192.168.0.110/tcp/6000/ipfs/QmQvUmeB2jtFWJEmCe5LXyDmRzToJkDDzC6eK9oWvfspzM”, “/ip4/172.17.0.1/tcp/6000/ipfs/QmQvUmeB2jtFWJEmCe5LXyDmRzToJkDDzC6eK9oWvfspzM”, “/ip4/192.168.56.1/tcp/6000/ipfs/QmQvUmeB2jtFWJEmCe5LXyDmRzToJkDDzC6eK9oWvfspzM” ], “ID”: “QmQvUmeB2jtFWJEmCe5LXyDmRzToJkDDzC6eK9oWvfspzM”}

连接主节点

./go-filecoin swarm connect /ip4/192.168.0.110/tcp/6000/ipfs/QmQvUmeB2jtFWJEmCe5LXyDmRzToJkDDzC6eK9oWvfspzM

恭喜你,到这里,开发者测试网搭建基本完成了。过程步骤有些复杂,但是如果按照上面的操作来,相信整个过程会很顺利。

3、测试验证

测试之前先为每个从节点申请测试 FIL,先查看钱包地址:

./go-filecoin address ls

访问 faucet 地址,填入自己的钱包地址,申请代币(每个地址每隔 10 秒钟可以申请一次),提交之后你可以在主节点的终端看到调试信息,表示收到充值请求,如下图所示。

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

接下来,有了测试 FIL 之后就可以在各自的节点上测试创建矿工,发布订单,存储数据等操作了。这些操作我们之前的系列文章都有详细的操作介绍,这里就不赘述了,大家尽情玩耍吧。

参考资料:

开发者专区系列01——如何搭建Filecoin测试网挖矿节点

如何开始测试网络挖矿 | 开发者专区系列02

你竟是个这样的链!!!Filecoin架构拆解 | 开发者专区系列03

矿工必读,如何将文件存进Filecoin(开发者)测试网 | 开发者专区系列04

你可能感兴趣的:(挖矿——开发者)