如果你常常关注区块链的行业资讯,想必你听说过比特币的扩容之争,或者对以太猫造成的以太坊拥堵的事件有所耳闻。
更深一步的话,如果你看过区块链项目的白皮书或者宣传文案,可能也会对TPS有所印象,这是区块链技术发展到现在的关键瓶颈,也是众多项目竞争的重中之重。
秦失其鹿,天下共逐之。——《史记·淮阴侯列传》
在去中心化的系统中,扩展性始终是衡量系统设计优劣的重要指标。这里说的扩展性,指的是能够带来性能提升的扩展。上文中的TPS表示单位时间内完成的交易数与时间之商,是性能高低的重要参照标准。
众所周知,区块链领域存在一个著名的“不可能三角”观点:
去中心化(Decentralization),安全性(Security)和可扩展性(Scalability)这三个属性,区块链系统无法同时满足,最多只能三选其二。
一、为什么可扩展性重要
区块链的不可能三角演示了现阶段三个因素之间难以兼顾的现状。对绝大多数公链来说,如果要满足安全性和去中心化,就需要所有(或大多数)节点参与共识并存储全套数据,但因此带来的问题就是项目失去了可扩展性,总性能被大量冗余的节点牢牢限制在一个极低的水平(如比特币的TPS只有7)。
而以太坊的创始人Vitalik Buterin(江湖人称,V神)就认为,扩展性也许应该成为首要解决的问题。
“扩展性也许是排在第一位的问题,扩展性问题已经成为很多系统的坟墓。这是一个重大而艰巨的挑战,这些都是已知的事实。”——Vitalik Buterin
以目前区块链的技术水平,想要规模投入商业使用,其性能还需要有几个数量级的提升才可以。要知道传统的金融机构,每秒交易量往往都是超过几千笔,中国工商银行原行长杨凯生就曾表示过类似观点。
二、现有解决方案的问题
为了提高性能,业界目前采用的扩展方案大概有以下几种:
1、增加区块大小。
熟悉区块链行业掌故的朋友,肯定不会对2017年后半年开始的比特币分叉竞赛感到陌生。在PoW机制下,通过增加区块大小,或提升出块频率可以显著的增加TPS。这种方案实现简单,兼容性好,但会带来节点处理及网络负载过高,产生中心化和安全性等问题。
2、Off-chain(链下)和侧链。
例如闪电网络,在链下进行交易锚定价值在BTC主链上。这种方法优点是实现较简单,提升交易速度明显。缺点是不太安全,会带来交易的不确定性,稍有差池就可能会造成资金损失。
3、分片(Sharding)。
将整个链拆分为独立的子链或分片链,每个分片独立处理请求,互不影响。这种方法借鉴了传统的数据库分库分表方案,优点是TPS提升明显且扩展性好,缺点是相对复杂,实现起来难度较大,对技术要求较高。
三、Trias的可扩展方案
通过对各种方法综合分析,当前Trias选择的可扩展方案是分片,而且是最彻底的状态分片。并在此基础上,结合了Off-chain技术进一步提升性能。
从设计思路上来说,主链(Main chain)用来记录Sharding元数据信息,做交易最终确认,并且具有注册Sharding功能,每个Sharding维护独立状态并且是自治的系统,通过proposer和attester实现块的校验及存储到Main chain。更进一步还会实现off-chain和cross-shard交易功能。
下面具体介绍一下Trias中各模块及概念。
Main chain:采用Trias自创的共识机制形成的链,其中区块是Main block。支持节点注册机制,将节点随机加入选择的Sharding中。交易只有被Main chain确认,才进入最终确认状态。
Main block:是经过Committee签名认证过的块,存储了Shard block header等元数据。Main block被提交到Main-chain也会经过校验,首先会验证签名是否合法,接下去验证header是否符合链的连续性、时间等要求,验证无误才会被并入Main-chain。
Sharding:支持多种类型分片系统,存储管理部分用户的状态数据。Sharding维护独立的状态机,是合约真正的执行单元。
Committee:用来校验一个Sharding block的Attester集合。Committee内的Attester要达成BFT共识后,才能产生Main block。Cmmittee设计有奖惩机制,诚实工作的Attester会得到奖励,否则会得到惩罚。
Attester:Committee的成员,用来校验分片中的交易并投票签名。为了安全起见,每随机过一段时间,Attester会被随机分配到不同Sharding,用来避免每个Sharding的恶意节点过多。
通过Sharding,可以将区块链网络划分为若干能够容易处理交易的小型网络,这种技术还有利于未来继续扩展。简而言之,Sharding将大大提升Trias的可扩展性。
网友评论