区块链P2P网络协议的类型及演进
扫描二维码
随时随地手机看文章
区块链技术的网络层通信协议为点对点的结构,凭借其去中心化及点对点的独特性,可摆脱中心服务器对网络层的限制与束缚,现阶段的主流区块链技术包括比特币,以太坊及超级账本三种类型,本文着重分析这三种类型对区块链技术应用的优缺点进行分析,并为区块链PP网络协议的进一步完善提供参考。
一,区块链P2P网络类型
二,P2P网络协议演进
1、基于比特币
比特币采用了基于互联网的点对点(P2P:peer-to-peer)分布式网络架构。比特币网络可以认为是按照比特币P2P协议运行的一系列节点的集合。
比特币网络协议允许完整节点为了区块和交易的交换协作维护P2P网络。在把区块和交易转发到其他节点之前,完整节点下载和验证每个区块和交易。文档节点是存储了整个区块链并且能够为其他节点提供历史区块的完整节点。修剪节点是不存储整个区块链的完整节点。许多SPV客户端也使用比特币网络协议连接到完整节点。共识规则不包含网络,所以比特币程序可能使用替代的网络和协议,例如一些矿工使用的高速区块转发网络和一些提供SPV级别安全的钱包使用的提供交易信息的服务器。
2、基于以太坊
以太坊底层分布式网络即P2P网络,使用了经典的Kademlia网络,简称kad。Kad的路由表是通过称为K桶的数据构造而成,K桶记录了节点NodeId,distance,endpoint,ip等信息。以太坊K桶按照与target节点距离进行排序,共256个K桶,每个K桶包含16个节点。
以太坊的P2P网络,是以比特币的P2P网络解雇为基础的。以太网建立了分布式信息通讯平台及存储平台,基于网络节点,通过Kad 协议实现对于其他节点地址的快速查找及精准定位。
3、基于超级账本
Peers是整个网络的基础,因为它是账本和智能合约的载体。通过智能合约,账本以不可篡改的方式记录了交易的全过程。在区块链中,智能合约和账本被用来封装整个网络中的共享处理工程和共享信息。
一个区块链网络由peer节点组成,每一个peer节点持有一个或多个账本,以及一个或多个智能合约。上图中网络N由三个peer组成P1、P2和P3。每一个Peer都持有了一个账本实例L1;每个peer都通过链码(智能合约)S1去访问各自的账本副本L1。通过暴露的一系列接口,可以允许管理员和运用程序来创建、开启、停止、重新配置甚至删除peer。
正是由于peer持有了账本和链码,管理员和运用程序必须通过peer才能访问这些资源。正因如此,peer被称作超级账本区块链网络中最基础的模块。
在比特币及以太坊的高速发展的情况下,区块链技术也得以快速拓展,超级账本可提供企业级区块链服务,在该P2P网络结构中,网络节点不同,需要经过高级节点处理交易。超级账本并为实现去中心化,但节点的划分可提升网络效率。
三、分布式系统中的共识问题
分布式系统中的共识问题一直是计算机科学领域的一个重要问题。目前人们主要有两类共识协议来解决该问题:一类是经典共识协议,另一类是中本聪共识协议。
1、经典共识协议
由图灵奖得主兰伯特提出,具有强一致性、高效的特点,然而它也存在一 些缺点,首先是通信成本,在经典共识协议下,节点的个数不能超过 1000 个,因为系 统的通信成本会随着节点数量的增加呈二次指数形式增长;其次是要求网络中所有的节 点都是可信的,因此节点无法自由进出。
经典共识协议工作原理:
2、本聪共识协议
这类协议无法达到强一致性,但为系统提供了一个安全的概率保证——在实际运行中,只要达到一定的参数 标准,共识就是不可逆的。采用该协议的系统具有开放性,无权限的特性,任何节点都可以随时加入网络,然而也存在成本高昂、浪费资源且性能有限的缺陷。
3、Avalanche协议
Avalanche协议由四种机制组成,它们相互建立,共同构成更大共识工具的整个结构。提议中描述的四种机制是Slush, Snowflake, Snowball,和Avalanche。
(1) Slush
该算法的灵感来源于Gossip(流言)协议,或者也被称为Epidemic(传染病)协议,主要用于数据同步。
算法流程参见下图:
(2) Snowflake
Slush算法是无状态记忆的(memoryless),节点不保存和其他节点的交互历史。
Snowflake算法在该基础上,为每个节点增加了一个查询计数器,用于累积该节点对当前颜色的信任度。如果连续β轮都选择该颜色,则接受该颜色。算法流程参见下
具体修改的部分:
每个节点维护一个计数器
每次颜色发生变化时,将该计数器清零
每次查询成功(收到αk个回复),并且颜色不变时,计数器加一
(3) Snowball
Snowflake记忆的状态是短暂的,每次颜色变化都会将计数器清零。为了使得系统更加难以被攻击,Snowball增加了一个置信度计数器,用于记录每种颜色被选择的次数。如果某种颜色被选次数超过另一种,则切换到该颜色,并等待查询计数器超过阈值。算法流程参见下图:
具体修改的部分:
· 每次查询成功,增加所选颜色的置信度计数器
· 如果某种颜色的置信度变得比另一种低,发生颜色切换
(4) Avalanche
Avalanche在Snowball的基础上引入了DAG。这会带来两点好处:
· 更高效:对DAG某个顶点的投票隐含了对“从创世顶点到该顶点”这整条链的认可
· 更安全:DAG把各个交易的命运交织在了一起,因此共识更加难以被逆转(需要更多诚实节点的认可)
算法主流程参见下图:
“受到八卦算法的启发,这个新的家庭通过一种故意的亚稳态机制获得了它的安全性。”具体来说,系统通过反复随机采样网络,并引导正确的节点走向相同的结果来运行。分析表明,亚稳态是一种强大的技术,尽管不是通用的技术:它可以迅速将一个大的网络移动到不可逆转的状态,尽管它并不总是能保证做到这一点。八卦算法是点对点网络中出现的一种通信类型,它通常涉及对连接节点进行随机采样,然后接收信息。Avalanche协议在很大程度上借鉴了八卦协议的原理,它还利用网络节点的子采样来实现协商共识。
在Avalanche 协议下,节点之间达成共识 的步骤如下:
(1)所有的节点在初始时都是未着色的状态;
(2)当节点从客户端接受到交易信息时,未着色的节点 A 将自己的颜色更新为交易所携带的颜色,并向其他节点发起询问。
(3)如果是未着色节点 B 收到询问请求,那么该节点就会染成相同颜色,并对节点A 进行相同颜色的回复,同时向另外的其他节点发起询问;如果是已经着色的节点C 收到 询问请求,那么节点就对节点 A 发出自己颜色的回复;如果节点 A 没有在限定时间内 收到 k个响应,那么节点 A 就会从剩余节点中继续选择一些节点发出并发出请求,直 到收集到 k 个响应;
(4)节点 A 收集到 K 个响应后,就会检查是否存在相同颜色的样本数值/总样本数(x), 使αk,这里α是协议的参数,并且α》0.5;如果 x《αk,那么节点将会改变颜色;否 则不改变颜色;
(5)节点重新返回到查询步骤,发起下一轮查询,像这样一共查询 m 轮,在 m 轮结 束后节点可决定自己的颜色。
这个特性被称为亚稳性; Avalanche协议被设计成最终降落在一个选择上。协商共识机制的全部前提是确保网络上各节点之间达成一致,并避免可能出现的连接。Avalanche的亚稳态协议被设计成将网络引向场景中的一种选择。
回到颜色选择示例,随着每一轮投票,网络将开始看到节点倾向于哪个颜色的模式。随着每一轮投票的进行,网络得出这一结论的速度都比前一轮快。在某一阈值下,网络达到其最终状态,所有节点都决定了一种颜色。
利与弊
Avalanche的特点使它能够支持难以置信的高速。rocket Team声称只需两秒钟就能达到最终状态开发人员还认为,Avalanche协议具有非常高的吞吐量,每秒可以处理1,000到10,000个事务。另一个重要的特性是它的健壮性。Avalanche协议工作时不需要知道或同意参与网络的节点的细节。网络不需要就参与者的身份达成一致,就能达成不可否认的共识。Avalanche协议也是有效的能源。因此,协商共识意见是通过专门的八卦协议达成的,从而消除了在工作证明和其他类似机制中使用同样大量能源的需要。
此外,由于所有节点都是相似的,并且具有相同的能力,所以没有特殊类别的节点,比如比特币生态系统中的矿工。这减少了节点对网络的影响。它还增加了网络拜占庭式的容错能力。简单地说,即使网络上50%的节点是不诚实或恶意的,网络仍然是安全的。另一个重要的特性(它可以被看作是优点也可以看作缺点)是,对于冲突的事务没有活跃性保证。这意味着,如果一个不诚实的节点试图实现一个双重支出,Avalanche协议将无法就这两个操作达成一致。
与经典协议和中本协议相反,Avalanche协议不能保证在这种情况下有选择。缺乏共识将导致赔钱。惩罚是任何加密货币系统的基本特征,而Avalanche协议以一种有趣的方式解决了这一问题。缺乏活性保证就会对任何有意的恶意活动产生消极的作用。虽然加密货币世界已经对Avalanche协议表示支持,但是这个机制受到了首席开发人员Vlad Zamfir的批评,Casper表达了他的想法,即协议并不像它声称的那样好或安全。他说:“它不是异步安全的,而是概率性的。”