火星链 火星链
Ctrl+D收藏火星链
首页 > DOT > 正文

HELLO:精通Filecoin:Filecoin 源码之 Hello 协议

作者:

时间:1900/1/1 0:00:00

当调用Filecoin全节点的

start方法启动全节点时,调用hello协议的

New方法,这个方法的处理如下:

生成Hello对象。hello?:=?&Handler{

????host:??????????????h,

????genesis:???????????gen,

????chainSyncCB:???????syncCallback,

????getHeaviestTipSet:?getHeaviestTipSet,

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

????commitSha:?????????commitSha,

}

其中host对象为底层libp2提供的Host对象;genesis为创世区块的CID;chainSyncCB为全节点对象的syncCallBack函数,用于从远程节点同步区块;getHeaviestTipSet为porcelain.API对象的ChainHead方法,用于返回区块链头部的tipset;net表示当前的网络环境,比如测试网、正式网;

调用host对象的SetStreamHandler方法,设置自身的handleNewStream方法作为/fil/hello/1.0.0协议的处理器。h.SetStreamHandler(protocol,?hello.handleNewStream)

吴磊:传统企业能通过元宇宙技术数字转型拥有再造血的能力:5月29日消息,中国民协元宇宙工委会大湾区副秘书长、元科技有限公司(中国香港)股东合伙人,Da Age Co-Founder吴磊在演讲中表示,元科技有限公司跟香港政府一直在对接,我们也跟香港政府的投资推广署对接过一些落地的方案, 怎么把传统企业通过数字转型拥有一个再造血的能力,他们的收入会比以前更高。通过这些元宇宙技术吸引眼球,从AI的沉浸式技术,再到XR的虚拟现实的增 强,我们把这些收入变成一块一块的虚拟资产,分割出来。

通过几个元宇宙不同的技术结合,把商家的需求完全的解决。我们未来可能会孵化 5——10 个同等级别的项目,都是通过一些元宇宙、VR、AR、MR、XR的技术,怎么把传统行业重新赋能,让他们重新拥有造血能力。再把这些好回报的营收分割成不同的虚拟资产, 实现Da Age分布式资产新时代。[2023/5/30 9:49:34]

当连接建立时,通过后面注册的通知者,从而调用sayHello方法,在这个方法中打开一个hello协议的流,并发送hello消息。

调用Host对象的网络对象的Notify方法,把自身作为被通知者注册到网络对象上。h.Network().Notify((*helloNotify)(hello))

在这一步,通过调用host对象的Network方法,返回底层的swarm对象,然后把hello对象转化为helloNotify对象,最后调用swarm对象的Notify方法,从而当底层的swarm对象有任何事件发生时都会通知helloNotify对象。

研究:政府对Meta公司用户数据最感兴趣:金色财经报道,Meta、苹果、谷歌和微软经常被指控收集和出售其用户的个人数据。根据Surfshark 的一项新研究表明,全球政府对此类个人用户数据的请求正在增加。该研究的重点是从 2013 年到 2021 年的时间段,其中 2020 年同比增长 38% 最为突出,其次是 2021 年增长 25%。

Meta、微软、苹果和谷歌是调查期间考虑的四家大型科技公司,其中 Meta 是政府当局最感兴趣的账户。Meta 托管的五个帐户中有两个在研究期间被请求 (660 万)。 60% 的请求来自美国和欧洲当局。美国要求每 100,000 名用户的帐户数量是欧盟所有国家加起来的两倍多。[2023/3/30 13:35:42]

在Hello协议中我们只关心建立连接事件,所以helloNotify类型只实现了这个方法,其他方法都为空实现,具体如下:

type?helloNotify?Handler

