52

哈希未来|【深度报告】技术洞察系列之区块链拓扑结构

 5 years ago
source link: http://www.8btc.com/hashworld?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者:哈希世界 蒙绎泽、陈致佳

哈希世界以科普小白区块链知识,全球第一款用户逾百万区块链小游戏,聚焦底层技术与应用场景的研究平台,致力于打造可信的数字时代。

支持机构:巴比特

在传统的账本系统中,所有用户的交易信息都写在同一个账本上,由此来保证用户之间不出现冲突的交易信息。而这个唯一账本的记录、检索一般交由可信任的第三方机构进行(如银行)。在这一系统中,所有用户向第三方机构支付信任,由机构保证账本不被恶意篡改。这是一种中心化的体系,好处是机构可以集中处理大量交易信息,但同时所有交易行为都不得不经过机构的处理,用户在一定程度上将受到机构的控制。

区块链技术正是提出一种分布式账本的架构,把第三方机构从系统中剔除,让人与人之间可以直接进行交易。区块链的解决思路是让所有用户都拥有一本账本,所有用户都参与到记账的过程中。然而这样也带来一个问题:如何确保所有用户拥有的是同一本账本?亦即:如何保证账本信息的一致性?

在区块链中,交易信息是向全网络广播的,每位用户都能接收到交易信息。由此, 账本信息的一致性问题,实际上变成一种 “唯一性”问题 :只要设计一种规则,确保只有唯一一种交易信息能通过筛选保留下来,即可保证各个用户记录下来的是同一种信息。

在区块链, “区块”和“链”就是实现这种唯一性的数据结构。

区块存储的是一段时间内的交易信息,实际上是对交易信息的一种封装;在比特币里,一个区块可存储约 3000笔交易信息。一旦这个区块被确认,3000笔交易就一同被确认了。如果不对交易信息进行封装,每次确认一笔交易,则需要高频的确认操作,效率降低。 同时,每个区块又包含了上个区块的地址信息,环环相扣,形成从最新区块到创世区块的一条 “链”。新区块的产生有多种方案(如PoW、PoS DPoS等),分叉的情况时有出现;而大部分区块链项目都共同遵循“选最长链作为主链”的规则。这一规则可保证即便出现分叉,在一定时间后,总能有一条链条是公认的“主链”。(如图1)

RFvua2E.jpg!web

1 “选最长链作为主链”规则

由于最长链是唯一的,所有用户都将把同一链条记录在本地数据库上,这就保证了账本的唯一性,也就解决了账本一致性的问题。

此外,链式结构还带来一个好处。所有的区块都通过 “链”联结在一起,形成了一个紧密的整体。如果黑客想要篡改某个区块的内容,则无法直接插入某个新的区块,而需要从此往后的整个链条重新替换,代价高昂。由此可避免篡改交易等攻击。

然而这种数据结构仍然存在问题:吞吐量低。 在区块链中,为了避免存在冲突的交易信息(不允许持续的分叉),也为了保证账本的一致性(需选出唯一的链),区块链采用的是最长单链结构。由于每次只能新增一个区块,区块信息的传播、确认需要时间,而区块的容量有限,这就使得一段时间内,能记录的交易信息存在上限。可见, “吞吐量低”实际上是满足一致性要求而付出的代价。 目前比特币区块链平均一秒只能处理约 7笔交易,与中心化的电子支付系统存在较大差距。

为解决吞吐量问题(可拓展性问题),一个重要的思路是让多笔交易可以同时并行处理。 侧链技术通过对主链上的款项进行锁定、解锁的操作,可把不同区块链进行联结(如图 2),扩充了交易处理的空间。而分片的思路则是把用户划分为不同的片区,每个片区里的交易可以独立验证、并行进行,而跨片区之间的交易则需进行额外处理(如图3)。在 侧链、分片技术中仍存在主链,两者均是通过限制交易的灵活性 (如款项被冻结、交易的对象受限等) ,在保障安全的前提下,满足账本的一致性。

NFju2mV.jpg!web 2 侧链示意图

RfiyQbz.jpg!web

3 分片技术示意图

而另一方面, DAG(有向无环图)则是对另一种数据结构形式的探索 。如果说区块链是一个同步系统(一段时间内所有用户共同确认一个新区块), DAG则是一个异步系统。在DAG中,区块可以随时产生,而一个区块与多个父区块进行连接(如图4)。这样一来,所有人可以随时记账,交易信息的记录速度大为提高。

32mq6ja.jpg!web

4 DAG示意图

然而由于多个区块同时产生,且均有效, DAG无法以“唯一最长链”来保证一致性。 在这方面,有的项目以 “历时性”来保证DAG上账本的一致性 具体而言,在 DAG中一个新区块将随机选择两个次新的区块进行连接,同时对与之相连的所有区块进行交易信息的验证。经历了多次验证的区块,其交易内容存在冲突的可能性很低,可被认为是已确认的交易信息。这一方案里,一致性的验证依赖于区块网络的延伸和增长。

其他项目则以 “全连接”来保证账本一致,即每个新的区块都与之前所有区块相连,并验证此前的所有交易信息。还有项目以“次序”来保证一致性,由区块递归投票来确认新的区块等。

DAG带来吞吐量的提高,然而“一致性”始终是个有待解决的复杂问题,目前问题的解决都需要付出一些代价:可能是交易信息的确切验证时间有所延误;也可能是节点与节点之间需要进行大量的网络通讯,使得实际交易速度仍有待观察。

归根到底, 分布式账本的 “一致性”问题,是一个平衡的问题。 不妨说 “一致性”是一个系统目标,而达成这一目标需要付出相应的资源:因此或牺牲交易速度,或限制交易的灵活性,或延后确认时间,或提高对全网的传输要求,都是不同系统条件下进行的适应性选择。相信上述提及的不同技术,将在不同的应用场景下,得到进一步的探索和验证。

版权声明: rYRfAbQ.png!web7biuA3Q.png!webUr6zAjQ.png!web 作者保留权利。文章为作者独立观点,不代表巴比特立场。

发文时比特币价格 ¥41395.52
auemuib.png!web

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK