比特股2.0:每秒10万次转账的高性能和可扩展性

币态巴比特2017-11-24 20:59:20  阅读 -评论 0

比特股2.0:每秒10万次转账的高性能和可扩展性

为了给业界提供一个有可能代替现有的金融平台的方案,高性能的区块链技术对加密货币和智能合约平台来说是必须的。为了能够实现比VISA和MasterCard加起来每秒可以处理的交易数量更高的级别,比特股从底层开始重新设计。通过股份授权证明机制,比特股网络可以在平均一秒的时间内确认交易,唯一的限制只是光速。

总览

要达到这个产业里面最顶级的性能,比特股借鉴了从LMAX交易所里面学到的经验。这个LMAX交易所可以在每秒内处理高达6百万次的交易。在这个经验里面,关键点是以下这些:

将一切东西放在内存里面 将核心的业务逻辑放到一个单线程里面 将加密算法操作(哈希和签名)放在核心业务逻辑以外 将校验的操作分成状态独立和状态依赖检查 使用一种面向对象的数据模型

通过遵守这些简单的规则,比特股在没有进行任何显著性优化工作的情况下就实现了每秒处理10万次转账的性能。如果有进一步的优化工作的话,会让比特股可以达到跟LMAX交易所相近的性能表现(即每秒600万次)。

应该需要注意到,比特股达到的性能表现是高度依赖其中的一个兼容交易协议。如果想用业务逻辑运行在一个进行加密算法操作和用哈希识别器去调用所有对象的虚拟机上的话,是不可能去达到同样层级的性能表现的。区块链天生就是单线程的,而单核的CPU的性能是各种资源中最短缺的、最难扩展的一个方面。比特股设计成能够让这个单线程的执行达到极可能的高效。

背景

区块链是一个下达关于确定去修改一个共享的全局状态交易的全球账本。这些交易中包含的命令可以改变其他交易的有效性。例如,你不能在你的支票存入生效前去从你的银行账户理解支取金钱。在能够影响一个特定的账户的所有先前交易都被处理之前,你不可能知道一个交易是否有效。

如果两个无关联的账号没有共享任何通用的依赖关系的话,理论上这两个账号的交易可以是在同一时间进行处理的。实际上,在一个由具备仲裁条件的智能合约驱动的账本上识别哪些交易是真正独立存在的耗费是很棘手的。唯一的保证两个交易是真正独立存在的方法,是通过维护完全分离的账本,然后定期在它们之间传输价值。如果要用这种性能表现的权衡关系去打比方的话,可以像是非一致内存访问架构(Non-Uniform Memory Access ,NUMA)和一致内存访问架构(Uniform Memory Access ,UMA)之间的关系。

实际上,一致内存访问架构对开发者来说是更容易去设计的,而且耗费更低。非一致内存访问架构通常是在建造超级计算机和大型计算机集群时作为不得已的方法去采用的。

计算机产业逐渐意识到通过平行计算去实现性能的扩张并没有早期那么容易,毕竟那时候最需要做的事情只是提高处理器的频率而已。就是因为这个原因,处理器的设计者们在尝试去采用多线程设去提高性能之前都在拼命去提高单线程的性能。当多线程还不够的话,而且只有这样的话,集群计算这个方案才会被考虑。
很多加密货币产业的人在没有探索过在技术上一台电脑的单个核心能实现什么之前,就尝试通过用集群计算的方案去解决可扩展性的问题。

 LMAX Disruptor分解器技术

LMAX 分解器提供了一个在单线程上可以实现什么表现的学习例子。LMAX是一个针对终端顾客的交易平台,目标是成为世界上最快的交易所。它们一直很慷慨地将他们学到的东西公布出来。
这是它们架构的概要总览:

业务逻辑处理器是所有顺序交易和订单匹配发生的地方。它是一个可以每秒处理百万级别订单的单线程。这个架构可以很容易地用在加密货币和区块链设计的领域。

输入分解器扮演的角色是从很多来自不同源头的用户里面收集订单,然后分配给它们一个确定的顺序。当给它们分配好顺序后,它们会被复制、记录然后广播到很多冗余的业务逻辑处理器。输入分解器是高度并行的,而且容易分包到一个计算机集群系统中。

