“P2P网络“在区块链当中扮演的角色
区块链与P2P网络简介
公组密码体制、共识机制和P2P网络是比特币系统的三大支撑技术, 其中P2P网络作为其系统的底层网络支撑具有极其重要的作用。比特币之后,加密算法与共识机制都有不少的变化与创新,但是P2P网络作为底层网络传输手段的地位却没有任何技术能够代替,可想而知P2P网络在区块链技术当中扮演着无可撼动的地位。
P2P与区块链的关系
P2P在区块链的结构模型中处于网络层,网络层的主要目的是实现区块链网络中节点之间的信息传播、验证和交流。区块链网络本质上是一个P2P网络,每个节点既能接受信息也能产生信息。节点之间通过维护一个共同的区块链来保持通信。
区块链网络中,每一个节点都可以创造新的区块,在新区块被创造后 会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当全区块链网络中超过规定数量的用户验证通过后,这个新区块就可以被添加到主链上了。在区块链网络中,每一个节点都会如前面介绍的P2P网络模型一样,连接网络中的其他一些节点,节点在不同的区块链中使用P2P网络 进行节点间信息的传播和验证时,采用的机制与算法会有所差异,比如:比特币网络使用相对简单的P2P协议方法来执行对等节点的发现和节点间的通信;以太坊使用的是以Kadelima协议为基础的方式;而超级账本采用基于Gossip的协议实现P2P的数据分发。
区块链网络的可靠性
由于区块链使用P2P网络作为底层网络架构,因而具有了P2P网络的高容错的特点,因为网络中的资源是分布在每一个节点中的,即使一个节点遭到了破坏,整个网络并不会受到太大的影响,而且点对点网络具有自我调节能力,在一些节点离开之后,能够自动调节其网络拓扑结构,因此,节点的加入或离开都比较方便,而且不会影响这个网络。并且,区块链网整中节点越多,网络的健壮性就越好。综合来说,区块链网络是点对点网的升级版,在点对点网络的基础上,增加了一些区块链对数据的验证, 从而保证了区块链网络的安全性和可靠性。
由于区块链本质上是分布式的分类账本,因此,P2P网络模式是当前主流区块链运作的基础。它为区块链提供了如下技术优势。
1.防止单点攻击
当网络中某个节点丢失而导致数据丢失时,因为其他节点仍然保留该数据副本,所以并不会造成整个网络中该数据的丢失。
2.较强的容错性
即使某些节点出现故障,也不会对整个网络造成损害,因为有多个信息来源可用。
3.较好的兼容性与可扩展性
可以轻松适应越来越多的节点,并适应网络配置的频繁变化。以比特币系统为例,在区块链中,节点负责运行维护整个比特币系统。节点通过一种发送事务的机制,更新区块链,并有效地将信息传递到网络上的每个节点。该发送事务机制中,实现信息的全网发布就是采用了“绯闻协议”,即任意节点都将数据发送给它所知道的每个节点,并从这些节 点接收数据,然后所有的节点依据它们收到的数据更新相应的内容,这样就实现了信息在整个网络中有效传播。
当然,采用P2P的区块链网络并非完美无缺,仍然存在一些安全隐患网络专家Bahack指出,与普通节点相比,具有良好网络连接的攻击者更容易发起块丢弃攻击(Block Dis-carding Attack)。攻击者将多个具有良好网络连接的节点置于网络中,使其具有网络连接优势,进而不但可以方便
地获知新被挖掘的区块,也可以比其他节点更加快速地传播某个区块。在此攻击中,当攻击者挖出新区块时,先不公布,一旦得知任何合法节点公布区块时,攻击者便立即发布自己的采矿块,并且利用布置好的节点快速地播报到整个网络,使得该合法节点开采的区块被丢弃。块丢弃攻击带来
的威胁十分巨大,攻击者不仅浪费了合法节点的算力资源,而且可以选择地记录某些交易(每个区块大小有限,因此每个区块记录的交易数目有限)从而使得另一些重要合法交易的确认被延误。
Feld等学者的研究表明,在比特币系统中,若对等节点所连接的大部分对等节点都位于同一个自治系统,则意味着P2P网络连接不良。在这种情况下,添加新的区块到区块链中可能存在困难。若有攻击者发起类似这样的攻击,则将使得分布式共识的实现变得十分困难,区块链数据的合法性与完整性将无法得到保障,这将给区块链的正常运行带来严重的灾难。
实现案例:比特币系统的P2P网络
比特币网络中存在不同类型的节点,不同节点在P2P网络中扮演的角色也有所不同,其中发挥核心作用的是完整节点,比特币网络协议使用完整节点为区块和交易的交换协作来维护P2P网络。在把区块和交易转发到其他节点之前,完整节点下载和验证当前区块和交易。文档节点是存储了 整个区块链并且能够为其他节点提供历史区块的节点。轻量级节点(修剪节点)是不存储整个区块链的节点。许多轻钱包简单支付验证(Simplfed Payment Verification, SPV)客户端也使用比特币网络协议连接到完整节点。
客户端也使用比特币网络协议连接到完整节点。 下面简单描述一下比特币系统的P2P网络的工作过程。由于P2P网络 没有一个服务器,那么比特币网络中的节点是如何发现其他节点的呢?这 就需要节点的发现协议来实现。首先该节点会启动一个网络端口(比特币 中通常是8333),通过这个端口与其他已知节点建立连接。连接时,会发 送一条包含认证内容的消息进行“握手”确认。由于比特币系统的P2P网络是靠彼此共享节点信息来寻找其他节点的,当一个节点与其他节点建立连接后,会发送一条包含自身IP地址的消息给邻近的节点,而邻居节点收到后会再次发送给自己的邻居,以此逐步完成全网络的信息同步。当然 节点并不是只能被动等待接收信息,也可以自己主动发送请求给其他节点索取这些地址信息。如果发现节点之间能够连接成功,那么就会被记录下 来,下次启动时就会自动去寻找上次成功连接过的节点。也就是说,比特币系统的P2P网络在失去已有连接时会去主动发现新节点,同时也为其地节点提供链接信息,以此来完成整个网络的信息同步。
为了提供实际的比特币系统的P2P网络的例子,本节使用比特币核心作为完整节点代表,使用比特币J作为SPV客户端代表。两个程序都是灵活的,所以仅描述了默认的行为,而且为了隐私,例子中实际的P地址使用RFC5737保留的IP地址替代。
“P2P网络“在区块链当中扮演的角色相关推荐
- 【区块链实战】什么是 P2P 网络,区块链和 P2P 网络有什么关系
目录 一.简介 二.知识点 P2P 网络 区块链节点与 P2P 的关系 区块链节点功能分类 P2P 网络特征 三.什么是 P2P 网络,区块链式使用 P2P 网络做什么 1.P2P 网络概念 2.P2 ...
- 区块链不是从属角色,而是主导角色 趋向于「基础设施」
无论是新近兴起的元宇宙的概念,还是数字零售.数字金融等其他的新物种,我们都可以从它们身上看到区块链的身影.同以往人们仅仅只是简单地将区块链看成是一个独立的存在不同,现在,人们对于区块链的看法开始更多地 ...
- 区块链系列教程之:比特币中的网络和区块链
文章目录 简介 比特币的网络 网络发现与同步 SPV节点 区块链头 Merkle Tree 比特币中的区块链 区块标识符 创世区块 总结 简介 比特币的底层就是区块链技术,区块链也是因为比特币而广为人 ...
- B-RAN网络(区块链无线接入网络)阅读笔记
Blockchain Radio Access Network Beyond 5G阅读笔记 摘要 提出一种先进的无线网接入模式B-RAN,B-RAN利用区块链,将大规模的免信任子网络连接成大规模可信任 ...
- 可验证分发网络:区块链扩容终极解决方案
由于区块链的去中心化特性(即没有一个实体控制其运行),越来越多的人们期待,或者至少是希望,区块链在更多领域发挥其颠覆性潜力.然而,去中心化是有代价的:区块链无法扩展(scale),即无法及时处理大量甚 ...
- 区块链P2P网络协议演进过程
区块链是以加密机制.储存机制.共识机制等多种技术组成的分布式系统,可以在无中心服务器的情况下实现相互信任的点对点交易功能.区块链最大的特点是去中心化和分布式,区块链共识机制使得参与节点共同为系统提供服 ...
- 区块链学习笔记:来份P2P
一.段子 客官:小二,来份P2P,我不懂这个东西 小二:好的,客官有眼光啊,P2P这道菜也是好东西. 客官:我只是想点个我没了解过的菜式而已. 小二:行,不管怎样,现在就给您准备. 二.P2P 1.P ...
- 高盛发布区块链报告:从理论到实践(中文版)
投资组合经理之摘要 现在硅谷和华尔街都为了区块链着迷,逐渐忘记了作为其技术源头的比特币.但对其潜在应用的讨论仍十分抽象和深奥.焦点在于使用分布式账本建立去中心化市场,并削弱现有中间商的控制权. 但区块 ...
- 【来龙去脉系列】什么是区块链?
一.什么是区块链? 说到区块链,就不得不说比特币. 2008年底,比特币之父中本聪发表了一个关于他研究的电子现金系统的九页白皮书,2009年初,中本聪在位于芬兰赫尔辛基的一个小型服务器上挖出了比特币的 ...
最新文章
- Java进阶之自动拆箱与自动装箱
- 【怎样写代码】偷窥高手 -- 反射技术(六):深入窥视DLL内部
- 手动安装K8s第三节:etcd集群部署
- PHP报“Cannot start session without errors”
- css3毛玻璃模糊效果
- Scikit-learn 数据预处理之最大绝对值MaxAbsScaler
- 浅谈提升C#正则表达式效率
- rog live service是什么_双11手机怎么买?ROG游戏手机3“独一份”体验,值得剁手...
- 星梦缘陈彦妃_浙江舟山80后女演员,2003年出演偶像剧《星梦缘》,还是专业模特...
- 【华为云技术分享】揭秘华为云DLI背后的核心计算引擎
- React.js 小书 Lesson18 - 挂载阶段的组件生命周期(一)
- R语言:ggplot2精细化绘图——以实用商业化图表绘图为例
- mysql中加号变成空格了_从数据库中读取字符串时其中的空格变成加号
- 【元胞自动机】基于元胞自动机模拟交叉口右转机动车过街社会力模型matlab源码
- 如何快速成为数据分析师
- Linux变量的定义、赋值、查看、删除(export、echo、unset)
- [dfs树]「CEOI 2017」One-Way Streets
- Topic test not present in metadata after 60000 ms
- [024]	11大Java开源中文分词器的使用方法和分词效果对比
- 小飞计算器(小飞可编程复数计算器)用户手册