【原创】[区块链技术工坊24期实录] 吴寿鹤:以太坊的P2P网络

#1,活动基本信息
1)题目:
【区块链技术工坊24期】以太坊的P2P网络
2)议题:

  1. p2p中的三层模型
  2. DHT数据结构
  3. DHT table更新流程
  4. 节点之间的加密通信
  5. 以太坊节点的通信协议

3)嘉宾:

吴寿鹤,《区块链开发实战——以太坊关键技术与案例分析》的第一作者,《区块链开发实战——Hyperledger Fabric关键技术与案例分析》联合作者,IONChain 离子链 首席架构师,hyperLedger核心项目开发人员,区块链技术社区-区块链兄弟联合创始人。

4)活动定位
由HiBlock,兄弟区块链,,创业股平台等共同主办的区块链技术工坊,深度分享区块链知识,实现小会技术交友。区块链技术工坊坚持4F原则:

  • Frency - 每周三晚上一次;
  • Focus - 聚焦区块链技术分享;
  • Fun - 20人以内会前做自我介绍,分享有深度的技术内容,技术交友;
  • Feedback - 会后有活动总结和合影照片。

2,分享实录

区块链是一个去中心化的系统,每个节点分布在全球各地,那么节点之间是如何自发地组成网络,又如何进行通信的?区块链中的p2p网络算法与bt下载中的p2p网络有什么区别?在本次分享中为大家分析导读。

TCP/IP的四层网络模型,对应到以太坊主要有3层。TCP/IP的物理层解决物理链路的问题,网络层解决;应用层做应用,QQ,微信等。
UDP用于发现网络,;ETH 是全节点协议,LES协议是轻节点。
第一层和第二层固定,PROTCOL接口校验时不一样就行,就不会误加入。只要种子节点不一样,就不会混淆。底层都是P2P公用包,都是一样的。


为什么需要去中心化的目的呢?节点是自由进出的。发现节点的方法。

DHT(Distributed Hash Table,分布式哈希表类似Tracker的根据种子特征码返回种子信息的网络。DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。新版BitComet允许同时连接DHT网络和Tracker,也就是说在完全不连上Tracker服务器的情况下,也可以很好的下载,因为它可以在DHT网络中寻找下载同一文件的其他用户。

距离发现有2种,见上,地理难获取,例如VPN获取会不准确;另外用异或算法,用节点ID。
地理是虚拟位置还是网络多条位置呢?以太坊用异或进行,不用地理位置,不是真正的地理位置。


异或运算有3种特点。


Kademlia (俗称K桶)是由 Petar Maymounkov 与 David Mazières 所设计的P2P 重叠网络传输协议,以构建分布式的P2P电脑网络。是一种基于异或运算的P2P信息系统。它制定了网络的结构及规范了节点间通讯和交换资讯的方式。在Kad网络中,每个节点只负责处理一小部分搜索和查找源的工作。分配这些工作的时候,通过我们每个用户端的唯一的ID和搜索文件的Hash值之间的匹配来决定。

K-桶初始化的过程

1、先新建table对象,连接本地database,如果本地没有database,则先新建一个空的database;
2、初始化K-桶,先获得k-桶信息的源节点:
a. 通过setFallbackNodes(bootnodes)来获得5个nursey节点;
b. 通过tab.loadSeedNodes()——>tab.db.querySeeds()来从本地database获得最多30个节点;
3、把上面的节点存入seeds,进行for循环;
4、在循环内执行tab.add(seed),计算seed节点与本节点的距离,选择相应距离的bucket。如果bucket不满,则用bump()存入bucket;如果bucket已满,则放入replacements。


table以及k-桶是如何维护:

1、每30分钟自动刷新k-桶(刷新k-桶可以补充或保持table是满的状态,刚初始化的table可能并不是满的,需要不断的补充和更新);
2、每10秒钟就去验证k-桶中的节点是否可以ping通;
3、每30秒就将k-桶中存在超过5分钟的节点存入本地数据库,视作稳定节点;


插入之前要做PING/PONG测试,K桶如果满了,最大只有16,如果到16了,如果死了就更新最后一个节点;否则就抛弃最后的节点。


创建过程
创建连接


我们只是建立TCP链接,还没有进行加密。
双方协议表示协议是否一致,通过对方的公钥进行加密,完美的向前兼容安全。

加密通道的私钥生成公钥的过程。完美向前安全。
消息进出流程:

以太坊支持ETH62,ETH63。如果应用层修改后,因为协议不一致,所以不会接入以太坊节点。

消息进出流程
消息结构

活动会议部分成员合影:

本次实录纪要由辉哥(王登辉,创业股平台CTO,HiBlock上海合伙人)记录,转发务必注明出处及本段信息。

3,下期活动宣传

1)题目:
【区块链技术工坊25期】WASM应用区块链虚拟机的技术实践

2)议题:

  1. WASM技术特点和优势
  2. WASM 基本原理和执行过程
  3. Bottos对WASM适应性改造
  4. Bottos对wasm安全增强;

3)嘉宾:

张伟是Bottos区块链底层系统工程师,负责Bottos区块链底层的研发设计工作,熟悉区块链智能合约设计,区块链领域优秀技术专家。在中兴,华为公司工作十多年,从事移动通信产品的研发设计工作,具有丰富的产品研发经验。

4)时间/地点:
2018-12-05(周三晚上) 18:30 / 上海徐汇区龙华中路596号

5)活动报名海报
请微信扫描二维码报名参与,有门禁密码私送,空降无法参加。

吴鹤寿这张最为硬核,非常赞!
短时间消化不掉,还要课后加深学习!

区块链技术的去中心依赖于底层组网技术,以太坊的底层实现了p2pServer。