当业务逻辑处理器处理完输入后,一个输出分解器负责通知那些关心结果的人。这也是一个高度并行的任务。

最终,通过在业务逻辑处理器里使用单线程样品化处理器和Java虚拟机,LMAX可以在每秒内执行600万次交易。如果LMAX可以达到这个成绩,那么加密货币和智能合约平台平不需要在每秒连10个交易都不到的情况下去考虑集群网络方案。

 高性能区块链

要建造一个高性能的区块链,我们需要使用LMAX同样的技术。这是几个必须实现的事项:
将所有东西放在内存上,避免同步原语(锁定,原子操作),避免在业务逻辑处理器上不必要的计算。

由于内存的设计是高度并行的,因此越来越便宜。追踪互联网上每个人的账户余额和权限所需要的数据量是可以放在小于1TB的RAM内存上,这用不到15000美元的价格就能买到了,而且可以装在商品化(高端)的服务器主板上。在这个系统被30亿人采用之前,这类硬件会在普通的桌面计算机里面看到。

真正的瓶颈不是内存容量的需求,而是带宽的需求。在每秒100万次交易和每笔交易占256字节的情况下,网络会需要256MB每秒的数据量,即1Gbit/s的带宽。这样的带宽在普通的桌面计算机上并不是常见的。不过,这样的带宽只是二代互联网100Gbit/s带宽的一点而已。这个二代互联网被供应给超过210个美国教育机构、70家公司和45个非盈利机构和政府机构。

另一句话说,区块链技术可以轻松将所有东西保存在内存里,而且如果设计的合理的话可以扩展到支持每秒百万级别的转账。

分配ID并避免哈希计算

在单线程系统的系统里面,处理器周期是需要被保留的稀缺资源。传统的区块链设计使用加密算法基础上的哈希计算去生成一个全球独特的ID系统,以实现统计学上不会有碰撞的保证。进行这些哈希计算的问题是,它会耗用越来越多的内存和处理器周期。与一个直接的数组索引相比,这种方式会显著地占用更多处理器的时间去查找一个账户的记录。例如,64位的整数对比和操作起来都要比160位以上的ID更简单。更大的哈希ID机制意味着CPU缓存里面的空间更少了,而需要更多的内存。在现代的操作系统里不常访问的随机存储器是会被压缩的,不过哈希识别器是随机数,这是没法压缩的。

幸好区块链给了我们一个在全球内分配独特的ID的方法,这些ID互相之间不会起冲突,因此完全避免使用像比特币地址那样的哈希算法为基础的识别器去引用一个账号、余额或者许可。

从业务逻辑处理器中去除签名校验

所有在加密货币网络的交易依赖于用加密算法签名去校验权限。大部分情况下,请求的权限可以由其他交易的结果改变。这意味着在业务逻辑处理器里面,权限需要被定义成与加密算法计算无关的情况。

要达到这个目的,所有的公钥需要分配一个独特的和不可代替的ID。当ID被分配后,输入分解器可以校验提供的签名与指定的ID是否匹配。当交易到达业务逻辑处理器后,只需要去检查ID就可以了。
这个同样的技术可以在拥有不可代替的静态ID的对象上实现去除前提条件检查。

为静态校验设计交易

对交易来说,有很多特性是可以进行静态检查的,而不需要引用当前的全局状态。这些检查包括参数的范围检查、输入的去冗余和数组排序等。通常来说,有很多检查是可以被进行的,如果交易包含它“假设”是全局状态的数据的话。在这些检查被执行后,业务逻辑处理器必须要做的事情就只有去确保这些假设还是正确的,这个过程总结下来就是检查一个涉及交易签名时间的对象引用的修改时间戳。

 智能合约

