第四章__区块链网络层.pptVIP

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

***************(1)查询发起者从自己的K桶中选出若干距离目标节点最近的节点,并向这些节点同时发送异步查询请求。(2)收到请求的节点,从K桶中找出自己所知道的距离目标节点最近的若干个节点信息,返回给查询发起者。(3)查询发起者收到节点信息后,更新K桶,再从自己目前已知的距离目标节点较近的节点中选出若干没有被请求过的节点,向它们发送查询请求。(4)重复(2)和(3),直到第n次查询返回的结果和第n-1次查询返回的结果相等。***********节点通信Kad节点加入获取任意一个已加入Kad网络中的节点的信息,将其加入对应的K桶中,并向该节点针对自己的ID发起查询请求对等节点收到请求后,会按照与新节点的距离对自己的K桶进行更新,然后返回k个与新节点最近的节点新节点收到返回的节点信息后,将这些节点加入自己的K桶,并向这些节点发送查询请求,如此往复,从而建立自己的路由表节点退出节点在维护自己的K桶时会主动把没响应的节点从自己的K桶中移除*K桶维护更新时基本遵循抛弃最近最少访问节点的原则计算节点本身与新节点的距离,根据这个距离,选择对应的K桶进行操作如果新节点的信息在这个K桶中,则将其信息移动到列表尾部如果新节点的信息不在K桶中,则分为两种情况:在K桶未满的情况下,直接将该信息添加到列表尾部;在K桶已满的情况下,先在列表头部检查最早访问的节点是否有响应。如果有响应,则将头部节点移动到列表尾部,并忽略新节点信息;如果没有响应,则将头部节点信息抛弃,并将新节点信息添加到列表尾部。保留在线时间长的节点的信息是因为在线时间长的节点在下一个时间段继续保持在线的概率可能会更大*Kad网络节点查询定义:已知某个节点的ID,查找当前节点与目标节点距离最短的k个节点所对应的网络信息(不能保证被查找的节点一定存在在网络上)*网络节点发现四种报文命令用于探测对等节点是否在线的Ping命令用于响应Ping报文的应答命令Pong用于向对等节点请求查询邻居节点的FindNode命令用于回传找到的邻居节点列表的Neighbors命令六种生命周期发现状态(discovered):引导节点、从持久化文件加载的节点、被引荐的节点、接收到Ping报文的节点在线状态(alive):在节点发现状态回复Pong报文后,节点会被置为在线状态活跃状态(active):节点处于K桶时的状态候选状态(evictcandidate):K桶满时,活跃状态的节点被新节点替代后会暂时被置为此状态不活跃状态(noactive):如果节点向处于候选状态的节点发送Ping报文,且该候选状态的节点长时间没有响应,那么候选状态的节点会被置为不活跃状态死亡状态(dead):节点在规定时间内没有返回Pong报文会进入的状态,这是最终状态*加密和认证连接阶段一:密钥交换节点A生成随机密钥对和随机数,用自己的私钥对节点B的公钥执行ECDH算法,将结果和随机数异或后使用随机生成的私钥对其签名,然后将随机数、签名、节点A的公钥、版本号打包后用节点B的公钥进行加密作为请求认证的握手报文进行发送节点B使用自己的私钥对收到的握手报文进行解密,得到节点A生成的随机数、签名、公钥和版本号。节点B生成随机密钥对和随机数,用自己的私钥和节点A的公钥执行ECDH算法,根据得到的结果和签名推导出节点A的随机公钥,利用随机私钥和节点A的随机公钥生成共享密钥,然后把自己的临时公钥和随机数用发起者的公钥进行加密并发送节点A对节点B的消息进行解密获得节点B的临时公钥和随机数,利用ECDH算法计算出共享密钥*加密和认证连接阶段二:身份认证与协议握手节点A用共享密钥加密由自己使用的P2P版本号、端口号、ID等信息构成hello报文,并将hello报文向节点B发送节点B使用共享密钥对hello报文进行解密,也类似地用共享密钥对自己的hello报文进行加密并发送节点A完成hello报文的校验。如果双方都能接受对方的协议版本,双方开始建立通讯*区块同步确定同步区块-同步区块头-同步区块体两个节点进行简单的握手连接,连接成功后节点B将自己交易池中的交易信息同步给节点A,然后各自循环监听对方的消息节点A发送GetBlockHeadersMsg获取同步区块的区块头信息,存入数据库节点A依次发送GetBlockBodiesMsg、GetReceiptsMsg、GetNodeDataMsg请求获取blockbody、receipt(合约执行后的结果)和state(储存所有的账号状态,包括余额等信息)数据,并从回复的BlockBodiesMsg、ReceiptsMsg、NodeDataMsg

文档评论(0)

一笑倾洁 + 关注
实名认证
文档贡献者

PPT课件

1亿VIP精品文档

相关文档