作者:LarryHu
翻译&校对:haiki&阿剑
来源:以太坊爱好者
此文旨在帮助你理解P2P网络,并阐述一些以太坊的实现细节。P2P技术利用终端设备的丰富资源,能够缓解中心化系统的短板,而且从九十年代开始,这项技术就已经被eMule,bitTorrent和Skype等知名软件所采用。P2P技术也是比特币或者以太坊区块链系统的核心组件。很多人都听说过P2P,但是不知道它到底是什么。那就让我们从了解什么是P2P网络开始吧。
什么是P2P网络?
点对点网络是一种网络覆盖层——就是说,它是建立在公开互联网之上的。从数学的角度来说,P2P网络可以被视作一个有向图G=(V,E),其中V是网络中的对等节点集合,E?是对等节点所连成的边的集合。每个对等节点p都有一个独一无二的标识号pid。集合E中的边指p可通过直接相连的路径向q发送消息;也就是说,p使用q的pid作为目的地址,在网络之上向q发送消息。尽管在底层的TCP/IP网络中,相似的IP地址可以转译为在地理位置上相互接近,但很少有这么明确的直接关联。
稳定币crvUSD科普创新清算机制LLAMMA,可在抵押品价格下跌时逐步替换为稳定币:1月17日消息,Curve官方科普其稳定币crvUSD创新的清算机制LLAMMA,解释了LLAMMA通过AMM的特性进行针对债务人更友善的清算方式,让抵押品在价格下跌时逐渐转移成稳定币,让原本要清偿的债务有一定程度的稳定币可以偿还,同时在价格回稳时再逐渐把稳定币换回抵押品,而不是直接的触发清算导致债务人的亏损。
此前报道,2022年11月23日,去中心化交易平台CurveFinance开发者发布Curve即将推出的去中心化Stablecoin“crvUSD”的官方代码和白皮书。[2023/1/17 11:17:13]
理想情况下,所有的对等节点间都应该有一条路径相连。但因为每个节点对网络拓扑和其他对等节点只有一个不完整的视图,所以网络覆盖层需要中间节点将消息转发至正确目的。图的结构为每对节点提供了多条中间路径,因此就算对等节点改变,也可通过图的连通性提供网络的恢复能力。对每个对等节点来说,图的连通性通过与其他对等节点的邻接关系来反映。当对等节点加入或者离开网络,邻接的对等节点可能会持有不正确的邻接信息。因此使用网络覆盖层维护机制保存更新的邻接信息,使得所有节点间保持连通性。
动态 | 新浪财经:官媒针对区块链的报道从科普宣传转向打假监管:据新浪财经今日消息,“1025新政”满月,一个月间,官媒对区块链的态度风向已转。据11月初的一项统计,七家党媒在新政一周内发布了65篇直接相关报道,当时文章中的关键词是数据、产业、安全、创新等,大量文章偏向于科普区块链的概念以及应用介绍,提醒警惕虚拟货币炒作的仅有3篇。近期,官媒的批评焦点则纷纷指向借区块链之名进行的虚拟货币发行和炒作行为。据统计,新华网、人民网收录转载的,以打击虚拟货币或揭露假借区块链行为主题的文章,自10月25日到11月25日午间,共28篇;其中,11月19日至11月25日的一周内就高达15篇。这些文章主要围绕三个观点展开:厘清区块链和虚拟货币的关系,说明二者概念不等;打击伪“区块链”局,或是虚拟货币局揭露;提醒民众,区块链不能成为炒作的噱头,更不是行的招牌,需警惕此类活动,理性投资。[2019/11/26]
动态 | 区块链技术入选科普杂志《科学美国人》2019十大突破性技术榜单:据新浪网今日新闻报道,美国科普杂志《科学美国人》公布 2019 十大突破性技术榜单。区块链技术因在保障食品安全中的作用而上榜。 入选榜单具体原因:区块链技术的发展应用将显著改善食品污染源数据追踪的困境。利用区块链云端系统,食品制造商可以依次在计算机储存各类过程的信息。[2019/9/29]
P2P网络中的参与者向其他网络参与者提供部分资源。不需要中心化的协调者,每个对等节点都可贡献计算周期,磁盘存储和网络带宽。传统的客户端-服务器模型中,服务器提供资源,客户端使用资源;与之相对的,在P2P网络中,对等节点既是网络资源的供应者,也是消费者。因此,P2P网络可以很好地解决客户端-服务器模型下的一些短板,比如可扩展性和单点故障。
声音 | 中科院姚建铨:要加快推进区块链与物联网融合的科普 培训:据新华网消息,日前,在区块链与物联网融合发展峰会上,中国科学院院士姚建铨说,关注区块链技术里面的大数据,跟区块链技术结合起来进行测量和检测,能更好地提升激光清洗技术。姚建铨建议,无锡今后要加快推进区块链与物联网融合的科普、培训,正确引导广大人民群众对技术的认知;同时,建立专业、权威,但又普适、成套的理论体系和标准,以此切入区块链的实际应用。[2018/9/18]
一般来说,P2P网络会有一个门槛,节点的资源贡献高于这个门槛才能加入网络。度量资源贡献的标准应该是公平的,比如说,要求网络中每个对等节点的平均贡献应该在P2P系统总体平均值的统计范围内等。资源贡献应该是双方互惠的。付出贡献后可得到的利益,吸引着用户加入P2P应用。
以太坊的P2P网络是如何工作的?
以太坊的官方客户端节点软件?Geth,基于一种覆盖层维护机制实现了对等节点发现协议。虽然Kademlia是为了在P2P网络中有效地定位和存储内容而设计的,以太坊的P2P网络只用它来发现新的对等节点。
Kademlia
中科院自动化研究所将面向大中小学生开展区块链等主题的科普讲座:5月21日,新华网讯,今年,中国科学院自动化研究所将举办第十四届“自动化之光”公众科学开放日活动。届时,自动化所将面向大中小学生分别开展《脑与智能》、《区块链技术与平行智能》、《大数据时代的视觉智能》、《动画真奇妙》等4个主题报告,用实例和生动的演示深入浅出地为大家揭示智能技术的原理和奥妙。[2018/5/21]
以太坊网络中,每个客户端节点都配备有一个?
enode?ID,之后将此ID用SHA3算法
散列为一个256位的值。Kademlia使用XOR操作定义距离,因此两个256位的数字之间的距离是他们的按位异或值。每个对等节点都拥有一个包含256个不同的桶的数据结构,每个桶i中存储与本节点距离在2
i-1?到2
i?之间的16个节点。为了发现一个新的对等节点,以太坊节点选择自己作为目标x,从桶中寻找到16个与目标x最近的节点,之后请求这16个节点,让它们从自己的桶中各找出16个与目标x“更近”的节点并返回,这样以来,会得到至多16x16个新发现的节点。之后请求这16x16个新发现的节点中离目标x最近的16个节点,让它们返回与x更近的16个节点。这个过程持续迭代,直到没有新节点被发现。
-异或操作示意图-
-bucket与距离对应的示意图-
对等节点间通信
Geth使用UDP连接交换P2P网络的信息。有4种类型的UDP消息。一条?
*ping*?消息请求一条?
*pong*?消息作为返回。此对消息用来判断相邻节点是否可响应。一条?
*findnode*?消息请求一条?
*neighbors*?消息作为返回。当建立好对等节点的连接之后,Geth节点通过加密和认证的TCP连接来交换区块链信息。
数据结构
Geth客户端用两种数据结构存储其他节点的信息。第一种是称作?
db?的长期数据库,它存储在磁盘内,客户端重启之后数据也是持久存在的。
db?中包含客户端交互过的每个节点信息。db的每条记录包含节点ID,IP地址,TCP端口,UDP端口,最后一次向节点发送ping的时间,最后一次从节点收到pong的时间,节点响应?
findnode?消息的失败次数。如果最后一次从一个节点收到?
pong?消息的时间超过了一天,此节点将会被移出db。
第二种数据结构是称作?table?的短期数据库。当客户端重启时?table?是空的。table?包含256个桶,每个桶存储至多16条记录。每条记录存储其他以太坊节点的信息——节点的ID,IP地址,TCP端口和UDP端口。如果记录中的某个节点对于?findnode?消息连续响应失败,多于4次时将被移出table。
当某个客户端第一次启动时,它的db是空的,只知道6个硬编码的引导节点。随后,当客户端开始发现对等节点,客户端依据上面描述的机制,将节点加入db和table。
如果你想查阅更多关于以太坊P2P网络的内容,可以参见下面一些由以太坊社区成员贡献的文章:
“RLPxNodeDiscoveryProtocol”byFelixLange,Gustav-Simmonsson,andRomanMandeleil
“PeertoPeer”byFelixLange
“KademliaPeerSelection”byJamesRay
参考:
VasiliosDarlagiannis,(2010).P2PSystemsandOverlayNetworks,Retrieved
from:?https://www.iti.gr/iti/files/document/seminars/p2p_eketa_090610_v2.pdf
S.UmamaheswariandDr.V.Leela,(2011,Mar.01).P2POverlayMaintenanceAlgorithm,Retrievedfrom:?http://journals.sagepub.com/doi/pdf/10.1260/1748-3018.6.3.555
?
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。