中本聪的一失之虑让比特币趋于中心化 挖矿和算力集中困境藏隐患

本文将从挖矿和共识协议的弱点、交易效率问题和系统升级维护问题3方面继续探讨区块链常见问题。



来源 | 《区块链核心技术与应用》

作者 | 于斌

责编 | 乔治

出品 | 区块链大本营(blockchain_camp)


《区块链常见问题剖析》系列文章涵盖了诸多区块链领域内的常见问题,这些常见问题基本上会困扰每一个区块链开发者,基本内容包括以下几个方面:

区块链的技术局限、数据冗余、安全性、挖矿、各种共识协议的弱点、交易速度、安全问题、51% 攻击问题、女巫攻击、交易所、以太坊智能合约安全漏洞、挖矿和算力集中困境,比特币和以太坊的交易效率困境、比特币扩容、隔离验证、闪电网络、侧链、DAG 技术、硬分叉历史、系统升级维护等问题,涵盖了区块链各有可能出现问题的领域。

本文是《区块链常见问题剖析》第二篇,上篇文章详细介绍了区块链的技术局限区块链的安全问题,本文将从挖矿和共识协议的弱点交易效率问题系统升级维护问题3方面继续探讨区块链常见问题。

为什么你必须了解这些问题?老铁,读完这篇文章就知道啦!


挖矿和共识协议的弱点


1、中本聪一失之虑

比特币的设计者中本聪毕竟不是神,他在设计比特币时,以去中心化为根本前提,原本希望利用分散的计算资源,通过每个人的计算机解决算力问题,以完成区块链共识和交易上所必需的复杂计算,所以设计了 PoW,以奖励参与计算的节点。在这份协议的基础上,全球每个比特币的参与者都可以开动自己的电脑进行挖矿,公平参与来获取比特币。

但后来的发展应该是设计者不想看到的:由于 CPU 挖矿效率极低,人们发现 GPU 效率相对高点,发展出 GPU 挖矿,再后来有 FPGA,最后发展到 AISC(专用集成电路)挖矿,如果说 GPU 挖矿还和“人人为我我为人人”沾点边的话,那么 AISC 专业矿机的诞生就彻底背离了当初中本聪“一机一票”的设计初衷。

从此 PoW 机制仿佛进入了军备竞赛,最后矿机的集中分布形成了矿场,算力的中心化让后来者无法公平参与。同时算力的过于集中不利于整个比特币网络的安全性,毕竟还有著名的“51%攻击”的潜在威胁。

所谓“矿池”,就是大家整合算力,一起解决同一道题。这种方式需要统一管理,一般做法是矿池开出任务,并准备适合的奖励措施,无论算力高低,把一种类似赌运气的挖矿赌博变成一种统计学的回报,以降低回报的波动性。这种工业式的挖矿革命将随着 PoW 共识机制的推广而逐渐完善。

2、挖矿和算力集中困境

矿池算力集中化带来的相关安全话题是一个热门话题。曾经有一段时间,比特币是一个大众参与的游戏,人们使用自家的家用电脑可以碰运气挖比特币。然而,随着挖矿难度的增加,专业的计算机芯片和专业的比特币采矿集团出现了,并形成了一些大规模的矿池。它们主要分布在中国,以及一些电力便宜的国家和地区。

比起区块链技术应用落地的困境,比特币“挖矿”的生意风景这边独好。这里展开的,是一场“算力”的军备竞赛。由于比特币的机制,矿圈的这场“权力游戏”,胜者甚至可以决定比特币的命运和走向。

因为大多数区块链共识算法的“51%攻击”问题,以及日益集中的矿池算力,导致我们的争议焦点集中在去中心化系统以及实际上日益集中的算力导致的中心化争论上。目前实际上并未出现51%攻击的问题,但不可否认,算力的集中至少违背了比特币去中心化的初衷,成为其继续发展的一大隐患。

3、其他共识算法及其问题

区块链的自信任主要体现在分布于区块链中的用户无须信任交易的另一方,也无须信任一个中心化的机构,只需要信任区块链协议下的软件系统即可实现交易。

这种自信任的前提是区块链的共识机制,即在一个互不信任的市场中,要想使各节点达成一致的充分必要条件是每个节点出于对自身利益最大化的考虑,都会自发、诚实地遵守协议中预先设定的规则,判断每一笔记录的真实性,最终将判断为真的记录记入区块链中。换句话说,如果各节点具有各自独立的利益并互相竞争,则这些节点几乎不可能合谋欺骗用户。而当节点们在网络中拥有公共信誉时,这一点体现得尤为明显。

