展会信息港展会大全

区块链可扩展性问题的来源及解决方向
来源:互联网   发布日期:2020-10-23 16:22:42   浏览:3693次  

导读:什么是区块链? 区块链是一个技术术语,解决(或者说颠覆)了现有的依赖第三方中心的交易体系:如果有一个水果市场,我们在市场上用100新台币购买了一个芒果,其实是新台币的发行方(央行)为这一张薄薄的纸作了信用背书--因为水果销售者信任这100新台币可以...

什么是区块链?

区块链是一个技术术语,解决(或者说颠覆)了现有的依赖第三方中心的交易体系:如果有一个水果市场,我们在市场上用100新台币购买了一个芒果,其实是新台币的发行方(央行)为这一张薄薄的纸作了信用背书--因为水果销售者信任这100新台币可以在他需要的时候,购买等值的其他用品。

第三方中心的存在,解决了交易双方的信任问题,但是带来了新的问题,如果第三方作恶(比如说央行滥发货币)怎么办?最终极的解决项目就是不需要第三方,这个就是区块链产生的根本动机。

在没有第三方的情形下,怎么实现交易?区块链实现了一个去中心化的帐本实现项目:

1.我们有一个公开的帐本,任何人都可以获取这个帐本,帐本上有每个人的余额;

2.当Alice向Bob购买商品的时候,Alice向Bob开具一张有一定数额的支票;

3.Alice向所有人公示这个支票,大家确认确实是Alice的签名后,在帐本上记录

i. Alice的余额减,Bob的余额加;

4.每隔一段时间,大家交换一下帐本的内容,让大家的帐本信息同步。

可以看出,区块链是一个完全自治的体系,但是现在有几个问题:

1.为什么会记帐,每个人都可以指望别人记帐,自己使用别人的帐本才是最节省成本行为;

2.当交易帐本内容的时候,如果两个人的帐本不一致,该以谁的为准;

3.Alice如果账户里只有10块钱,在市场的这一侧花了8块购买后,飞速跑到另外一头购买另外一件8块的商品,这时候另外一侧的帐本还没有来得及记录前面的购买记录,同样的钱Alice是不是可以花了两次?

为了解决这些问题,区块链作了最基本的设计:

1.把所有的交易按时间段组织成区块;

2.区块内使用一个哈希防止修改;

3.每个区块内记录前一个区块的哈希,保证永久无法修改;

4.当同时有多个区块出现时,按某种指定的算法选择一个区块为准。

使用此项目后,每次交换帐本,只需要交换总帐本中的一个区块,大大减少的交换的数量;当多个区块同时出现时,使用某种约定的算法--这个算法在区块链中被称为共识,以符合算法条件的某个区块为准;而Alice同样的钱花两次的想法也会落空:商户只有在支票信息被纳入到共识后的区块里时,才会向Alice提交商品。至于大家为什么愿意记帐呢?注意图上区块中有个记帐人,每个被共识承认的区块的记帐人都会得到一定的奖励。

这时候,货币只是一个数字了(类似于银行内的存款数字),由于帐本是公开的,因此可以在帐本开始前,大家约定好总共的货币数字和记帐人的奖励项目,在任何一个时间点上,可以流通的数字都是可预测的,而且是不可更改的。

区块链的共识机制

当区块进行同步时,有可能会同时产生多个区块,需要一种预先定义的项目来确定使用哪一个区块,这个项目在区块链中称为共识机制。而在在一个去中心化的系统中,有什么是可信的?每个人信自己嘛,交易和出块的结果数据到达我这里的时刻,是无法作假的:数据可能会延时到达(由于网络延时),但绝对不会提前到达(除非时光倒流)。我们可以设计一种机制,让每个节点的记账结果必须达到某个条件,每个节点都认第一个达到这个条件的节点的记录。

PoW机制

Proof-Of-Work,工作量证明机制。

每个节点在记账的同时,按照某种规则找一个随机数,通过这个随机数可以算出某个符合条件的(哈希)值,谁第一个找到的,他就出块成功。这个找随机数的过程就是不断调整随机数-->计算的过程,只要这种算法能够足够离散(这一次和下一次的计算没有任何关联,随机数的变化导致计算结果变化足够离散),那么就能够实现出块节点的随机化。

举个简单的例子,如果算法得到的哈希值总是在0-10000之间,而算法要求得到的(哈希值)小于1,一台机器如果一秒钟能够计算一次,那么平均计算一万次,就有一次值可能小于1;或者反过来说,每次计算,有万分之一的机会小于1. 如果有一万台节点同时在计算,那么每秒都有可能有一台节点得到符合条件的结果,得到符合条件结果的节点就是出块成功。而每一秒,得到结果的机器都可能不一样。这样就获得了足够随机的结果。

POS

Proof-Of-Stake,权益证明机制。

PoW机制很好用,但是有个问题,军备竞赛后,太耗电了,都是做些无意义的计算,除了这个结果和到达时间之外,还有什么可信的数据作为随机值的呢?有想到一个新的点子,每个人存在账号里的币的数量是不一样的么,是不是可以用来作为一种随机数呢?

