社群文章

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

2018-12-02  本文已影响3人  ella_宁

作者:笔名辉哥

來源:著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处

1,活动基本信息

1)题目:

【区块链技术工坊24期】以太坊的P2P网络

2)议题:

p2p中的三层模型

DHT数据结构

DHT table更新流程

节点之间的加密通信

以太坊节点的通信协议

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。如果应用层修改后,因为协议不一致,所以不会接入以太坊节点。

消息进出流程

消息结构

3,下期活动宣传

1)题目:

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

2)议题:

WASM技术特点和优势

WASM 基本原理和执行过程

Bottos对WASM适应性改造

Bottos对wasm安全增强;

3)嘉宾:

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

4)时间/地点:

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

5)活动报名海报

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

上一篇下一篇

猜你喜欢

热点阅读