美文网首页社群文章
【区块链技术工坊24期实录】吴寿鹤:以太坊的P2P网络

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

作者: ella_宁 | 来源:发表于2018-12-02 17:29 被阅读3次

    作者:笔名辉哥

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

    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)活动报名海报

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

    相关文章

      网友评论

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

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