区块链各种共识机制的比较

共识机制最好的设计是提供可插拔模块化共识。共识算法的选择与应用场景高度相关,不同的应用应该有不同的共识算法的选择。


交易效率问题


1、比特币和以太坊的交易效率困境

谈到交易效率,首先我们需要一个衡量指标,在区块链系统中用 TPS 指标来衡量一个系统的交易效率。

TPS 可基于测试周期内完成的事务数量计算得出。例如,用户每分钟执行6个事务,TPS 为0.10 TPS。同时我们会知道事务的响应时间(或节拍),如此例中,60秒完成6个事务也同时代表每个事务的响应时间或节拍为10秒。

一个系统吞吐量通常由 TPS、并发数2个因素决定。每套系统的这两个值都有一个相对极限值。在应用场景访问压力下,只要某一项达到系统最高值,系统的吞吐量就上不去了,如果压力继续增大,系统的吞吐量反而会下降,原因是系统超负荷工作,上下文切换、内存等等其他消耗导致系统性能下降。

根据这个指标,以比特币为例,其 TPS 约为7,以太坊大概为20,换算到一天24小时的概念,大概相当于比特币30万笔/天,以太坊45万笔/天。

根据 Blockchain 的数据,投资者大概需要平均78分钟来确认一次比特币交易。个别时段,这一平均时长一度高达1188分钟,也就是将近20小时。这将大大降低用户使用比特币的兴趣。

2、比特币扩容

一种货币不是天生就有价值,而是很多人相信它有价值的时候才会有价值。这也可以说在一定群体里形成的“共识机制”。由于前面提到的比特币交易速度慢的问题,比特币扩容一直是社区里被广泛重视的一个重要问题。

首先要澄清的一点是,比特币扩容不是增发比特币,而是针对比特币交易量不足增加比特币的交易量上限。而为什么要增加交易量上限呢?

比特币最初的设计是规定每10分钟(左右)挖出一个大小为1MB的区块,每笔交易平均下来是250字节,于是,每块可以放进4000笔交易,换算成每秒则近似等于每秒7笔交易。这个数字太小了,比如 Paypal 是每秒100笔量级的,而像支付宝这种集中式交易系统,在“双十一”的时候可是每秒100 000笔量级的。和它们一比,比特币根本就不能称之为交易系统。

在比特币的扩容问题上有两个技术难题。一是技术上如何实现,即扩容多少合适。第二个问题是如何实施。考虑到比特币系统是一个分布式系统,它面临的实施层面的问题会更大,因为涉及在实施层面上的新旧节点如何协调,新旧账本如何共存和互认的问题。

分布式系统的升级必须让每个节点都升级才行。如果有人不升级,将会产生分叉。关于分叉,前文详细讲解过,此处不再赘述。

3、比特币的隔离验证、闪电网络与侧链

区块链的可扩展性问题,至今仍旧是一个学术难题。例如交易量问题一直是比特币的最大问题,那么如何实现比特币交易量扩容?简单说应该有以下4种方式。

  • 改变比特币采用的 PoW(工作量证明)共识机制。这相当于改变了比特币的安全机制,或者说采用其他共识机制来进行比特币的升级很难得到原有比特币相关人员的认同。因为比特币已经承载了太多的用户和价值,甚至还承担了整个数字货币和区块链旗帜的重任。想要完全更改共识算法,冒着不可预测的风险去扩容,无论是投资者、矿工、开发者,都不会轻易答应的。

  • 可以改变区块大小,但是不能增得太大,因为数据存储和传输工作量会大大增加。

  • 改变区块生成间隔。这个间隔可以缩小,但是会使得比特币的网络出现大量的孤块和分叉,造成大量的算力浪费和安全隐患。

  • 修改数据存储规则,相同大小的区块能承载更多交易。

隔离验证就是一种能够在不增加区块大小的前提下增加交易容量的方法。

前文介绍过,比特币的一笔交易大概250字节,主要数据包括以下2个部分:

  • 转账记录,也就是交易方和交易额;

  • 用户有权利做这笔交易的证明,这个证明是一组数字签名。

