随着 Filecoin/Lotus 公链越来越接近启动,真实数据的处理也越来越重要了。根据官方的设计,真实数据的有效算力是自填自挖算力的 10倍,鉴于真实数据的比重是如此之在,从今天起,我们就来了聊下真实的相关处理情况,今天为本部分的第一篇。
当前情况下官方的机器人会给存储矿工发送经过验证的真实数据,未来随着基础设施的完善,也会有其他方式来发送真实数据,比如客户端自己指定某个矿工来发送数据。接下来我们从客户端开始来研究下 Lotus 是怎么处理真实数据。
当客户端要存储真实数据时,他会调用lotus client deal dataCid minerId price duration命令发送数据到指定的矿工。
正文当 Lotus daemon 接收到这个请求之后就开始了交易处理。Lotus daemon 会调用 go-file-markets 类库的StorageClient对象对交易进行处理。
因为StorageClient对象被 Lotus API 对象所依赖,所以在启动 Lotus 的过程中,DI 容器会调用StorageClient函数(node/modules/client.go)来创建它。
StorageClient函数流程如下:
调用NewFromLibp2pHost函数,生成StorageMarketNetwork对象。
net:=smnet.NewFromLibp2pHost(h)调用NewClient函数,生成Client对象。
c,err:=storageimpl.NewClient(net,ibs,dataTransfer,discovery,deals,scn,storageimpl.DealPollingInterval(time.Second))scn即node对象,也是环境对象返回的节点对象,这个对象是ClientNodeAdapter对象(markets/storageadapter/client.go)由 DI 容器调用NewClientNodeAdapter函数而创建。
NewClient函数内容如下:
环境对象为clientDealEnvironment。
状态对象为ClientDeal。
状态字段为State。
事件集合为ClientEvents,参考 storagemarket/impl/clientstates/client_fsm.go 文件。
状态处理函数集合 为ClientStateEntryFuncs,状态机的状态处理器根据对应的状态获取到指定的函数进行处理。
终止状态集合为ClientFinalityStates。
通知对象为Client对象的dispatch方法。
生成两个 IO 对象。
carIO:=cario.NewCarIO()pio:=pieceio.NewPieceIO(carIO,bs)生成Client对象。
c:=&Client{net:net,dataTransfer:dataTransfer,bs:bs,pio:pio,discovery:discovery,node:scn,pubSub:pubsub.New(clientDispatcher),pollingInterval:DefaultPollingInterval,}生成 fsm 状态组对象。
statemachines,err:=newClientStateMachine(ds,&clientDealEnvironment,c.dispatch,)c.statemachines=statemachinesfsm 状态组对象使用的配置参数如下:
returnfsm.New(ds,fsm.Parameters{Environment:env,StateType:storagemarket.ClientDeal{},StateKeyField:"State",Events:clientstates.ClientEvents,StateEntryFuncs:clientstates.ClientStateEntryFuncs,FinalityStates:clientstates.ClientFinalityStates,Notifier:notifier,})使用配置选项,配置Client对象。
c.Configure(options...)设置数据传输监听对象。
dataTransfer.SubscribeToEvents(dtutils.ClientDataTransferSubscriber(statemachines))当传输结束、传输错误时会发送ClientEventDataTransferComplete、ClientEventDataTransferFailed等事件到 fsm 状态组。
返回Client对象。
在 DI 容器的OnStart钩子函数中调用Client对象的Start方法。Start方法调用自身的restartDeals方法开始进行重新交易。
返回Client对象。
Filecoin獨立協議Lotus發布v1.15.0
精通Filecoin:Lotus真实数据处理之Provider处理存储
精通Filecoin:Lotus真实数据处理之Client处理存储
锚定Filecoin算力,SFIL如何打破挖矿行业“黑匣子”?
标准算力通证SFIL:重新定义Filecoin挖矿新玩法
配置分析:Filecoin矿机需要那些硬件配置?
AscendEX 将独家首发去中心化招聘平台 Freela 代币 FREL 并开启拍卖活动
音乐 NFT 平台 Mozik 完成数百万美元融资,并将在 Ignition 和 BSCpad 开启 IDO
DeFi 智能理财平台 SIL.Finance 完成 130 万美元私募轮融资
互动内容创作平台 Playcent 完成 100 万美元融资,将于 3 月 7 日在 Poolz 上进行 IDO
Filecoin 更新 Forest、Fuhon、Venus 和 Lotus 四大独立协议的项目进展
Filecoin 官方:网络将进行两次重大升级
算力币 2.0 赛道项目 BEST 完成私募轮融资,DuckDAO 等参投
Filecoin 发布首个备用实现 Lotus,已实现挖矿和存储等协议核心功能
DeFi 衍生品平台 Deri Protocol 新增三家投资者
Filecoin 客户端 Lotus 将于 3 月 3 日进行强制性升级 V1.5.0
Filecoin 官方回应:团队正与相关交易所合作解决 Lotus API 的正确使用问题