func?(hn?*helloNotify)?hello()?*Handler?{????return?(*Handler)(hn。

const?helloTimeout?=?time.Second?*?10

func?(hn?*helloNotify)?Connected(n?net.Network,?c?net.Conn)?{????go?func()?{????????ctx,?cancel?:=?context.WithTimeout(context.Background(),?helloTimeout)????????defer?cancel()????????p?:=?c.RemotePeer()????????if?err?:=?hn.hello().sayHello(ctx,?p);?err?!=?nil?{????????????log.Warningf("failed?to?send?hello?handshake?to?peer?%s:?%s",?p,?err)????????}????}(。

黑山司法部长:美国和韩国都正寻求引渡Do?Kwon:金色财经报道,黑山司法部长表示,美国和韩国都正在寻求引渡Terra币创始人Do?Kwon。[2023/3/29 13:33:42]

当节点作为客户端,拨号连接到远程对等节点时,底层的swarm对象会调用自身的notifyAll方法,通知所有的Notify对象有连接被打开,即调用所有Notify对象的Connected方法,包括前面我们注册的通知对象。当调用helloNotify对象的Connected方法时,这个方法内部调用自身的hello方法,后者返回自身并强制转化为Handler类型,然后调用它的sayHello方法,对我们当前连接的远程进行打招呼。

与此同时,当远程节点作为服务器,接收到我们发送的连接请求生成连接时,它的swarm对象也会通知它的所有Notify对象,从而也会它的前面注册的通知对象,即调用服务器商的Connected方法,从而调用它的sayHello方法向我们发送它的区块情况;因为第二步中,我们把Hello对象的handleNewStream方法注册为Hello协议的处理器,所以当节点接收到远程节点发送区块情况时,就会调用这个方法进行处理,这个方法又会调用调用全节点的syncCallBack方法进行区块同步处理。

总体上来说,Hello协议通过

比特币软件开发商Galoy完成400万美元融资,Hivemind Ventures领投:8月3日消息,比特币银行软件开发商Galoy完成400万美元融资,Hivemind Ventures领投, Valor、Kingsway Capital 和AlphaPoint等参投。

Galoy 由 Nicolas Burtey 和 Chris Hunter 于 2019 年共同创立,提供了一套工具,使商家和消费者能够使用闪电网络进行支付,并为比特币本地银行服务创建工具。?[2022/8/3 2:57:04]

sayHello和

handleNewStream开启了区块同步,前者把自身的区块情况发送到远程节点,后者处理远程节点发送的区块情况。

sayHello方法处理如下:

调用Host对象的NewStream,生成一个处理Hello协议的流对象。s,?err?:=?h.host.NewStream(ctx,?p,?protocol)

if?err?!=?nil?{

????return?err

}

defer?s.Close()?//?nolint:?errcheck

调用自身的getOurHelloMessage方法,获取自身区块链顶端的信息。msg?:=?h.getOurHelloMessage()

美国吉他制造商Fender与Meta合作推出音乐元宇宙Stratoverse:6月23日消息,美国吉他制造商Fender与Meta合作推出了一个音乐元宇宙空间Fender Stratoverse,内置于Meta的VR社交平台Horizon Worlds中,用户可以探索一个吉他形状的岛屿,其中包含一些互动游戏和活动。

用户可探索岛上的琴颈、琴身和琴头并收集不同的独特音频,完成寻宝游戏还可解锁定制可穿戴设备。(Guitar World)[2022/6/23 1:26:34]

这个方法内部执行流程如下:

调用自身getHeaviestTipSet方法,获取区块链顶端的信息这个方法是plumbing.API对象ChainHead方法的引用。

使用获取到的区块链信息,生成并返回消息对象Message。

通过流发送区块信息到远程节点。

handleNewStream方法处理如下:

生成消息对象Message,并从流中读取远程对等节点发送过来的内容到消息对象中。var?hello?Message

if?err?:=?cbu.NewMsgReader(s).ReadMsg(&hello);?err?!=?nil?{

????log.Debugf("bad?hello?message?from?peer?%s:?%s",?from,?err)

????helloMsgErrCt.Inc(context.TODO(),?1)

????s.Conn().Close()?//?nolint:?errcheck

????return

}

调用自身的processHelloMessage方法,处理远程节点发送的消息。这个方法代码如下:func?(h?*Handler)?processHelloMessage(from?peer.ID,?msg?*Message)?error?{

????if?!msg.GenesisHash.Equals(h.genesis)?{

????????return?ErrBadGenesis

????}

????if?(h.net?==?"devnet-test"?||?h.net?==?"devnet-user")?&&?msg.CommitSha?!=?h.commitSha?{

????????return?ErrWrongVersion

????}

h.chainSyncCB(from,?msg.HeaviestTipSetCids,?msg.HeaviestTipSetHeight)

return?nil

}

它的处理逻辑比较简单:

首先,检查远程节点发送的创世区块哈希是否自身的创世区块哈希相等。如果不等,直接返回错误。

然后,检查网络类型。

最终,调用自身的chainSyncCB方法,处理远程节点发送的区块信息。这个同步回调方法对象在全节点的启动方法Start中生成。它的主要生成就是根据远程节点发送的区块链最顶层的信息,生成一个types/SortedCidSet对象,然后调用chain/syncer.go中的HandleNewTipset方法来处理远程发送的区块信息。

根据前面处理消息的结果进行不同的处理。switch?err?:=?h.processHelloMessage(from,?&hello);?err?{

case?ErrBadGenesis:

????log.Debugf("genesis?cid:?%s?does?not?match:?%s,?disconnecting?from?peer:?%s",?&hello.GenesisHash,?h.genesis,?from)

????genesisErrCt.Inc(context.TODO(),?1)

????s.Conn().Close()?//?nolint:?errcheck

????return

case?ErrWrongVersion:

????log.Debugf("code?not?at?same?version:?peer?has?version?%s,?daemon?has?version?%s,?disconnecting?from?peer:?%s",?hello.CommitSha,?h.commitSha,?from)

????versionErrCt.Inc(context.TODO(),?1)

????s.Conn().Close()?//?nolint:?errcheck

????return

case?nil:?//?ok,?noop

default:

????log.Error(err)

}???

标签:HELHELLOELLOOTIHELP币Hello KittyAgrelloMotion

DOT热门资讯
ITA:Galaxy Digital和XBTO参与,Bakkt比特币期权合约完成首笔大宗交易

洲际交易所刚刚宣布了新推出的Bakkt比特币月度期权合约的首笔大宗交易完成。根据公告,这个Bakkt比特币期权在到期前两天结算为比特币月度期货合约.

1900/1/1 0:00:00
OIN:加密货币局是新瓶装旧酒?Tyler Winklevoss教你如何一眼看穿

写在前面:本文为加密货币交易所Gemini创始人之一TylerWinklevoss在问答网站Quora上的回复.

1900/1/1 0:00:00
XRP:Twitter 精选|又双叒叕解锁10亿XRP?你对瑞波放水误解太深

作者:三月既望来源:公众号野花说01以太坊网络生态现状,伊斯坦布尔升级在即以太坊联合创始人JosephLubin转推了Consensys发布的有关以太坊网络活动、DeFi和其他统计数据的文章.

1900/1/1 0:00:00
区块链:观点 | “产业区块链化”为必由之路 数字资产领域将产生超级企业

本文来源:证券日报,有删减作者:邢?萌对于区块链如何赋能实体经济,社会涌现出多个实践路径,中国通信工业协会区块链专业委员会发起的“链改”行动则是一股重要的力量.

1900/1/1 0:00:00
UND:巴比特现场 | 政策火热,Tokenfund遇冷,2020年区块链的投资机会在哪里?

巴比特讯,12月3日,“2019CAN大会·万物互链,区块链与全球经济新格局”在杭州举行。在下午的圆桌论坛中,FBG资本创始人周硕基、了得资本创始人易理华、时戳资本创始人李宗乘、分布式资本合伙人.

1900/1/1 0:00:00
联盟链:科普 | 数据隐私保护机制+区块链应用场景大盘点

本文为万向区块链蜂巢学院公开课第六课上的课程内容。导师谢红军在区块链和密码学技术研究方面有着丰富经验.

1900/1/1 0:00:00