链资讯 链资讯
Ctrl+D收藏链资讯
首页 > 波场 > 正文

以太坊:精通Filecoin:Filecoin 源码之 Hello 协议_HELLO币

作者:

时间:

当调用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)

精选 | 肖磊:USDT信用风险不亚于其他币种的价格风险:金色财经独家采访数字货币分析师肖磊,针对今日USDT事件,肖磊表示,USDT背后是有美元资产的,目前我们不能确定的是比例关系,所以完全崩盘的可能性也不大,如果公布出来资产只有10亿美金,那么USDT的价格可能要跌去二分之一,因为目前的市值是20亿美金。USDT虽然是稳定币,但存在信用风险和系统风险,这种风险不亚于其他币种的价格风险,因此虽然USDT不会归零,但如果出现巨大的挤兑风险,信用机制丧失,可能价格会出现一个明显的下跌。稳定币跟法币的兑换并没有建立起来一个顺畅的机制,因此USDT一旦出现信用危机,首先投资者会将其兑换成比特币、以太坊等数字货币,而不是美元,从而导致比特币等价格的大幅上涨。市面上的稳定币规模都比较小,要给市场带来信用层面的冲击,还不足够,这就像一个人,想让病感染,首先病的浓度得足够,目前除了USDT,其他的稳定币还谈不上系统性影响。目前我更看好资产比较透明的稳定币,非透明的稳定币确实存在很大的信任问题,就是一颗定时炸弹。[2018/10/15]

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

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

精选 | 英国部长:对于区块链,监管机构已经纳入新的安全机制:据Ambcrypto报道,英国数字、文化、媒体和体育部(DCMS)部长玛戈特·詹姆斯(Margot James)在最近于伦敦举行的“Blockchain Live 2018”活动上担任主要发言人。在活动中,她讨论了政府对区块链技术的立场以及该技术的广泛使用案例。玛戈特·詹姆斯表示,英国政府完全致力于鼓励本国开发和采用新技术。此外,詹姆斯还引用了英国金融行为监管局(FCA)关注区块链技术的例子。她表示,监管机构已经纳入了一种安全机制,在这种机制中,他们着手在实际市场中测试产品和服务,并建立相应的“保障措施”。玛戈特·詹姆斯还强调要了解区块链技术的重要性,表示要将眼光放在金融部门之外的应用区块链技术。[2018/10/4]

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

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

type?helloNotify?Handler

精选 | 悉尼开发商用加密货币出售其1000公顷的土地:悉尼开发商Tower Holdings表示,他正在使用加密货币出售其1000公顷的土地。昆士兰州政府希望该项目能推动耗资60亿澳元的珊瑚礁旅游业,并重振岛屿社区。Tower Holdings首席执行官安东尼?艾奥萨(Anthony Aiossa)表示:“自金融危机以来,筹集资金一直很困难。”“现在有一个财团与我们接洽,计划使用区块链技术为开发提供资金。”带领该集团的PropertyBay公司计划先向机构投资者发售由土地支持的代币,然后向散户投资者开放代币交易。开发商们表示,这些代币将允许人们买卖这笔投资。[2018/10/4]

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

精选 | 国美金融发布区块链延保白皮书 落地区块链技术应用:近日,国美金融发布区块链白皮书——《区块链延保服务应用白皮书》。国美金融基于对业务场景和用户的充分了解,抓准延保行业痛点,结合区块链技术特性提出解决方案。在白皮书中,详尽介绍了利用区块链分布式记账、不可篡改等特性,从横向场景衔接到纵向流程衔接,可实现大幅提升延保服务从产品定制、业务受理到售后维修等各环节的服务效率。目前,国美金融已将区块链技术应用于延保服务场景。原中国保监会副主席魏迎宁在参与白皮书研讨过程中指出,区块链技术可以重塑保险的诚信基础,保险行业和区块链技术有着天然的结合优势。国美金融总裁陈伟指出,区块链技术归根到底是一项底层技术,最大的价值在于服务实体经济社会发展的上层应用。[2018/9/29]

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

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

精选 | 车臣将建立加密采矿池以整合欧亚经济联盟的加密矿工资源:据news.bitcoin消息,车臣首席新闻秘书阿尔维卡里莫夫于9月21日向RBC新闻媒体证实,将在车臣共和国建立一个欧亚加密采矿池。该矿池将是实施“加密车臣”计划的第一步,该计划旨在利用区块链技术发展该地区的经济,同时也整合欧亚经济联盟国家的加密矿工的资源。[2018/9/23]

总体上来说,Hello协议通过

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()

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

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

}???

标签:以太坊HELHELLOELLO以太坊价格今日行情美元兑人民币HELP价格HELLO币Swello

波场热门资讯
FIL:基于IPFS的Filecoin测试网已上线,新一轮机遇来袭?_bitcoin-cash

来源:小葱区块链 12月12日凌晨2点左右,几经延期的Filecoin测试网终于上线。作为基于IPFS分布式存储和传输协议的首个也最重要的应用,Filecoin旨在为IPFS提供强大的激励刺激,

FIL:“比特币巨鲸”灰度公司2019年动作不断,预示2020年或有巨变?_COIN

原创:一棵杨树 来源:白话区块链 寒冬凛冽,在存量市场持续萎靡不振的情况下,行情转暖乃至整个行业后续爆发的希望,都被寄托于主流投资者和机构资金的入场上.

FIL:精选 | 杀不死以太坊的历史十大灾难;DeFi如何蚕食PoS安全性_ECO

今天内容包括: 1、杀不死以太坊的历史十大灾难。2、去中心化金融世界中的网络效应。3、以太坊与比特币的经济应用。4、Atomex-基于原子交换技术的去中心化交易所.

HELLO:数据:过去2年,稳定币项目已经获得超2亿美元风险投资_Handle

世界是否需要更多的稳定币?根据风险投资家的说法,是的,他们在开发稳定或低波动性数字资产的项目中投入了数亿美元.

区块链:在量子计算机面前,区块链一钱不值?量子计算机何时能摧毁区块链?_Neverend Ecentralization Filecoin

原创作者:千里眼社区——kangero11月6日下午,华为在深圳总部举行与任正非咖啡对话。当讨论到信息安全问题时,任正非表示,信息安全问题其实永远都是大问题,这和矛与盾一样,只要有矛就有盾.

稳定币:美国立法者寻求将Libra等稳定币归类为证券,Libra协会有话说_COI

一些美国立法者正在寻求将稳定币归类为证券。随着Facebook的稳定币天秤座考虑采用挂钩法定货币的稳定币,而不是一篮子国家货币支持的单一代币,这个拟议的加密项目可能会面临另一个监管障碍.