如果你常常关注区块链的行业资讯,想必你听说过比特币的扩容之争,或者对以太猫造成的以太坊拥堵的事件有所耳闻。

更深一步的话,如果你看过区块链项目的白皮书或者宣传文案,可能也会对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的可扩展性。

Trias为什么具有良好的可扩展性?相关推荐

  1. Trias发起的世界区块链黑客松,牛津启动会首秀成功!

    伦敦时间10月9号17时30分,TRY全球系列黑客松首站正式在牛津大学拉开帷幕.众多社区资深开发者.区块链项目技术大咖.牛津大学等世界顶级大学的教授.顶级项目的创始人齐聚现场,共同启动一场创新与科技的 ...

  2. 《DDIA》读书笔记(一):可靠性、可扩展性、可维护性

    这一节描述了密集型应用的基本思考方式. 可靠性.意味着系统发生故障,也能保持正常的运行.故障会集中在三个方面,硬件故障(通常是随机和不相关的).软件故障(通常是系统性的bug,较难发现,较难处理),人 ...

  3. 提高C++性能的编程技术笔记:设计优化/可扩展性/系统体系结构相关+测试代码

    1. 设计优化 我们可以粗略地将性能优化分为两种类型:编码优化和设计优化.编码优化定义为不需要完整理解要解决的问题或者应用程序的执行流程就能实施的优化.通过定义看出,编码优化用于局部代码,同时该过程不 ...

  4. 论文里常出现的可扩展性(Scalability)是什么意思呢?

    参考:https://zhuanlan.zhihu.com/p/168757826 论文能发表,在我看来.就是对人类社会的生产活动起到了正面作用. 可扩展性就是分布式技术.通过增加服务器的数量能够满足 ...

  5. 大型网站技术架构(七)网站的可扩展性架构

    2019独角兽企业重金招聘Python工程师标准>>> 扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力. 设计网站可扩展架构的核心思想是模块化,并在此基础上,降 ...

  6. Realm Mobile Platform添加水平可扩展性,支持遗留数据源和复制

    Realm团队宣布其Realm Mobile Platform的1.0版本,旨在通过自动实时数据同步.实时协作.实时通讯等功能为iOS和Android平台创建移动应用程序. \\ 根据InfoQ先前报 ...

  7. MySQL 5.7.2 发布,增强性能和可扩展性

    2019独角兽企业重金招聘Python工程师标准>>> 甲骨文近日发布了MySQL 5.7分支的最新的开发里程碑版本(DMR版)--MySQL 5.7.2.该版本提供了更快的连接速度 ...

  8. Visual Studio 2008 可扩展性开发(九):总结篇

    可以说木匠让小时的我第一次感受到了专业,虽然那时还不知道专业这个词,尤其是那些有年纪的老木匠,专注地在那锯木头.钉钉子.刨出带着香味的木花.他们有其他人所没有的工具,更重要的是他们掌握了那些工具.VS ...

  9. 什么叫系统的可扩展性?

    看是否符合以下2点: 简单的增加服务器数量即可提高系统的吞吐量等性能指标. 支持单点登录. 注意不是"应用程序"的可扩展性. 转载于:https://blog.51cto.com/ ...

最新文章

  1. “5G杀手级应用”Cloud VR 华为如何打响5G第一枪
  2. WAIC | 云天励飞副总裁肖嵘:创「芯」时代 打造自进化城市智能体
  3. hdu 1811 Rank of Tetris (并查集+拓扑排序)
  4. 洛谷P4513 小白逛公园
  5. 实际价格计算:确定方法
  6. [云炬创业基础笔记]第七章创业资源测试1
  7. 从GitHub中整理出来的15个最受欢迎的Python开源框架,你喜欢哪个
  8. H3C批量收集服务器信息,H3C设备服务器采集参数认证过程(包含redfish和restfull协议)...
  9. 中国信通院专家当选ITU-T分布式账本焦点组副主席
  10. 区块链供应链金融应用场景解决方案
  11. Springboot集成urule
  12. css3参考手册在线和下载
  13. js实现扫雷-算法分析
  14. 做了两年前端开发,平时就是拿 Vue 写写页面和组件,简历的项目经历应该怎么写得好看?
  15. 豆瓣电影Top250信息爬取并保存到excel文件中
  16. 双服务器架构实战飞桨部署-自动上色和老相片修复
  17. 脉冲噪声及其消除算法(DPC)
  18. 将一台笔记本电脑作为另一台笔记本电脑的扩展显示器
  19. vue16 自定义键盘属性
  20. 网友创作山寨版英文歌曲《上海滩》

热门文章

  1. Python初学笔记(优达学城)
  2. 中文月份转为英文月份(js)
  3. “WIE玫瑰绽放日”-暨WIE北京分会成立仪式隆重举行
  4. android app技术亮点
  5. 虚拟磁盘discard在qemu中的应用
  6. “聊天剽窃手”--ptrace进程注入型病毒
  7. 【实战】RobotFramework接口自动化-全局变量解决保持登录问题
  8. php整数加.00,phison-up10量产工具v1.78.00PHP数字左侧自动补0
  9. java日历考勤_JAVA做全年考勤日历
  10. java osgi 启动原理_java – 以编程方式启动OSGi(Equinox)?