实际上,比特币的签名数据很大。粗略估计,签名大概占了交易大小的2/3。

这样,我们就可以把交易里所有的签名单拉出来,然后把所有的签名打包放在数据块的后面,可以节省大约2/3的空间。也就是说,每笔交易都被分成了2部分:交易和见证(签名)。交易部分只有100字节左右,于是一个1MB的区块里面能放10 000笔交易(原来是4000笔),然后,所有的见证部分,大约1.5MB2MB,都被放到了后面。

采用了隔离验证技术的新节点当然可以接受这种数据格式,而旧节点虽然不能识别数据块后面的见证部分,但它们仍旧会认为前面的部分是合法的区块。这样通过软分叉就可实现隔离见证的升级。采用这种隔离验证的方法,大约可以让比特币提高23倍的交易量。

除此之外,隔离验证还修复了比特币一个被称为“可变性”(Malleability)的缺陷。比特币的签名方式比较复杂,其签名只针对 UTXO,并不包含交易里的所有信息。这样的话,攻击者可以改变交易里的信息,也可以改变交易 ID,但签名信息仍然有效。隔离见证将签名信息从交易中提出来,可以针对整个交易签名,使得比特币的交易不能改变,交易 ID 可以固定。更重要的是,可以更容易地实现一个叫作“闪电网络”的技术。

闪电网络是比特币的一个不改变主链结构的扩容机制,简单说就是一个在链上提供担保的链下交易机制。实际上就是在比特币上签署一个协议,在比特币主链以外再架设一个通道,用户的币存在这个通道上可以进行快速支付。闪电网络是一个去中心化架构的网络,和传统的交易所有本质区别。

例如你经常给某个人转钱,你不用每次都把交易上传到比特币的链上。你们双方可以先在比特币上签署一个协议,交一笔保证金,然后只要你们之间转账的总额不超过保证金,转账就可以私下进行,而这个协议保证如果对方耍赖了,你可以凭着转账记录上传到区块链上把属于你的钱拿走,不用再次通过对方授权。这种方式其实和主链交易没有可比性,它完全是另一种交易形式,提供了另外一种支付手段。闪电网络可以将一部分交易挪到链下进行,减轻了主链的负担。

在交易过程中,闪电网络允许创建“微支付渠道”,类似交易双方建立一个交易链,多笔比特币交易在无须与主链进行互动的情况下,仍能安全地进行。这些在通道中的支付交易速度极快,与当前的比特币支付需要冗长的交易验证时间不同,交易链中的交易只有最后一笔需要真实地进入比特币区块链。如果任何一方终止合作,或者说在约定的时间内没有响应,该通道可以被关闭。重要的是,这种支付是可路由的,它是跨越多跳路径建立的专门通信管道。

相较于为每一个新的合约方创建一个渠道,你可以维持一些渠道,连接少数良好的安全中介机构,并通过他们来完成交易。这就是简单的支付通道背后的思路。目前已经存在这种支付通道。你可以一直向某人发送可替换的交易,每次额度比上一次大一点点,一旦达到某种条件,通道被终结,只有最后一笔支付向全网广播。

事实证明,只需要少量几乎没有争议的比特币升级,人们就可以生成更加通用的支付通道,它允许双向支付,也允许“条件支付”。条件支付允许用户构建一个支付网络。实际上,用户可以通过安全和非信任依赖的方式设定一些条件,例如“如果张三支付了李四,我就支付给张三”。一些事情发生之后,用户的钱包就会自动向比特币网络广播这个条件支付交易,然后等待。

从理论上来讲,这种分布式小额支付网络(闪电网络)可以将比特币的日交易量扩充到数十亿笔,并且极少地使用到区块链,以及仅需少量的交易费。

当然这种闪电网络的机制也存在安全漏洞,如果在这个通道里的交易在未得到主链的确认之前出现安全问题,将会导致一些交易无法确认,造成财产损失。

闪电网络论文提出了生成通道和支付网络的机制。它也是如今比特币创新的一个热点。

侧链是以锚定比特币为基础的新型区块链,就像美金锚定到金条一样。比特币在区块链里相当于是货币体系的黄金地位,具有最去中心化、最多分布节点、最公平区块链。侧链是以融合的方式实现加密货币金融生态的目标,而不是像其他加密货币一样排斥现有的系统。利用侧链,我们可以轻松地建立各种智能化的金融合约,如股票、期货、衍生品等。用户可以有成千上万个锚定到比特币上的侧链,特性和目的各不相同,所有这些侧链依赖于比特币主区块链保障的弹性和稀缺性。比较著名的比特币侧链是 Rootstock 和 BlockStream 推出的元素链。