很多区块链正在整合一种通用的脚本语言去定义所有的操作。这些设计最终将业务逻辑处理器定义为一个虚拟机,而所有的交易被定义为由这个虚拟机运行的脚本。这个方案有一个在真实处理器上的单线程性能极限,并且由于将所有东西强制通过一个虚拟处理器去执行,让问题更严重了。一个虚拟处理器即使用上了实施编译技术(JIT)也总会比一个真正的处理器要慢,不过计算速度并不是这种“任何东西都是一个脚本”方案的唯一问题。
当交易被定义在这么低的层次上,意味着静态检查和加密算法操作还是会被包含到业务逻辑处理的环节里,这也让会让整体的吞吐量降低。一个脚本引擎永远不应该要求执行一个加密算法签名检查的请求,即使这个请求是通过原生的机制实现的。

根据我们从LMAX上学到的课程,我们知道一个为区块链设计的虚拟机应该考虑到单线程表现。这意味着在一开始就要为实施编译优化,而且最常用的智能合约应该通过区块链原生支持,而只有那些不常用的、定制的合约会运行在一个虚拟机上。这些定制的合约设计的时候要考虑性能,这意味着虚拟机应该将可以访问的内存范围限制到可以放在处理器缓存上的级别。

面向对象的数据模式

在内存中保存所有东西的其中一个好处是,软件可以设计成模仿现实世界中数据的关系。这意味着业务逻辑处理器可以迅速根据内存内的指针去找到数据,而不是被迫去进行耗费高的数据库查询任务。这意味着数据不需要复制就能访问了,而且可以当场就被修改。这个优化提供了比任何数据库为基础的方案高一个数量级的性能表现。

交易大小

一个每秒可以处理10万次交易的区块链在每一秒都会产生大量数据。在一些正在竞争的网络如瑞波和比特币里,平均交易的大小是250字节。而在比特股上,相似的交易仅仅是100个字节。换句话说,其他正在竞争的系统在同样数量的交易情况下需要2.5倍的带宽去处理。假设连接到互联网的带宽是1Gb/s,只需要0.1秒就可以将一个含有10万次交易的区块传播出去。竞争性的网络需要0.25秒。如果考虑到延迟和点对点网络的多次中转过程,很明显交易的大小会影响到区块的间隔,因此影响到确认的延迟。
交易的大小通常是一个CPU必须在关键的通道上处理的数据数量的指标。因此,它可以显示出在在一个单线程里面CPU命中速度有多快。在所有的协议里面一些优化是可行的,如果假设所有的节点都有之前所有广播的交易,而且只需要一个转账ID的排序表去广播所有的区块。这将会是一个具体的实施细节。

结论

设计一个高性能的区块链并不是什么火箭科学,而且既不需要复杂难懂的协议,也不需要在网络上的所有节点里分处理任务。反而,要建造一个高性能的区块链最需要的事情应该是在核心业务逻辑上去除与关键性、订单依赖性和评估无关的计算任务,并且设计一个可以帮助优化这些事项的协议。这就是比特股做了的事情。