想想也可以啊,每一次出块的时候,出块节点(账号)里谁的币最多,就认谁的。但这样有个问题:币最多的岂不是一直在出块?

加个币龄,某个账号(节点)一旦出块成功,币龄就清零,如果没有出块成功,币龄就加上。

比如 账号A有7个币,B有8个币,C有3个币

初始币龄值 : A:7, B:8, C:3 第 一轮: B出块;

第一轮后币龄:A:14,B:0,C:6 第二轮 A出块;

第二轮后币龄:A:0,B:8,C:9 第三轮:C出块;

第三轮 后币龄:A:7 B:16,C:0。

通过上述结果,可以看到达到了随机出块的效果,而且没有额外耗电的计算,但是POS有两个问题:

1.如果币被集中在一些人手机,这些人的节点的出块概率非常高;

2.如果轮到某个节点出块,最后他没出怎么办?

DPoS

Delegated Proof of Stake:授权权益证明机制。

在PoS的基础上,有人就想了,哦,去中心化的意思就是不要在一个节点上出块啊,那我选出一些节点,让这些节点轮流出块不就可以了么。于是就有了DPoS(Delegated Proof-Of-Stake),我们选出一些节点,让这些节点为大家服务,他们来出块,OK,省事又省心。

慢着,这个好像有点不对味啊,去中心化的方法是让出块节点尽可能的分散,防止总是由某一个或是一些节点出块,因此如果总是他们出块,那他们完全就可以为所欲为啊,这个DPos岂不是与这个原则背道而驰?

这个结论部分正确,因为区块链不仅仅有公链,还有联盟链的存在。比如说各国海关设立一个联盟链,他们代表各自国家的利益,因此是处于互联监督的状态,再说,他们如果联合作恶,没有作恶的对象啊,因此没有联合作恶的意义和条件。

那DPos在公链上会有什么后果呢?DPos在公链上有主节点,备选节点,还有广大的币民,DPoS主节点联合作恶的前提条件就是他们作恶的收益大于成本(愿赌服输,输家最后可能会抛弃这个链。这个前提会不会存在呢?见仁见智吧!)

区块链的三角问题

区块链带来的好处无法用言语形容:不需要第三方的自治体系;所有的帐本通过共识进行,总共有多少货币,在帐本开始的时候就约定好了,一旦约定,就无法更改,不怕第三方滥发货币;当水果市场越来越大,加入的商贩和消费者越来越多的情况下,货币会变得越来越值钱。

到现在为止,一切看起来很完美,在没有第三方的情况下,这个系统可以在市场里运行的很好。但是随着时间的推移,市场越来越大,问题慢慢的出现了:

同一时间段内,进行交易的人越来越多,记帐员需要记录的、需要交换的交易越来越多,而为了达到一致性,需要留出时间让交易记录、出块内容扩散到整个市场都知道。

区块链里定义了一个术语:TPS(Transactions Per Second)--每秒交易的数量,这个数量表征了一个区块链系统的交易能力。而这个交易能力受到区块链的不可能三角的制约:

“不可能三角”是指无法同时达到可扩展性(Scalability)、去中心化(Decentralization)、安全(Security),三者只能得其二。

如果可扩展性要高,即TPS要高,那么对记帐员的要求就会变高,有很多人就无法成为记帐员,那么去中心化程度就会变低。

如果既要可扩展性,又要去中心化程度不降低,解决的项目就是市场中的记账员可以只记录一部分交易,或者只记录某一些人的交易,那么安全性就会降低(记帐员和客户共同做假的可能性升高)。

区块链的可扩展性

从技术上说,TPS值 = 每个区块内容纳的交易数/区块的间隔时间,要提高TPS值,要么提高区块内容纳的交易数,要么降低区块的间隔时间。

简单来看,区块内容纳的交易数越多,区块就越大,区块传输和同步所需的时间就越长,对网络带宽、出块的主机要求就越高。

而如果缩短出块时间,由于区块内的每个交易都需要验证,传输也需要时间,同样对网络带宽和出块的主机要求会变高。

但是反过来说,当出块的间隔和块的大孝交易的容纳能力预先定义后,不论网络带宽如何,主机性能如何,TPS都无法扩展。事实上,从2008年到现在,主机的能力、网络的带宽都有了成数量级的增长,但是比特币的TPS一直保留在7笔/秒。

比特币的7笔/秒的TPS,并不是因为POW共识算法导致的,而是设计时的区块大小和出块时间决定的。

因此,要解决区块链的可扩展性问题,必须在区块结构和出块时间设计上重构和优化,通过修改、提出新的共识机制是隔靴搔痒,无济于事的解决项目。

在设计新区块结构和出块时间的时候,如何解决或是优化“不可能三角”,这是开发者在设计过程中需要重点考虑的问题。

区块链可扩展性问题的来源及解决方向

配图为朋友摄影作品《如何梭哈Filecoin》

本文已经取得我公司技术总监授权


赞助本站

相关内容
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港