4、基于 DAG 的提速技术

DAG(Directed acyclic graph),有向无环图,是计算机领域一个常用的数据结构。因为独特的拓扑结构所带来的一些特性,它经常被用到处理动态规划、导航中寻求最短路径、数据压缩等场景中。

第一次提出 DAG 跟区块链结合是在 Nxt 社区,可以发现 DAG 最初出现就是为了解决区块链的效率问题。比特币的效率一直比较低,基于PoW共识下的出块机制是一个原因,由于链式的存储结构,整个网络中同时只能有一条链,导致出块无法并发执行。社区有人提出用 DAG 的拓扑结构来存储区块,这个时候更多还是类似侧链的解决思路,不同的链条存储不同类型的交易,降低出现“双花”的可能,在之后某个节点需要合并的时候,几个分支再归并到一个区块。

通过以上设想我们可以改变区块的链式存储结构,变成区块 DAG。在区块打包时间不变的情况下,网络中可以并行地打包n个区块,网络中的交易就可以容纳n倍。

这时候 DAG 跟区块链的结合还是停留在侧链的思路,不同类型的交易可以并行在不同的链条进行,达到提升性能的目的。这时候的 DAG 还是有区块的概念。

但是区块的概念其实也是妨碍我们提升效率的关键因素。那么,可不可以没有区块的概念呢?为什么一定需要区块呢?能否让每一笔交易直接参与维护全网的交易顺序?这样交易被发起后直接跳过打包区块的阶段,直接融入全网,如此达到所谓的“无区块”(blockless)效果。这样确实连打包交易出块的时间都省去了,DAG 最初跟区块链的结合就是为了解决效率问题,现在不用打包确认,交易发起后直接进入确认网络,理论上效率自然提高很多。

自此,以 blockless 独树一帜的 DAG 区块链雏形基本形成。其中 IOTA 和 Byteball 在市场上的表现最为耀眼。DAG 系的区块链有些概念很有趣,了解这些概念更容易理解 DAG 技术。

DAG 与链式结构的本质区别在于异步与同步通信。DAG 通过将事务操作进行异步处理来增加网络吞吐量,采用某种传播算法在节点间发送操作日志,并通过某种机制(IOTA 每次验证前2条交易,并计算一个 PoW 代表权重)将一个权重赋给该操作。相比起同步操作的链式结构,DAG 结构与任何异步机制一样,能够带来的提升在于吞吐量,但是产生的问题则在于无法有效预测交易被确认的时间与周期。

DAG 网络一个重要的问题就是解决网络宽度。DAG 网络中,每笔交易被确认,都需要链接到已经在网络中存在的并且比较新的交易;如果都选择网络中比较早的交易,会导致网络宽度过宽,新的交易难以得到确认。理想的状态是,新的交易发起时,选择网络中已经存在并且比较新的交易做链接确认,这样网络的宽度保持在一定范围,能让新的交易有足够快的确认时间。DAG 的主要特点如下:

  • 交易速度快:DAG 摒弃了区块概念,交易直接进入全网中,所以交易速度预期比基于 PoW 和 PoS 的需要出块的区块链会快很多;

  • 无须挖矿:DAG 把交易确认的环境直接下放给交易本身,无须由矿工打包成区块后同意交易顺序。所以 DAG 网络中没有矿工的角色;

  • 无手续费:交易发起只需要做简单的 PoW 工作量证明,整个网络中的 PoW 都是发起交易者自己做的,而不是交给矿工,所以发起交易无须手续费;

  • 需要见证节点:DAG 需要见证人机制的存在,这一部分不管是 DPoS、PoS、PBFT,大家最终都会在效率、安全性上寻求一种平衡。

5、其他提速思路