转自:比特股之家(http://www.bts.hk/bts20-high-performance.html)

译者:打超人的小怪兽

责编:薄荷凉幼

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

    参与讨论 (0 人参与讨论)

    相关推荐

    中信银行打造“区块链”信用证结算!

    中信银行打造“区块链”信用证结算!

    科技不会改变金融的实质,但却能让金融服务更高效,能让资金供、需方信息不对称的问题更好地解决。近期,中信银行首个区块链项目——基于区块链的国内信用证信息传输系统(简称BCLC)(一期)成功上线,这是国内银行业第一次将区块链技术应用于信用证结算领域。 据中信银行国际业务部总经理助理张栩青介绍,将现在流行的区块链技术应用在国内信用证中,改变了银行传统信用证业务模式,信用证的开立、通知、交单、承兑报文

    中国信息技术部门成立区块链研究实验室

    中国信息技术部门成立区块链研究实验室

    暴走时评:本月初,中国政府对国内的ICO和数字货币交易所的打击在世界范围内引起了强大反响,但政府已经多次声明不会将区块链与数字货币划等号,依然非常重视区块链技术在中国的发展。鉴于中国工业和信息化部成立了一个专门研究区块链的实验室,这一论调也得到了进一步的证实。 虽然中国政府最近在大力打击比特币交易所和ICO,但仍然致力于开发区块链在其他领域的潜力。 据财新网报道,中国工业和信息化部已经成立了一

     分布式账本中的生命科学

    分布式账本中的生命科学

    生物科学是医学领域涉及遗传研究,疾病预防和生活方式治疗(lifestyle treatments)的学科。它已经存在了很长时间,但区块链技术的基础设施应用给该学科提供了重大进步的可能性。 根据Pistoia Alliance进行的2016年6月份高级制药和生命科学领袖调查,83%的受访者表示,他们预计在五年内将全面采用区块链技术。 Pistoia Alliance是一个全球性的非营利组织,致

    印度版“滴滴”获得1000万美元融资,已经开始接受比特币支付

    印度版“滴滴”获得1000万美元融资,已经开始接受比特币支付

    由美国著名创业孵化器Y-Combinator支持的印度共享汽车公司Drivezy刚刚获得了6.5亿卢比(大约1000万美元)融资。该公司已经将这笔资金中的一部分用于开始在其平台上接受比特币支付。至此,该公司已经从各个渠道获得了1650万美元资金。其中美国和日本公司进行了500万美元的股权投资。 Drivezy首席执行官Ashwarya Singh告诉新闻媒体Econotimes说,他们刚刚已

    区块链vs.核能:日本最大电力公司东京电力(TEPCO)寻求使用区块链减轻对核电的依赖

    区块链vs.核能:日本最大电力公司东京电力(TEPCO)寻求使用区块链减轻对核电的依赖

    东京电力公司 (TEPCO) 对于能源过度中心化的风险可以说绝不陌生。 也许最著名的就是2011年发生的福岛核电站事故,这个日本最大的能源公司如今正在寻求区块链技术来防止这种灾难再次发生。 然而,从使用微型风车的分布式风力发电到用于存储在电力成本低时购买的电力的智能电池,可替代能源项目一直以来都属于个人慈善事业。 然而,TEPCO风险投资部门主管Jeffrey Char认为区块链能够帮助为这

    继证监会发表代币发行声明之后,香港交易所Gatecoin将下线部分ICO币

    继证监会发表代币发行声明之后,香港交易所Gatecoin将下线部分ICO币

    经过一系列监管以及合规审查后,香港交易所Gatecoin将会下线那些被金融监管部门定性为"证券"的代币。 香港加密货币交易所Gatecoin透露,如果在该平台交易的ICO代币在法律上符合"证券"定义,他们就会下线这些代币。据巴比特上月报道,香港主要的金融监管部门证券及期货事务监察委员会(SFC)表达了对ICO这种日渐普及的募资模式的担忧。 尽管ICO中售卖的数字代币通常都被定义为虚拟商品,但

    分叉后谁是正牌比特币?Xapo选择累积难度最高的链

    分叉后谁是正牌比特币?Xapo选择累积难度最高的链

    针对十一月份即将发生的SegWit2x硬分叉,比特币钱包Xapo于昨日发布了一份立场声明,与此前的Bitcoin Cash硬分叉一样,该钱包商会支持累积难度最高的链作为"正牌"比特币。以下为Xapo官方的公告: 当比特币区块链产生第494,784个区块(大约发生在2017年11月18日)时,比特币矿工将会挖取到一个介于1MB和2MB之间的区块(SegWit2x)。届时,一些矿工可能会选择忽视这

    俄罗斯总统普京:加密货币构成了重大风险

    俄罗斯总统普京:加密货币构成了重大风险

    俄罗斯总统弗拉基米尔•普京(Vladimir Putin)在昨天的一场会议中提到,加密货币在欺诈和洗钱方面构成了重大风险。 据俄罗斯媒体报道,普京在一场有关加密货币和金融技术的会议中发表讲话。他在会议中正式发声支持加密货币交易新规,并表示俄罗斯在制定监管政策时应参照其他国家的做法。 普京在这场会议中发表的演讲是他迄今为止就这一话题作出的最全面的评论。他在2015年夏天首次谈到加密货币,当时就

    麦妖榜
    更新日期 2019-08-20
    排名用户贡献值
    1牛市来了24651
    2BitettFan24169
    3等待的宿命23810
    4区块大康20357
    5六叶树20310
    6linjm122718877
    7天下无双16192
    8lizhen00215280
    9让时间淡忘14552
    10yelanyi050511329
    返回顶部 ↑