导语:在本系列的前三篇文章中,我们对QitChain的基本情况做了一些简要介绍,包括出现背景,基础架构概览、共识、经济体系以及生态环境等。至此,关于QitChain的前期准备已经基本完成,因此可以讨论一些更深层次、更加细节的内容了。
在本文中,我们将讨论QitChain架构的技术细节、整个分布式系统的区块结构以及CPoC共识的技术本质,籍此加深读者对QitChain系统的深入了解,以增强其对该系统前景的信心。
因此,当涉及区块结构和共识内容时,我们会用较多的篇幅探讨QitChain的技术架构及这些架构设计背后所蕴含的密码学思想。我们相信,这样的讨论能够让读者更好地理解我们为何在技术架构方面给予QitChain一个相对谨慎的乐观态度。
从头开始的第二遍梳理:QitChain Network的架构细节
在此前的文章中,我们曾提及QitChain Network是整个QitChain项目的核心之一,为整个生态系统提供核心支撑。在QitChain的蓝图中,它将提供分布式存储与服务建设、发现等功能。而根据QitChain团队的设计,QitChain Network主要由五部分组成:
存储:存储是QitChain Network的立足之本和灵魂所在。在已发布的系列文章中,我们曾提及,QitChain Network因其分布式设计而具有安全性,可以存储包括关键文档、视频以及代码等在内的重要文件。当然,这样的表述仅限于用户层面。实际上,而在架构师的方案中,该部分还需要存储QitChain链中不断增长的数据,包括区块、链式信息、交易记录、Merkel树等基础的数据内容,并且允许网络参与者相互之间达成无需信任第三方存在的共识。
共识:QitChain Network的共识算法采用了先进的CPoC共识。此前我们也曾简要地介绍了该算法的优势。后续部分,我们将继续详细讲解该共识的数学算法。
客户端:客户端是直接面向QitChain用户的构成组件,它允许用户对其账户和其中的数字资产进行查询、管理和交易。
点对点网络:基于点对点架构的QitChain网络允许节点之间互相通信,以及与外界进行信息交换。当然,基于区块链最重要特征之一的分布式架构,QitChain Network的节点也不存在层级结构,因而具有透明性、可靠性的特点。每个节点在对外提供服务的同时,也能同时使用来自网络中其他节点的服务。一言以蔽之,整个QitChain Network就是根据特定的分布式点对点协议运行的所有节点的集合。
接口:QitChain Network允许用户通过它们与外部网络进行交互。除了基础的http接口之外,系统同时还提供WebSocket RTC接口。后者是一种旨在解决分布式系统中,服务器之间相互进行远程调用的方案。通过RTC接口,可以令用户通过它们和外部网络中的服务器进行远程调用时,如同本地调用一样简捷方便。
综上所述,我们可以看到QitChain Network的五个部分各自具备对应功能,分别负责底层逻辑、用户交互和外部通讯等重要工作。其中存储、共识与客户端对内;而点对点网络和接口对外,将整个项目打造成一个有机的技术解决方案。在QitChain的白皮书上的一张关系图可以比较直观地概括各个部分在QitChain Network中所处的位置和它们之间的相互关系:
Figure 1: QitChain白皮书中对于QitChain Network的架构示意图
分工合作:QitChain的节点类型与结构
在分布式的网络系统中,节点是最基础也是最为重要的元素:它们负责接收、存储和广播数据,获取区块奖励,管理数字资产,并且构成网路路由。在分布式系统的初创时代,节点之间是平等的,它们有着相同的结构、储存相同的全网数据,并且忠实记录全网络上的每一笔数字资产交易。
但正如鱼与熊掌不可兼得一样,区块链的“不可能三角”证明了分布式系统如果要从密码学的象牙塔里走向普罗大众,那么必然要求在安全性上做一定妥协以满足高性能要求。而事实也是如此,大量的区块链项目为了提高性能而对一些节点进行了改变,使得节点之间出现了分工合作的局面。
我们在之前的文章中曾经提及,QitChain的节点包括完全节点和轻节点。但这两种节点并非节点的全部分类。QitChain在全网中一共存在以下几种不同的节点以分工履行其职能并共同构成QitChain核心网络:
同步全节点
同步全节点是拥有完整区块链账本的节点。任何一个同步全节点都能够独立自主地校验所有数据,而不需要借由任何外部参照进行辅助。在区块链的香草时代,人们对于其处理问题的效率并不那么看重的时候,大多数项目中的每一个节点都是同步全节点。这样的架构拥有最强的安全性,但其速度远远不足以支撑当今国际交易系统的处理需求。
轻节点
在之前的文章中,我们提到过轻节点只储存区块头而非全部交易数据。与大多数人的想象相不同,轻节点是一个很早就被提出的概念。它基于简化支付认证技术(Simplified Payment Verification, SPV),利用Merkle Proof机制,在只需要保存最长区块链的区块头的情况下,就能够验证一笔交易是否存在。
由于本篇重在讨论技术细节,因此我们来关注一下轻节点如何利用Merkle Proof来实现在无需借助遍历全账本的情况下来验证交易是否存在。哈希树(Merkle Tree)是密码学中的一种树状数据结构,其特点在于其每个叶节点(即最底端的节点)的标签都是该节点的哈希值,而除了叶节点之外的其他所有节点则以其所有子节点的标签的哈希加密作为标签。这样,整棵树的顶点标签便是可以看做除顶点之外所有节点标签的一个巨型的复哈希值。
Figure 2: 一棵哈希树的基本结构
Merkle Proof的意义在于证明一笔特定交易是否确实存在于某个特定的区块中,用户不必对整个区块链中的每一个区块进行遍历搜索,而只需要检查区块头所组成的链即可。如果能够在这条区块头所组成的链的某一个区块头找到该交易的哈希,则可以认证该交易的确存在于该区块头所对应的区块中。而这一系列操作仅仅最多只是浏览了所有区块头而非遍历整个区块链,因此能够在保证相对安全的情况下更加高效。在QitChain Network中,轻节点因如前文所述,只含有区块头而没有交易信息,因此合并成链之后,整条链的大小只有完整区块链的1/1000左右。
Figure 3: 使用Merkle Proof证明某项交易是否存在于特定的某个区块中
服务商节点
服务商节点的主要任务是提供计算或通证质押(依靠不同的共识而产生变化)、争夺新出块的记账权并获得数字资产。而在QitChain Network的语境中,其服务商节点提供的是存储服务。其对生命周期的定义是从一笔数字资产的交易被创建开始的,随后该交易会被一个或多个签名进行加密并且全网广播。当该笔交易被大多数其他类型的节点接收之后,最终会被一个存储服务商节点所验证并添加到链上的一个区块中。当这笔交易进入区块链并且被足够多的后续区块所确认之后,便会成为区块链的一部分。
由此不难发现,根据存储服务商节点发挥的作用,该节点应当提供存储服务、完整区块链数据以及网络路由。在某些特定的情况下,为了更容易获得区块的打包记账权及其附属的数字资产激励,服务商节点会被统合起来形成节点集群以实现“集中力量办大事”的效果。
由此可见,QitChain Network作为QitChain项目的核心,通过其架构的设计和节点的分工,对整个项目的完整性、有效性进行了有力的支撑,但其创新之处仍然远不止于此。QitChain大胆地采用了号称“博采众家之长”的CPoC共识机制来实现其数字资产的分配与经济模型的架构,而CPoC如何博采众长,其先进性又如何体现,则是我们在之后需要讨论的内容。
作者:Akechi
参考资料
Qitchain Network, QitCoin Whitepaper v2.0
Bitcoin Wiki, Simplified Payment Verification, https://wiki.bitcoinsv.io/index.php/Simplified_Payment_Verification#:~:text=Simplified%20Payment%20Verification%20(SPV)%20is,the%20properties%20of%20Merkle%20proofs
Bitcoin SV, Merkle Proof Standardised Format, https://tsc.bitcoinassociation.net/standards/merkle-proof-standardised-format/
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。