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

前言

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

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

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

正文

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

动态 | Fcoin社委会正与张健探讨重启方案:Fcoin发布官方公告称,社委会与张健正在探讨重启方案,后续将根据进程逐步向社区第一时间披露。[2020/2/21]

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

StorageClient函数流程如下:

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

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

声音 | 张建:Fcoin停摆当日曾打电话给李林求助:Fcoin创始人张建刚刚通过公告表示:Fcoin停摆当日,为了不给大家留下遗憾,我还是打了一个电话给两年都没联系的李林。毕竟是多年的老同事,信任关系还是在,所以我一上来就告诉了他真实的原因(只是没本文这么细致),然后讨论下可能的解救方案,结果和我预想的完全一样。因为我知道,如果李林答应救助,那火币就不可能有今日,也不可能有明天。当天如果我换成是他,我也应该和会做同样的决定。[2020/2/17]

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

NewClient函数内容如下:

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

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

分析 | FCoin存放代币的新地址上ERC20代币暂未转账:就业界关心的FCoin交易所系统问题,北京链安Chainsmap监测系统发现,即将其ETH和ERC20代币从原有热钱包地址转账到新地址后,FCoin热钱包原有的EOS,波场链上的TRC20代币也已经转移到新的地址,目前来看在新地址中尚未转出。

与此同时,FCoin存放ETH和ERC20代币的新地址上,ERC20代币暂未转账,但是已经有1000ETH打入到一个疑似新的出币地址,并紧接着有两笔相对小额的ETH转出。[2020/2/14]

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

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

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

????bs:??????????????bs,

公告 | FCoin:已开始处理提现申请:FCoin刚刚发布开始处理提现申请的公告。公告指出,FCoin已经开始处理用户邮件的提现申请。具体的步骤为:

1. 我们收到用户的提现申请。

2. 进行基本信息核查和资产核对工作。

3. 发出提现确认码。

4. 收到用户的提现确认。

5. 验证用户资产完整性和具体数额。

6. 进行提现操作。

7. 用户收到相关提现币种。[2020/2/13]

????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对象。

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

金智博客

XLM比特币“明庄”灰度_MEX:EFI

作为首支主动接受SEC监管的加密数字货币基金,灰度的举动备受关注。尤其今年年初以来,灰度旗下的比特币信托(GBTC)表格10生效,开始按照SEC标准进行信息披露,管理规模不断创新高,灰度这头“巨.

[0:15ms0-6:712ms