filecoin源码解读(一)初始化节点
为了便于理解,就根据部署filecoin挖矿节点的步骤来解读,看看部署节点时,每一步命令都在干什么。
首先从初始化开始,最简单的初始化命令go-filecoin init --devnet-user --genesisfile=https://genesis.user.kittyhawk.wtf/genesis.car
初始化的全部参数
--genesisfile 用于指定创世文件
--peerkeyfile 指定节点私钥文件
--with-miner 指定矿工地址
--sectordir 指定存储扇区路径(即存放用户数据的路径)
--default-address 指定节点默认钱包地址
--auto-seal-interval-seconds 指定自动封装扇区的时间间隔
--devnet-staging 指定staging开发网络
--devnet-nightly 指定nightly开发网络
--devnet-user 指定user开发网络
其中网络类型(staging、nightly、user网络)和创世文件是必须指定的。
具体代码在commands/init.go中:
初始化时首先要设置repopath,也就是节点数据的存储路径,用--repodir参数来指定,未指定时默认为const defaultRepoDir = "~/.filecoin",也就是用户目录下的名为filecoin的隐藏文件夹。
之后加载创世文件loadGenesis(),然后调用node.Init(),传入repo路径,网络类型(包括user网络、test网络、nightly网络),及创世文件等参数,再调用chain.Init()来初始化一个节点。
最后根据初始化命令中的一些参数来生成节点配置文件rep.ReplaceConfig()。
chain.Init()和rep.ReplaceConfig()中会生成节点默认钱包地址、私钥、节点快照等配置文件,保存在.filecoin-20191024-095628-v002文件夹中,而.filecoin文件夹是前者的软链接。
当所有配置文件生成后,一个节点就初始化完成了,go-filecoin init命令也就执行结束了,不会持久运行。
之后需要用go-filecoin daemon命令来启动节点,让节点持久运行。
成功初始化如图