STA:精通 Filecoin:Lotus 真实数据处理之 Client 初始化

前言

随着Filecoin/Lotus公链越来越接近启动,真实数据的处理也越来越重要了。根据官方的设计,真实数据的有效算力是自填自挖算力的10倍,鉴于真实数据的比重是如此之在,从今天起,我们就来了聊下真实的相关处理情况,今天为本部分的第一篇。

当前情况下官方的机器人会给存储矿工发送经过验证的真实数据,未来随着基础设施的完善,也会有其他方式来发送真实数据,比如客户端自己指定某个矿工来发送数据。接下来我们从客户端开始来研究下Lotus是怎么处理真实数据。

当客户端要存储真实数据时,他会调用lotusclientdealdataCidminerIdpriceduration命令发送数据到指定的矿工。

正文

当Lotusdaemon接收到这个请求之后就开始了交易处理。Lotusdaemon会调用go-file-markets类库的StorageClient对象对交易进行处理。

PayPal为消费者加密支付提供5万美元的自愿Reg E保险:5月2日消息,PayPal 高级副总裁 Jose Fernandez da Ponte 在接受 Consensus 宣布新产品的采访时表示,PayPal 将为消费者进行的加密货币交易提供高达5万美元的自愿Reg E保险。上月底,PayPal宣布将向Venmo客户提供加密转账服务。PayPal 是第一家承诺对用户因未经授权的加密货币转账而产生的任何损失进行赔偿的公司。

Reg E是指E条例,这是美国的一项联邦法规,规定了与“电子资金转账”(EFT)有关的消费者保护措施。[2023/5/2 14:38:34]

因为StorageClient对象被LotusAPI对象所依赖,所以在启动Lotus的过程中,DI容器会调用StorageClient函数来创建它。

StorageClient函数流程如下:

Circle披露对FTX的敞口为1060万美元:11月16日消息,据外媒报道,Circle在一份新的监管备案文件中表示,FTX的崩溃和USDC在币安上的自动转换将导致Circle的业绩“大幅低于”2月份做出的预期。Circle在监管文件中披露,Circle首席执行官Jeremy Allaire上周在推特上提到的持有“微小”FTX股权是该公司对FTX集团的1060万美元投资。Circle在其修改后的S-4文件中写道,公司将在出现减值迹象的报告期内确认其FTX投资的减值,公司已暂停与FTX集团的服务和交易,并正在评估对未来向FTX集团提供服务的影响以及FTX集团破产可能造成的间接财务影响。

该媒体称此前Circle不披露FTX的具体风险敞口是因为该公司倾向于不披露其在其他项目上的投资金额。Circle的一名发言人表示,虽然Allaire知道Circle在FTX的投资金额,但他不想在上周的推特中透露这个数字,他在推特中谈到了Circle与FTX的关系。(Decrypt)[2022/11/16 13:10:53]

调用NewFromLibp2pHost函数,生成StorageMarketNetwork对象。net?:=?smnet.NewFromLibp2pHost(h)

HyperPay新版本发布,Web3钱包增加安全检测中心:据官方消息,HyperPay钱包发布V5.0.9版本,在该版本中新增安全中心功能,提供环境检测、代币安全检测和授权检测三项安全监测功能,另外授权检测模块还提供了修改/取消授权的功能;自管钱包全新升级,HyperPay Web3钱包支持33+公链和主流公链DApp,优化了助记词导入/创建流程,满足用户更多使用需求,并将支持更多公链NFT资产查询及转账功能,Web3钱包发现版块上线\"A or B\"功能。[2022/8/25 12:47:57]

调用NewClient函数,生成Client对象。c,?err?:=?storageimpl.NewClient(net,?ibs,?dataTransfer,?discovery,?deals,?scn,?storageimpl.DealPollingInterval(time.Second))

前美联储官员Lee Reiners呼吁监管机构取缔加密货币:6月29日消息,根据Business Insider发表的一篇文章,前纽约联邦储备银行官员Lee Reiners认为,监管机构应该禁止加密货币。目前在杜克大学法学院担任教授的Reiners认为,在比特币在高通胀到来之时未能表现出“数字黄金”的特性之后,目前的加密货币崩盘是“合理的”。

Reiners表示,加密货币迄今为止最大的牛市完全是由央行的超宽松货币政策推动的,这种政策导致了过度投机。现在,美联储已经开始快速加息以遏制通胀,比特币和其他风险资产的表现都不佳。(U.Today)[2022/6/29 1:39:57]

scn即node对象,也是环境对象返回的节点对象,这个对象是ClientNodeAdapter对象由DI容器调用NewClientNodeAdapter函数而创建。

NewClient函数内容如下:

生成两个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},

????c.dispatch,

)

c.statemachines?=?statemachines

fsm状态组对象使用的配置参数如下:return?fsm.New(ds,?fsm.Parameters{

????Environment:?????env,

????StateType:???????storagemarket.ClientDeal{},

????StateKeyField:???"State",

????Events:??????????clientstates.ClientEvents,

????StateEntryFuncs:?clientstates.ClientStateEntryFuncs,

????FinalityStates:??clientstates.ClientFinalityStates,

????Notifier:????????notifier,

})

环境对象为clientDealEnvironment。

状态对象为ClientDeal。

状态字段为State。

事件集合为ClientEvents,参考storagemarket/impl/clientstates/client_fsm.go文件。

状态处理函数集合为ClientStateEntryFuncs,状态机的状态处理器根据对应的状态获取到指定的函数进行处理。

终止状态集合为ClientFinalityStates。

通知对象为Client对象的dispatch方法。

使用配置选项,配置Client对象。c.Configure(options...)

设置数据传输监听对象。dataTransfer.SubscribeToEvents(dtutils.ClientDataTransferSubscriber(statemachines))

当传输结束、传输错误时会发送ClientEventDataTransferComplete、ClientEventDataTransferFailed等事件到fsm状态组。

返回Client对象。

在DI容器的OnStart钩子函数中调用Client对象的Start方法。Start方法调用自身的restartDeals方法开始进行重新交易。

返回Client对象。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:15ms0-1:598ms