月亮链 月亮链
Ctrl+D收藏月亮链

ELLO:精通Filecoin:Filecoin 源码之 Hello 协议_Advanced United Continent

作者:

时间: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)

Uniswap Labs:Base在3天内成为Uniswap上交互次数最多的链之一:金色财经报道,Uniswap Labs发布推文称,在短短3天内,Base成为Uniswap应用程序上交互次数最多的链之一。

金色财经此前报道,Uniswap于8月8日部署至Base,集成上线一天之内,Uniswap(特别是V3)就在Base上记录了超过11,700笔交易和约365万美元的交易量。[2023/8/11 16:19:39]

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

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

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

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

以太坊开发人员考虑将验证者限制从32ETH提高到2048ETH:6月19日消息,在周五举行的最近一次以太坊核心开发者共识会议上,以太坊基金会研究员兼拟议变更的主要支持者 Michael Neuder 提出将每个验证者的最大验证者余额从 32 ETH 提高到 2,048 ETH。他说,虽然目前(32 ETH)的验证者上限促进了去中心化,但它无意中导致了验证者集规模的膨胀。Neuder 表示,提高上限可能会减缓活跃验证者集的扩张——最终提高网络在单个以太坊时隙内实现最终性方面的效率。提议的增加上限还将引入自动复合验证器奖励的可能性。[2023/6/19 21:47:47]

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)????????}????}(。

纽约梅隆银行聘请Zodia Custody前CEO担任数字资产产品负责人:金色财经报道,纽约梅隆银行(BNY Mellon)聘请 Zodia Custody 前首席执行官 Maxime de Guillebon 担任数字资产产品负责人,并任命 BlockFi 前员工 Rachel Willis 为数字资产部门参谋长(Chief of Staff)。[2023/4/19 14:11:58]

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

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

Messari:2022年Balancer锁仓量下降57%:1月10日消息,加密分析公司Messari发布《2022四季度Balancer状态报告》。数据显示,四季度Balancer在以太坊上的锁仓量下降了10%,但是在Polygon、Arbitrum和Optimism上的锁仓量却分别增加了42%、71%和20%,这些Layer 2上的锁仓量增长大部分归功于来自Lido和Rocket Pool的外部激励,这两个DeFi协议在Arbitrum和Optimism链上Balancer流动性池锁仓量中占比达到约50%。

纵观整个2022 年,Balancer总锁仓量下降了57%,但表现仍好于整体加密货币市场和其他DeFi协议,其跌幅小于竞争对手Uniswap(-61%)、Sushiswap(-90%)和Curve(-84%)。[2023/1/10 11:04:11]

总体上来说,Hello协议通过

sayHello和

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

sayHello方法处理如下:

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

比特币百万富翁的数量在今年前三季度下降70%:金色财经报道,根据Finbold汇编的数据,由于熊市,比特币百万富翁的数量在2022年前三季度下降了70.23%,截至2022年9月28日,比特币百万富翁的总数低至29497人。根据BitInfoCharts.com提供的统计数据,25395个不同地址的比特币余额超过100万美元,在第三季度末,另有4102个地址的比特币余额总和约为1000万美元或以上。[2022/10/31 11:58:44]

if?err?!=?nil?{

????return?err

}

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

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

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

调用自身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)

}???

标签:ELLOHELHELLOCONHello Art TokenMagicTheLeagueCoinHELLO LabsAdvanced United Continent

比特币价格热门资讯
比特币:大盘凌晨爆拉回吐,主力反复洗筹_GHT

作者|哈希派分析团队彭博加密报告:比特币将在今年下半年跑赢大盘:8月6日消息,彭博分析师Mike McGlone在彭博8月加密货币展望报告中表示,比特币将在今年下半年跑赢大盘.

1900/1/1 0:00:00
区块链:美剧《硅谷》大结局 :一次区块链扩容引发的危机_比特币

作者:胡鹏,来源:?一块Plus社区本文讲述了作者在观影美剧《硅谷》后对区块链、AI等前沿技术发展的思考。美剧《硅谷》终于迎来了大结局,看完让我唏嘘不已.

1900/1/1 0:00:00
区块链:走向应用爆发前夜:区块链技术加速落地还差什么?_比特币

来源:21世纪经济报道作者:骆轶琪区块链作为底层技术的一种,在政策风向的支持下,正吸引越来越多应用落地的探索.

1900/1/1 0:00:00
数字货币:巴比特原创 | 22年后重返证监会,姚前“回归”为何值得关注?_WHALECOM

12月11日,据财经网、财新网、第一财经等多家媒体确认,中国证券登记结算有限责任公司总经理姚前已于上周赴证监会任职,并有望出任证监会科技监管局局长.

1900/1/1 0:00:00
区块链:区块链如何变革银行业?一文尽览国有银行的区块链之路_联盟链

巴比特讯,12月7日-8日,由中国科学院学部主办,中国信息通信研究院等单位联合支持的“区块链技术与应用”科学与技术前沿论坛在深圳举行.

1900/1/1 0:00:00
区块链:央行数字货币研究所狄刚:区块链正形成新的数据孤岛,跨链是方向_CBD

来源:互链脉搏“当前区块链项目都是独立封闭体系,彼此无法连通,旧的孤岛消失了,又产生了新的孤岛。”?中国人民银行数字货币研究所副所长狄刚表示.

1900/1/1 0:00:00