目前区块链效率问题比较突出,但是笔者相信随着时间的推移会有更多的新技术产生,提速可以从以下几个方面来考虑。

  • 网络带宽:网络带宽的发展会进一步允许更好更先进的分布式共识机制的产生;

  • 硬件速度:包括各种 CPU、GPU 等硬件速度的不断提高会大大提高区块链的效率;

  • 共识算法:目前的算法都有缺陷和不足,将逐步发展,协议也将不断完善;

  • 并发执行:链状结构理论上缺乏并发机制,类似 DAG 之类的异步并发技术也将不断完善;

  • 数据格式:区块链里存储的数据格式可通过压缩技术存储,提高区块链的运行效率。


系统升级维护问题


1、硬分叉史记

以太坊:2017年成功实施的“拜占庭”硬分叉,通过对底层协议的升级创建新的规则,来完成对整个系统的性能提升和功能增设。2017年10月16日,以太坊官方宣布,“拜占庭”在以太坊第437万个区块高度成功实施硬分叉,将协议升级后调整了区块奖励,减小区块大小,并为平台上包括区块链隐私性等问题引入了零知识证明等解决方案,完成了开发人员打造更为适合去中心化应用生态环境的技术目标。

a)以太坊(ETH)和以太经典(ETC)

The DAO 计划基于以太坊智能合约建立一个众筹平台,于2016年5月正式发布,截至当年6月,募集资金超过1.6亿美元。之后,The DAO 被黑客利用智能合约的漏洞,转移了市值五千万美元的以太币。为了挽回投资者资产,以太坊社区投票表决决定将更改以太坊代码,希望索回资金。为此,以太坊在第1,920,000区块进行硬分叉,回滚所有以太币(包括被黑客占有的)。

但是,有一部分人认为以太坊这种做法违背了区块链的去中心化和不可篡改精神,坚持在原链上挖矿,从而形成两条链:一条为不承认回滚交易的链—以太经典(ETC),一条为承认回滚交易的链—以太坊(ETH),各自代表不同的社区共识以及价值观。分叉时持有以太币的人在分叉后会同时持有 ETH 和 ETC。

以太雾(ETF)是以太坊在2017年12月14日分出的公有链,主打雾计算的创新技术,增加了分布式储存和分布式计算的能力,拥有缩短网络延迟、节省计算资源、减小核心网络压力的优势,同时带来更高的可靠性。

b)比特币黄金

比特币黄金(Bitcoin Gold,BTG)是在2017年10月25日左右的又一次比特币硬分叉产物。比特币黄金是对大矿工们集中算力的一种对抗,比特币矿工越来越多地使用定制的 ASIC 来挖矿,但 ASIC 价格昂贵,只有大量买进时才会降低价格,所以大矿工们可以通过较低价大量买进 ASIC 来获得巨大的算力,导致比特币网络的算力被集中。比特币黄金将使用一种新算法来避免情况恶化。

2、系统升级维护难题和分叉

区块链系统的升级维护包括硬件和软件两个方面

硬件方面将随着技术的发展而逐渐完善,随着区块链的发展,将有更多的区块链硬件设备涌现,包括矿机、芯片、区块链硬件节点,以及各种应用相关类硬件出现。比如基于区块链系统设计的各种物联网设备、智能电表、水表、气表、手机以及各种穿戴设备等。

软件方面的升级主要包括以下几个方面。

  • 数据结构:例如比特币现金(BCH)从1MB区块改为8MB区块就是一种数据结构的升级;

  • 共识算法:随着系统的运行,最初设计的共识算法满足不了系统日益发展的需求时可以修改共识算法,带来的将是系统的升级;

  • 加密算法:算法问题是区块链安全的核心,再安全的算法也是百密一疏,因此随着黑客技术的进步将不断催生加密算法的改进和升级;

  • 应用升级:系统的应用发生改变时也面临升级问题;

  • 漏洞修补:任何软件系统将不断完善,寻找自身漏洞并不断完善。

以上任何一种类型的修改都将可能导致分叉的出现。当然分叉也包括人为因素,因为毕竟区块链网络是由人来控制的。分叉后不可避免地会出现新、旧链之间的数据协调以及用户的分流问题。

编辑声明:互链脉搏是共享、共建的区块链内容发布平台。进驻内容创作者需遵守《互链脉搏投稿须知》、《互链脉搏专栏号平台服务协议》、《互链脉搏平台运营规范》等平台规定。文章内容为作者个人观点,不代表本站立场且不构成任何投资建议 。本站拥有对此声明的最终解释权。
如果读者发现稿件侵权、失实、错误等问题,可联系我们处理:blockob2018@163.com
0

参与评论

最新评论