美文网首页
以太坊中服务和协议

以太坊中服务和协议

作者: teeth | 来源:发表于2018-06-08 15:32 被阅读0次

    服务和协议:

    以go版本的ethereum源码为例

    如ethereum service(即我们通常所说的以太坊协议)和whisper service(即我们通常说的轻语协议)

    每个service由一个独立的结构管理:如Ethereum struct和Whisper struct。

    Ethereum struct中的ProtocolManager struct很重要,他是用来管理ethereum service的协议的,或者说是以太坊协议用来管理它的子协议的,有成员:SubProtocols []p2p.Protocol,用数组形式,是因为每个版本的以太坊协议有一个自己单独的protocol。如果说一个服务的一个版本对应一个协议,那么通常我们说以太坊协议,也可以就是指ethereum service的p2p.protocol。Whisper struct有成员变量protocol p2p.Protocol(不像ethereum是在ProtocolManager中)。

    p2p.Protocol的形式是这样的:

    p2p.Protocol结构

    使用这些服务时,程序会把他们所有的p2p.Protocol都放进p2p.Server对象中(Node struct中有成员server *p2p.Server)

    把收集到的Protocl交给p2p.Server

    Node是一个很重要的结构,它是服务的容器,所有的服务都注册在Node中。而服务对应的协议,正是保存在p2p.Server中。

    ethereum官网中介绍使用p2p包创建自己的协议时(https://github.com/ethereum/go-ethereum/wiki/Peer-to-Peer),没有服务这个概念,而是直接创建协议,然后将协议添加到p2p.Server的Protocols中。

    PS.创建服务的话,需要实现Service这个接口

    Service接口

    相关文章

      网友评论

          本文标题:以太坊中服务和协议

          本文链接:https://www.haomeiwen.com/subject/wtjasftx.html