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

前言

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

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

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

正文

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

新加坡星展银行启动e-CNY收款平台:金色财经报道,根据周三的公告,新加坡星展银行的客户现在可以用中国央行的数字货币(CBDC)e-CNY收取客户的付款。新推出的商户收款平台允许企业将e-CNY自动结算到其银行存款账户。星展银行补充说,至少有一个客户已经使用这个平台进行了交易。

星展银行正在参与新加坡金融管理局发起的Project Guardian项目,这是一个为传统银行测试资产代币化和去中心化金融(DeFi)的项目。该银行也在参与实验,以建立发行可编程数字新加坡元所需的基础设施。[2023/7/5 22:18:56]

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

StorageClient函数流程如下:

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

外媒:香港金融监管机构本周讨论了如何解决加密公司开设银行账户面临的挑战:6月16日消息,据彭博社援引知情人士报道,香港金融监管机构已于本周一召集银行、加密平台和其他行业参与者在一起,主要讨论如何解决加密公司在开设银行账户方面面临的持续挑战。这是香港监管机构自 4 月下旬以来第二次推动银行更多参与加密领域的会议。[2023/6/16 21:41:23]

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

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

DeSo区块链宣布推出稳定币 DesoDollar:金色财经报道,DeSo区块链宣布推出1:1法定支持的稳定币 DesoDollar。DAODAO 是 DeSo 生态系统中第一个利用 DesoDollar 的应用程序,它允许创始人通过 USDC 为其创业公司筹集资金。??[2022/10/19 16:30:20]

NewClient函数内容如下:

生成两个IO对象。carIO?:=?cario.NewCarIO()

pio?:=?pieceio.NewPieceIO(carIO,?bs)

生成Client对象。c?:=?&Client{

????net:?????????????net,

????dataTransfer:????dataTransfer,

Change宣布完成500万美元的种子轮融资:金色财经报道,Web3慈善捐款初创公司Change宣布完成500万美元的种子轮融资,以进一步参与加密领域。Freestyle和NEA领投,Shrug Capital以及来自Solana、Alchemy和Dapper Labs的天使投资人参投。

Change 表示,它目前致力于为超过 200,000 个不同的认可慈善机构提供资金,包括 Make-A-Wish America 和总部位于纽约的 Welcome to Chinatown,尽管 Nigam 和 Shah 拒绝透露这家初创公司今天与多少客户合作或资金数额流经其 API。[2022/7/11 2:05:45]

????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:195ms