- 保存信息一直是Filecoin的使命,Filecoin总会进入下一个阶段,存储真实的数据,为社会创造更多价值,我们应该为些做好准备。
- 与Filecoin生态保持同步,对于中小SP而言,分离存储市场并不会带来额外的风险,相反与生态同步会带来更多的机会。而当前真实数据的主要参予者国内的SP占比较低,我们可以更积极的参予其中,扮演重要角色。
- 分离业务可以独立运行,互不影响,不管你是不同的机器,还是相同的机器运行两个程序,你可以不影响封装证明的情况下重启markets节点。
- 减少端口暴露,提升安全性,你可以放心的暴露你的libp2p端口,因为来自外部的攻击只会影响在线交易部分,可以把证明、封装功能放在内网,来自外部的网络攻击将不会影响你的证明、封装。
我们关于分离存储市场文档已经比较完善。你可以参考现有文档,确保理解分离的过程
请在开始操作前确保所有封装任务已经结束
lotus-miner stop
export LOTUS_BACKUP_BASE_PATH=/backup
subsystem区域主要把EnableMarkets改为false.
[Subsystems] EnableMining = true
EnableSealing = true
EnableSectorStorage = true
EnableMarkets = false
注释掉如下区域
#[Libp2p]
#Endpoint for libp2p requests (public)
#ListenAddresses = ["/ip4/0.0.0.0/tcp/24001", "/ip6/::/tcp/24001"]
nohup lotus-miner run &
lotus-miner backup /backup/backup.cbor
cp ~/.lotusminer/dagstore /backup/ #If you have initialized the dagstore already built up
cp ~/.lotusminer/config.toml /backup/
echo APISEALER=`lotus-miner auth api-info --perm=admin`
echo APISECTORINDEX=`lotus-miner auth api-info --perm=admin`
lotus-miner auth api-info --perm=admin
记录这三个值,导入到markets节点的环境变量中。
[Subsystems]
EnableMining = false
EnableSealing = false
EnableSectorStorage = false
EnableMarkets = true
SealerApiInfo = "eyXXXXXXXX:/ip4/192.168.0.XXX/tcp/2345/http"
SectorIndexApiInfo = "eyXXXXXXXX:/ip4/192.168.0.XXX/tcp/2345/http"
环境变量主要为APISEALER,APISECTORINDEX,MINER_API_INFO(这三个环境变量在1.step4中导出)
另外一个是FULLNODE_API_INFO,这个你可以在你的lotus daemon节点中执行这个命令来获取
lotus auth api-info --perm admin
APISEALER,APISECTORINDEX用于markets节点接受到订单后,发送封装信息至lotus-miner. 1.11.2版本以后,可以在配置文件中配置这两项,保险起见,建议还是配置这两个环境变量
MINER_API_INFO用于lotus-miner客户端与mining/sealing/proving交互
FULLNODE_API_INFO用于链上交互
这是我的例子
export FULLNODE_API_INFO=xxx:/ip4/192.168.0.105/tcp/1234/http
export APISECTORINDEX=MINER_API_INFO=XXXX:/ip4/192.168.0.105/tcp/2345/http
export APISEALER=MINER_API_INFO=xxxx:/ip4/192.168.0.105/tcp/2345/http
export MINER_API_INFO=XXXX:/ip4/192.168.0.105/tcp/2345/http
lotus-miner --markets-repo=~/.lotusmarkets init service --type=markets \
--api-sealer=$APISEALER \
--api-sector-index=$APISECTORINDEX \
--config=/backup/config.toml \
/backup/backup.cbor
这一步骤主要是初始化markets节点,并不会直接运行
cp /backup/dagstore ~/.lotusmarkets/ #If you have initialized the dagstore
把对应的地址部分改为你当前主机的地址
ListenAddresses = ["/ip4/0.0.0.0/tcp/0", "/ip6/::/tcp/0"]
AnnounceAddresses = []
导出环境变量:
export LOTUS_MINER_PATH=~/.lotusmarkets
nohup lotus-miner run &
执行以下两个命令
lotus-miner info
lotus-miner storage-deals list
如果没有任何报错,基本上可以确定是成功的 最后建议大家给自己的markets节点发起一笔存储订单测试,以确保分离后的各项功能是正常的
如果你最终更改了你的接受订单的外网地址,请执行以下命令更新
lotus-miner actor set-addrs <NEW_MULTIADDR>
获取markets节点的API连接信息
lotus-miner --call-on-markets auth api-info --perm admin
输出结果类似:
MARKETS_API_INFO=eyJhXXX:/ip4/192.168.0.105/tcp/2345/http
请把这个变量导入到你的mining/sealing/proving节点中,不然你在执行lotus-miner info的命令时会遇到如下报错
ERROR: could not get API info for Markets: could not get api endpoint: API not running (no endpoint)
当前部分配置项,需要子系统全部配置才能生效,为了保证配置的统一,在修改Miner配置的时侯,请确保所有子系统的配置是相同的,例:
[Addresses]
PreCommitControl = ["f00XX1"]
CommitControl = ["f00XX2"]
TerminateControl = []
DealPublishControl = ["f00XX3"]
DisableOwnerFallback = false
DisableWorkerFallback = false
如果你配置了DealPublishControl
,在所有子系统都要配置。
已经创建了关于分离存储市场的讨论话题,可以在这里互相交流,解决分离子系统中遇到的问题
lotus-miner version 1.11.1-rc2+git.40449f1cc.dirty
Linux nerpa-miner 5.11.0-25-generic #27-Ubuntu SMP Fri Jul 9 23:06:29 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux.