权益证明 卡尔达诺网络有多安全?

huangwenwei · 2019年04月10日 · 332 次阅读
本帖已被设为精华帖!

最近加密货币 51% 攻击话题比较热门,以太坊经典网络被攻击事件促使其他加密货币社区反思其系统实现的安全性。这篇长文全面地详细解释剖析卡尔达诺结算层的安全模型。首先论述比特币网络的安全性、何为 51% 攻击及当前使用权益证明(Proof-of-Stake: POS) 共识算法的公链安全模型面临的共同问题,然后深入了解卡尔达诺公链的权益证明共识算法 (Ouroboros) 原理、主链 ADA 发币规则和当前持币者的大概分布情况、权益矿池相关和经济激励模型、最后并总结作者的一些观点。

how secure is Cardano?

比特币网络为什么是安全可靠的?

区块链网络依赖哪些特征才能保证足够安全呢?,比特币是区块链技术成功应用的案例、加密货币领域的鼻祖,以下两个特征是任何分布式账本的关键要素,比特币网络亦如此:

  • 不可篡改:账本中的历史交易记录不可篡改 (Persistence: Past transactions in the ledger should be immutable)
  • 交易及时被打包:交易记录在有限的时间必须要登记在账本中(Liveness: New transactions should be included without undue delay)。

以下两种技术确保比特币网络账本不可被篡改:

  • 工作量证明 (Proof-of-Work PoW): 参与挖矿节点通过算力优势计算密码学谜题。第一个算出结果的挖矿节点获得出块记账权。记账权由硬件矿机的算力和一点运气成分决定。工作量证明共识算法保障了出块方的随机性,参与挖矿的节点对整个分布式网络算力的占比和出块机会成正比例关系。
  • 最长链规则 & 和算力最强规则:假设主链被分叉成多条链,黑客试图篡改账本情况下会发生,最长链会被当作真正版本的比特币网络。只能通过工作量证明才会记账,最长链的产生成本最高,因而会被当作有效版本的账本,矿工受出块激励的影响会选择在最长链上继续参与工作量证明计算。最近社区的说法改成算力最强规则,算力强的分叉链会被当作主链。

一旦挖矿节点记账成功,区块中的交易手续费和 coinbase 交易中的 BTC 归其记账节点所有,为了提高交易被区块打包的效率,足够多的手续费会吸引矿工构建区块时打包其交易,有效的激励方式确保了交易会在有效的时间内被矿工在区块种打包确认。

比特币网络在过去的十年 99.98% 在线,到现在为止尚未被披露出现已知漏洞。比特币在区块链技术实践上能够稳定地运行,同时安全模型在 2015 已被学术理论证明是正确的。全网大多数算力的节点都是诚实节点的前提下,比特币网络被验证是去中心化且安全的。

什么是 51% 攻击?

如果诚实节点的算力小于 51%,单个组织或者个人有力量控制全网 51% 算力,成功地实施 51% 攻击就成为可能。依赖工作量证明共识算法的公链,控制全网 51% 以上算力的黑客比其他节点能更快地算出密码学谜题而获得记账权。

算力优势促使黑客有能力分叉出包含最长链区块的不同账本,从而导致交易被篡改。因而导致主链失去不可篡改和交易及时地被记账的基本特点 persistence (immutability) and liveness (censorship resistance)。

If an attacker can create blocks faster than the rest, he can re-write the chain’s history

虽然黑客无法直接篡改账户余额和执行不存在的交易,但是已经被确认的交易可能会被取消,黑客控制的算力越大,能篡改的已被确认的区块会越多。意味着黑客能够执行双花,如果黑客在现实世界中用比特币购买实物或者换成交易平台的法币,就实现了币财两获。

以太坊经典网络最近出现的 51% attack on Ethereum Classic 攻击源于两个相对容易达成的攻击条件:首先它使用的 hash 算法和父链以太坊的加密算法一样,但是以太坊经典网络的挖矿难度更小,即使实施攻击的黑客不知道是谁,在利益的驱使下,这足以吸引以太坊网络的矿工把算力切换到以太坊经典网络共同实施挖矿攻击以获利。第二个条件是其网络的挖矿难度较低,按照当时以太坊经典网络的难度(15–1–2019) 计算的话每小时 $4,106 的成本就能实施 51% 攻击,黑客不需要拥有矿机仅从 NiceHash 租用算力就能发起攻击。

Ethereum Classic is both ‘NiceHash-able’ and a minority chain, 15–01–2019

目前 51% 攻击多发生在市值较小加密货币(因为市值小,攻击成本低)和在挖矿算法相同的区块下算力较低的公链。人们也经常讨论比特币网络单个大矿池的算力比例,在2014 年七月 GHash.io 矿池掌握了比特币网络全网 51% 算力,具备了发起攻击的能力。算力占比越大记账权胜出会越大,矿工回报更高,所以越大的矿池会更吸引更多的矿工加入,促使大矿池越来越大最终得以控制全网超过 51% 的算力,这篇文章有披露统计。这被称为公地悲剧 (the tragedy of the commons):尽管参与者珍视权力下放(去中心化),但却没有人愿意为此承担责任。However, miners’ ideals and morality might still drive them to behave differently.

2018-6-23 我发表的另外一篇文章,提到当前有三大比特币矿池掌握全网 52.3% 的算力,然而随着 18 年的熊市比特币价格大幅度回落,因为利润被压缩导致很多大型矿场关门大吉,比如比特大陆当时遇到的危机。本文发出的当月,未知名的矿工成为了全网算力比例最大的群体

Bitcoin’s hash rate distribution, 15–1–2019

权益代理系统有何不同?

激励模型吸引越多的诚实节点加入网络,黑客实施攻击的难度就越大,工作量证明已被验证是一种安全的模型,但还存在如下缺陷:

  • 矿机的大量计算消耗电力能源。
  • 工作量证明共识算法的加密货币总发行量有上限,矿工从挖矿交易 (coinbase) 获取的回报越来越少直到收益只剩下交易中的手续费。未来在仅有手续费回报的情况下是否还有矿工愿意参与挖矿吗?(译者注:Bitcoin SV 大区块能够吸引矿工继续投入挖矿吗)
  • 工作量证明共识网络中持币人在不跑挖矿节点的情况下不具有参与网络治理的权力,面临分叉时只有开发者或矿工才有决定权,持币人双方不支持的话只能选择卖币离开比特币生态。

权益证明共识算法试图解决工作量证明共识算法的缺陷。在工作量证明系统中,参与者想要参与共识决策,他们必须把法币“抵押”在矿机和电费上,而权益证明系统中的参与者通过使用区块链原生的加密货币表明自己在“游戏中”具备参赛权。权益证明共识算法不需要接密码学谜题、减低电力能源的消耗和通过投票的方式让持币人共同加入公链治理。

权益证明共识共识算法听起来很棒,但其实在设计上面临如下问题:

首先是低成本模拟 (costless simulation) ,也称为零抵押问题(nothing at stake)。由于出块没有实际的资源消耗,低成本地分叉出多条竞争链的状况会非常普遍,但在工作量证明算法消耗电能的情况下,不会有愚蠢的矿工到机器切换到竞争链进行工作量证明挖矿。还有 grinding attacks 攻击,区块数据本身作为决定出块矿工随机数的种子,黑客会在随机数上作弊让自己永远当选为出块者。

一些使用权益证明共识算法的公链 (例如以太坊的 Casper 算法) 提出通过冻结抵押权益证明的币、一旦被发现存在作恶行为,抵押币就会被惩罚,试图解决零抵押问题。上述两种方法虽然可震慑防范作恶节点,但这又限制了抵押币的流通性并存在诚实节点丢抵押币的风险(例如:51% 攻击,诚实节点被利用,在以太坊 Casper 算法 34% attack 已足够发起攻击)

工作量证明共识算法的公链最长链规则并不适用于使用权益证明共识的公链。权益证明共识算法还面临启动问题,首次加入或掉线一段时间后重连的节点需要依赖接收其他在线节点的数据信息。启动问题导致网络更易受到长程攻击 (long range attacks)。权益证明共识算法存在无代价模拟 (costless simulation) ,最长链原则并不能成为判断是否为主链依据。发起长程攻击的节点提供一个与主链同级可选的替代链,限制或不提供最新信息给连接到它的节点验证是否当前的区块是否为正确版本的链。

权益证明共识算法并不是一个新概念,除了卡尔达诺,目前还没存在能够达到比特币网络同等安全等级的权益证明算法公链。

卡尔达诺是如何解决权益证明共识算法面临的问题呢?

2008年10月31日比特币白皮书发布,2009年1月3日比特币网络作为一次实验性产品正式启动。白皮书的理论非常简单明了且非常成熟,在2015 年比特币网络的安全模型才被学术上证明是正确的。工作量证明的概念于 1997 年被 Adam Back (现任 Blockstream CEO) 提出,应用于 Hashcash 系统,Hashcash 初衷是为了阻止 DoS(Denial of Service) 攻击和垃圾邮件攻击。工作量证明算法被成功应用于比特币系统的激励模型之后才广为人知。

卡尔达诺使用权益证明共识算法,并解决该算法自身的缺陷。比特币的迭代历程体现了实现先于学术理论进化模型。不同的是,卡尔达诺项目的推进方式为学术研究先于编码实现,每项安全模型都是经过严格的学术论证为正确之后才编码实现。

卡尔达诺由两层组成,分别是用以运行加密货币交易的结算层和用以运行智能合约的计算层,显然探讨安全模型时两层都应覆盖,这篇文章仅专注于结算层的安全模型,智能合约接下来我也将会写文再深入研究。

卡尔达诺作为一项由 Input Output Hong Kong (IOHK), EmurgoCardano Foundation 三个组织发起的项目,IOHK 只负责区块链技术的开发。自 2015 年项目启动,超过 40 篇学术论文已经发表,在 IOHK 研究文库 中可以查阅。Ouroboros 是结算层的权益证明共识算法。

Ouroboros (Classic)

Ouroboros 第一版 Ouroboros classic 是拜伦版本的共识协议,专注于保证安全的同步设置。所有在线的节点并做好被选举为出块的准备的情况下,在线所有节点的时钟要保持同步。

在 Ouroboros 中,一个时间周期称为“世 (epoch)”,每个 epoch 被切割为 21,600 个持续 20 秒的时段 (slots),意味着每轮 epoch 周期持续 5 天。在二十秒的 slot 时间窗口中,每个被选中的 slot leader (一个被选中的节点) 获得记账权。slot leaders 在每轮 epoch 周期开始之前都是随机被选出。

Ouroboros classic 使用一种叫做 “Follow-the-Satoshi” 的方法,该方法在 2012 年被莱特币的创始人 Charlie 首次被提出。每个最小单位数量的币 (0.000001 ADA, 在比特币中 1 Satoshi is 0.00000001 BTC)作为一票权益去竞争记账权,这意味者参与竞争出块没有最少币量的限制。但获得出块权的概率与节点委托的权益成正比——越多抵押,被选中出块的可能性越大。

竞选过程中,一个随机数作为节点的标记,从竞争出块的权益矿池中选出幸运者的随机算法更重要。一个随机数的种子被硬编码在创世块中(genesis block),决定第一个 epoch 的 slot leaders 。Ouroboros classic 共识协议使用可公开校验的共享密码 publicly verifiable secret sharing (PVSS) 的密码学方案生成下一轮 epoch 的随机种子。也就是每轮 epoch 开始,节点就开始“抛硬币”生成随机数,并通过 PVSS 把算出来的随机数结果加密写入区块链以待公开验证(具体的算法解释)。临近每一轮 epoch 结束,由节点产生的这些随机数通过数字逻辑的异或门运算推导出最终的随机数,参与竞选出块的节点使用这个最终随机数作为下一轮竞选 slot leaders 凭证。由于下一轮 epoch 使用的随机数据产生于上一轮 epoch 期间,神话故事中一条巨蛇咬住自己的尾巴,因此卡尔达诺中的 PoS 共识算法被命名为 Ouroboros,关于卡尔达诺项目中出现各种术语来源,推荐阅读这篇文章:Unraveling the Myths of Cardano’s Nomenclature

Ouroboros

基于网络中节点全部诚实的前提下,Ouroboros classic 是首个通过学术证明能够保证分布式网络同步设置中不可被篡改和网络服务持续可用的权益证明共识协议。但现实场景中节点可能会由于客观或主观因素导致下线,譬如出现服务器断电或者死机的情况,甚至节点的运维人员主动关机。另外服务器的网络时钟出现不同步的现象也比较常见,实际上节点上的很多是非同步设置。再者 ouroboros classic 协议中的 slot leaders 选举是全透明且 slot leaders 在出块之前已被披露,从安全的角度考虑并不是最佳方式。因而迭代的第二版本 Ouroboros Praos 重点改为进半同步设置及隐藏 slot leader 的选举过程(也就是在出块后,其他节点才能验证记账节点是否合法)。

Ouroboros Praos

Praos 在古代希腊语中表示“放松”,该词体现了协议的特征,网络中的节点不需要为了保持同步时钟而保持持续在线。为了让节点达到“放松”的状态,引入了一些技术:

首先,PVSS 被替换为 VRF(Verifiable random function) 密码学算法,该算法首次被图灵奖得主 Silvio Micali 提出,现在他是 MIT 的教授,同时在加密货币领域有研究项目 Algorand。每轮 epoch 期间,竞选出块的节点在选举期间依赖三个要素:

  • 当前 epoch 产生之前的权益分配快照(the stake distribution snapshot for the epoch that is created before it starts)
  • 基于前一轮 epoch 计算出来的 omness seed(omness seed that is calculated based on the previous epoch,)
  • VRF 密码学算法作为实现节点 code base 部分模块(VRF itself that is specified in the protocol as being a part of each node’s code base.)

权益分配快照非常直观,每轮 epoch 周期开始之前的时间,权益矿池中委托作为权益数量做快照。快照在 slot leader 选举期间全程被使用,但并不冻结委托的 ADA,持有者依然随时都可以花费被委托的 ADA。

每轮 epoch 期间,节点把权益分配的快照和上一轮 epoch 计算出来的随机种子作为 VRF 的输入,推导出标识参与权益证明共识节点的伪随机数。被选中的节点打包区块并把这个标识自身的随机数编码在区块头中。依据作为输入的随机种子,其他节点使用他们自己的 VRF 校验区块头中的随机数是否为被选中的节点编码而来。除了自身被选为 slot leader 的情况下,在区块被签名之前竞选中胜出的slot leader 节点不会被其他节点找出来。这也意味着如果出现被当选为出块的节点刚好掉线而失去了出块的机会,其他节点永远也不会找出究竟哪个节点有权产生下一个区块。没有被选为 slot leader 节点(譬如试图作恶的节点)的出块将被其他节点验证为不合法区块。

每轮 epoch 周期,slot leader 编码在区块头中的随机数通过异或门运算组合起来得出一个结果,该结果被参与竞争出块的节点作为 VRF 算法的输入算出下一轮 epoch 代表自身标识的随机数。所有节点在同一条链上采用同一个随机数(上一轮 epoch 所有 slot leaders 的标识做异或门得出的结果)并且使用同样的算法计算,所以节点计算出相同的结果。该结果作为随机种子,结合权益分配快照作为下一轮 epoch VRF 密码学函数计算的输入。每一轮 epoch 都如此反复地循环。

学术上已经验证迭代到第二版本的 Ouroboros Praos 共识算法在半同步设置(semi-synchronous setting)及假设网络中诚实节点占大部分的情况下能保证整个分布式网络不可篡改及交易会及时被记录在账本中 (persistence and liveness)。但是,启动的问题依然没得到解决,共识协议需要再度迭代到第三个版本—— Ouroboros Genesis

Ouroboros Genesis

Ouroboros Genesis

新加入或掉线一段时间后重连的节点依赖 p2p 网络中其他在线节点传递过来的数据信息同步区块数据,并且要判断连接的节点同步的区块是否为主链上的有效区块。全网大多是算力是诚实节点的前提下,篡改最长链需要付出更大的算力去竞争出块,这近乎不可能,工作量证明算法中,最长链规则可以作为判断该链是否为主链准则。采用权益证明共识算法采用其他方式判断节点当前状态是否偏离主链(例如:本地快照移动法、或者拜占庭容错法),这些方式仅支持网络中所有在线的节点设置处于同步的场景中(but these only work in a synchronous setting where nodes are always online),实际上很难满足该条件。Ouroboros Genesis 论文的作者认为目前所有的权益证明公链具备与比特币网络相同安全等级的情况下,并没有完整实现比特币基本的账本功能。

为了解决节点启动问题,Ouroboros genesis 协议提出一种新的主链判断规则:Plenitude Rule。长达 64 页的学术论文对于非密码学背景的读者来说理解起来异常困难 (论文讲解视频),论文中表明竞争链一旦与其他链分叉之后,竞争链的有效区块数量密度就会降低。简单理解就是分叉之后,短时间内黑客所处的链包含更少的有效区块,正确版本的主链会追上分叉链的有效区块数量(Simply put; the attacker’s chain will contain less blocks in the time period shortly after the divergence point, despite it potentially containing more blocks altogether and being the longest chain)。

Therefore, when multiple chains of similar length are available, the Plenitude Rule looks for the point at which the chains diverge and ‘went their own ways’ regarding their block distribution. It then divides the most recent past from the history of the chain into periods and determines for which version the block distribution after the divergence point is the most dense — which is the chain that will be selected. Due to this rule, nodes that are new to the network or have been offline for a while can (re)join and be guaranteed to download the correct version of the chain, as long as there are enough honest parties. This solves the bootstrapping problem and helps prevent long range attacks.

一旦出现多条相同长度的竞争链,Plenitude 规则约束下,回溯检索竞争链的分叉点和独立的出块路径,然后把历史区块和最近的区块以一定的时长为周期切割,分叉后的竞争链被验证的有效区块数量最密集的为主链。在该规则的约束和足够多诚实节点的两个前提条件确保新加入或者掉线一段时间并重新加入网络的节点能够同步到正确的主链数据。于此解决了启动问题和防止长程攻击。

需要强调的是 Plenitude 规则只适用于类似 Ouroboros 的协议,这类协议的特征是:1)出块时间被切割成小的时段 (slot),2)slot leader 的选举在上一轮 epoch 周期结束之前完成,3)并且在记账节点把随机数编码到区块头之后,网络中的节点才有机会校验账本中的区块的记账者是否为合法的记账节点。这些特征确保在 slot leader 出块期间,其他节点伪造出块将会失败。除非节点具备出块的 slots ,其他节点伪造假的区块的情况则不会发生——在 Plenitude 规则的约束下,有效区块数量低密度的分叉链将被自动丢弃。

卡尔达诺的共识协议迭代升级到 Genesis 版本,保证诚实节点大于 51% 的前提下,由权益证明共识算法实现的公链,节点数据同步和半同步设置的分布式网络首例被严格的学术论证通过,确保账本不可篡改和交易及时被记录到账本。卡尔达诺将比那些确保全网 2/3 诚实节点占比的权益证明公链 (e.g. Ethereum Casper, Algorand)更安全。具备与比特币网络相同安全等级的情况下,卡尔达诺更低能源消耗、性能更高。

面临 51% 攻击时,卡尔达诺和比特币网络安全等级一致,假设成功发起 51% 攻击后,比特币网络比卡尔达诺网络可恢复性更高。在比特币网络中算力低的诚实节点如果在网络中投入矿机加大全网算力占比就能夺回算力的控制权。在卡尔达诺网络中,一旦黑客控制了 51% 以上的委托权益,由于被当选为 slot leader 的权重大,黑客的币的越滚越多导致算力越大,只有黑客把币卖掉之后,其权益缩小全网诚实节点夺回控制权,否则只能靠硬分叉。然而,是否存在单一组织控制大多数委托权益的可能呢,我们继续深入讨论。

原始 ADA 分布情况

权益证明需要币作为委托,参与挖矿之前必须无中生有发型一定量的币。2015 年 ICO 的概念变得越来越流行,出于向公众发售虚拟资产可能面临法律的安全监管的担忧,IOHK, Emurgo 和卡尔达诺基金会决定在日本及亚洲其他国家的居民私募 25,927,070,538 枚 ADA ,并锁仓直到 2017年九月主网上线后才开放赎回。

纯粹的比特币主义者认为只有比特币网络主网启动规则是公平的,对凭空产生大量的币以及用以发售的方式往往持有不好的评论。比特币网络开始运行时,中本聪首次把节点的代码软件公布,一开始就允许社区参与网络进行工作量证明挖矿。在极少人知道比特币存在的情况下,中本聪当时挖矿很有明显的优势,比特币主网启动规则体现的公平性仅能论证任何人均可参与主网启动规则的条件被证实是公平的。然而最近主网启动的匿名币 Grin 采用同样的公平启动规则其实并不公平,据传约将近一亿美金的风险投资投入到 Grin 挖矿。卡尔达诺项目选择使用私募的方式其实是在持币者的地域分配和监管之间平衡,监管是优先考虑的要素。

2015年9约至2017年1月的折扣抢购期间25,927,070,538 枚 ADA 被超过一万个人购买,筹备 6300 万美金(= $0.0024 per ADA),其中 94.45% 被日本公民持有,韩国公民持有 2.56%,中国人持有 2.39%,剩余的 0.61 被亚洲其他五个国家居民持有。

预售剩余的 5,185,414,108 枚 ADA (相当于预售阶段额度的 20%,项目启动时总额度31,112,484,646 枚 ADA 的 16.7%)预留给项目方的三个团队:IOHK, Emurgo 卡尔达诺基金会。IOHK 已向外界披露了收币地址,披露时,按照项目约定,团队应得额度的 1/3 2,463,071,701 枚 ADA 已到账,2018年6月1另外 1/3 到账,剩余的 1/3 在 2019年6月1号到账。Emurgo 和卡尔达诺基金会的 ADA 收币地址还没向外界披露,这个地址被外界认为是 Emurgo 最开始的收币地址,最开始持有 2,074,165,643 枚 ADA,这个地址是卡尔达诺基金会最初的收币地址,持有 648,176,763 枚 ADA,这三个数据加起来刚好符合最初的额度分配。最后保留的 13,887,515,354 枚 ADA 作为权益证明记账的回报。

当前 ADA 的分布情况

由于预售的额度仅在有限的地区,且权益证明共识算法中权益即算力,币的持有者分散程度对网络的去中心化非常重要,越分散整个网络越安全。

让 ADA 持有者的地域大范围扩散非常简单,持币者把币卖给愿意接盘的投机者。卡尔达诺项目的实际情况是,预售始于牛市之初,从 2015年9月到2017年1月,2017年九月主网上线,预售者的币到手之后在同年十月币价已经翻了八倍(0.02/0.0024)。所以当时一旦上交易平台,流动性就起来了。

截图源于卡尔达诺论坛的会员 Markus 对持有 ADA 的地址统计图形化展示网站。该网站统计图中,不同颜色代表一定数量 ADA 的地址分类,纵坐标值越大表示持币越多。各种数量等级以及对应地址数量统计请看截图(译者注:这个网站最新的统计数据停留在 2018年12月)

Cardano’s UTxO distribution over time

2017年12月,比特币暴涨至新高(将近两万美金一枚),财富效应下投机热情空前高涨,与此同时其他山寨币同样收到投机客的热捧,上图显示当时 ADA 的大户地址从小户地址有巨大的转币情况。2018年整个熊市期间观察到持币量处于 top2 等级的地址数量小幅下降,两个等级趋于逐渐合并,原因是熊市期间没有出现大量抛售的情况。牛市一来,持币者会抛售 ADA ,接盘侠受到市场热度的吸引跑步进场,姑且得出一个不成熟的结论:随着牛熊周期的轮回可以进一步打散分布

值得强调的是基于地址的持币分析 (/UTXO) 统计法,一个钱包可以管理多个地址,一个人可以管理多个钱包。这表明地址的统计数量远大于持币人的数量,另外一个事实是虚拟币交易平台的用户的 ADA 也在加密货币交易平台的账户地址中。所以分析持币数量排前几的地址有助于宏观上了解 ADA 持有者的分布情况。另外 AsaScanClio.1 也有统计数据。例如 ‘holders 排名

The top-10 addresses on AdaScan’s ‘Rich List’, 21–1–2019

截至到我翻译这篇文章 (2019/4/6)币安仍然是持有 ADA 最多的大户 (11.980453%),即使 Top10 中币安只有一个地址被标记,可能币安还有其他持币地址,通过追溯交易记录,IOHK 和卡尔达诺基金会的持币地址排名范围处于 top5 之内,第四和第七貌似也是交易所的地址。排在前十的账户总额占当前发行币量的 30% 左右。

如果我们把两个饼状图结合起来看,在 2019年2月21日,网络中 1.34% 的地址持币数量为 22,434,630,873 枚 ADA,占当前发行量的 72.1%

ADA distribution, 21–1–2019

依据这些统计数据得出在卡尔达诺网络发起 51% 攻击是否能成还是不够有说服力。但是随着币分布的打散以及全网活跃地址的不断增加,侧面反应了越来越多的人使用了卡尔达诺网络,一个人或者一个组织有能力控制全网 51% 的委托权益。下文继续讨论控制全网 51% 的委托权益需要具备的条件。

控制 51% 的委托权益的前提条件

在作者写这篇文章时,卡尔达诺主网还没上权益委托的共识算法。一旦雪莱上线之后,市面上将会有多少流通的 ADA 参与委托其实也是不明确的。但是,如果出现单独个体持有现在总流通 (25,927,070,538 枚 ADA) 的 51% ,如果大部分委托权益被控制,就有可能出现 51% 攻击。依据 CoinMarketCap 网站的数据记录,在 2019年1月21日 ADA 的单价为 $0.042971 一枚(翻译此文时单价为 $0.09),卡尔达诺的市值达到 $1,114,118,098 ,因此,ADA 处于时价($0.042971) 黑客发起 51% 攻击至少需要 $557,059,050 才能成功。另外依据 ADA 历史最高价计算,黑客的攻击成本为 170+ 亿美金。

黑客实施攻击必将投入大量的真金白银,在市场上大额收购 ADA 由于“买压”会导致币价上涨,实际上攻击成本会更高,如此大额的购买对市面上 ADA 的流通性要求也非常高。再加上场外交易量有限,虚拟币交易平台的交易深度对黑客能够购买 ADA 的数量起着关键作用。

2019年1月21日,CoinMarketCap 数据统计各大交易所的 ADA 24小时交易成交额是 $16,367,168 ,假设这是交易所 ADA 买卖的单向交易不存在来回倒腾的买卖。上面的假设成立且买方是黑客的前提下,相同的市场深度下仍需 34 天的交易才能购买流通量 50% 的 ADA 。

但如果放大来看,上面统计的攻击难度还是被低估。CoinMarketCap 上看币安的 ADA/USDT 和 ADA/BTC 的交易对交易深度最大,约占 ADA 交易量的 35%,但是在写这篇文章时,我观察到这两个交易对的成交只有 1612万枚 ADA 成交。大胆地假设这是每天的交易量(因为存在不断地来回买卖,甚至交易平台机器人刷单的情况),购买 ADA 市面流通 50% 需要超过 1608 天。并且每天都大额购买 ADA 可能会推高市场热度,继而推高价格,更多的投机者疯狂买卖。无论黑客选择哪种方式购买 ADA ,虽然上述的论证过于简单,但还是可以得出黑客实施攻击的成本将是巨大的,既耗时间又耗巨额法币成本。

不诚实的节点购买足够多的币做权益证明发起攻击显然行不通了,黑客还有可能会发起钓鱼攻击、恶意软件渗透或者其他形式的手段也存在逻辑上的可能性。甚至还存在黑客攻击网络中其他节点或者自己运行多个权益证明矿池发起女巫攻击的可能性,这种情况黑客不需要很多真正的 ADA 。毕竟,如果黑客获得了其他权益矿池控制权,再加上这些被控制的矿池被委托了大量的币,那么黑客即使在没币的情况下也能获取利益。除了打散 ADA 的分布之外,卡尔达诺中权益池越多越能加强网络的安全性。

卡尔达诺权益证明矿池的经济激励模型

正如 Ouroboros 的研发一样,卡尔达诺项目组织的博弈论领域许多学术研究致力于寻找一种经济激励模型,防止出现单个权益池委托的币过多的情况。2018年7月 IOHK 发布了一篇论文,就激励模型给出了学术上的论证,激励规则使得全网所需的委托权益池数量保持在纳什均衡点水平(诺贝尔奖得主 Jonhn Nash 命名的一个博弈论概念,纳什生平事迹被改编为获得奥斯卡金像奖《美丽心灵》之后广为人知)从而系统中的参与者和为系统做正确的事利益上是一致的。意味着只要系统参与者在利益的驱使下,他们就会自觉为系统做正确的事。那么应该卡尔达诺网络应该如何优化委托权益矿池的分布呢?

前文提到被选中作为 slot leader 的概率和矿池中的委托在矿池中的权益成正比。这表明矿池中越多的委托的币越多算力越大,竞选出块的胜算越大。同时为了去中心化,激励模型要能够驱使权益矿池打散用户委托的币,避免出现大矿池的情况。因此经济激励模型基于一个公式:一个权益矿池的最大回报比例被限制在总奖励池的 1/k, k 是期望全网所有权益池的数量。为调查了解社区运营权益池的大概意愿,IOHK 在 2018年5月 开放统计有意愿在测试网络运营权益矿池的团队或个人,最初期望 100 左右的权益池加入网络,但是收到了超过一千的申请。对于这个 k 值将会是多少,官方没有正式的公告,但社区基本上都在说 k 取值一千。

举个例子:有两个权益矿池 A 和 B 分别控制全网 0.03% 和 0.12% 的委托权益,理论上矿池 A 可能会有 0.03% 的回报率,实际上受 1/1000 的约束,矿池 B 能分到的总奖励池中最大的额度也只能是 1/1000 = 0.1% ,由于矿池的全部收益要分发给用户(把币委托给矿池做权益证明挖矿), 相比矿池 A 的用户收益,矿池 B 中的用户会分到更少的币,为了提高收益,矿池 B 的运营者将超过 0.1% 的用户委托权益另外开一个矿池。一旦主网开启权益证明挖矿,Daedalus 钱包(或者其他第三方钱包)会提供最高回报矿池排名,用户则需选择委托他们的币到收益率最高的矿池。

仍然需要考虑女巫攻击的问题,黑客在网络中跑很多小规模的权益矿池,吸引其他人把币委托到这些矿池中,他们就有可能控制全网大多数委托的权益。如何应对这种情况呢?

很多人能想到解决权益证明女巫攻击的问题的方案是提高权益矿池的注册成本,实际上这种方案削足适履,权益矿池的注册成本过高同样也会赶跑诚实节点,这对网络去中心化具有消极的作用。IOHK 官方于 2018年10月就此问题写文提出了另外一个方案。权益矿池运营方如果能够把自己的一些 ADA 委托在矿池中,矿池的回报会有一定的增加。如果矿池运营方在自己的矿池中投入了 ADA 委托,从经济激励的角度看,将会吸引社区其他用户把币委托给该矿池。这意味着为了发起女巫攻击,击败其他诚实节点矿池,黑客创建很多的矿池的话自己仍需不少 ADA ,寻求利益最大化的才会加入黑客的矿池

最后要强调的是,IOHK 的研究员也考虑在未来卡尔达诺迭代版本考虑使用声誉机制替代依赖优秀的矿池高收益回报。声誉机制使得持币较少的矿池运营方长期提供高可用矿池的服务的情况下,有机会吸引用户加入矿池。

卡尔达诺网络如何避免发生 51% 攻击

前文提到 ADA 的价格越高,黑客收 51% 流通量的币成本越高。同时 ADA 涨会让市场热度加大,买卖会更频繁,越发打散了币的分散。如果 ADA 接下来发展路径和比特币一样经历了几轮牛熊,币的分布情况会愈加分散在不同的人手中

虚拟币交易平台的 ADA 钱包被提倡使用特定类型的地址,不能加入网络的共识和链上治理(提倡交易所不能使用用户的币开权益矿池)。在技术上虽然做不到强制交易所一定要使用特定类型的钱包地址,但社区的压力会在一定程度上促使交易平台这么做。不管你是否相信交易平台会发起 51% 攻击,对于持币人来说在做交易时才把币放在交易平台的做法是非常重要的,也就是说用户控制自己的钱包私钥是最好不过的方式(不控制私钥,你的币就不是你的)。有运维能力的持币者运营权益矿池或选择加入矿池都是可以参与卡尔达诺主网共识和治理,更重要的是增强了全网诚实节点的力量

总结

在大多数节点(>51%)都是诚实节点的前提下,卡尔达诺的共识算法在学术上已经被证明是安全的。基于该前提意味着本质上卡尔达诺无法抵抗 51% 攻击(如果作恶节点占有超过全网权益委托),比特币网络亦如此,经过前面的论证,在雪莱版本的卡尔达诺网络成功发起 51% 攻击需要花费巨大的成本。就以太坊经典被 51% 攻击事件,莱特币的创始人  Charlie Lee 强调

理论上去中心化的加密货币应当容许 51% 攻击,无论是通过算力、权益或其他难以获得的资源(高成本)发起的攻击。如果一种加密货币不能被 51% 攻击,意味着其是有准许规则或者中心化的网络—— Charlie Lee

如果 51% 攻击在卡尔达诺网络被实施成功,将对系统造成严重的后果。与使用工作量证明的共识算法加密货币网络不同的是,正义的节点阵营和黑客拼算力就能夺回网络的控制权,而权益证明的网络除了硬分叉和黑客把他的币卖掉之外(减少到 < 50%),正义的节点阵营根本就没有机会夺回网络的控制权。

发起成功的 51% 攻击需要控制全网流通 ADA 数量的 50% 以上,大约是 130 亿枚 ADA ,如此体量的币黑客需要付出巨额的资金量。作恶的节点即使成功控制了主网,那么卡尔达诺项目也许就失去了价值,黑客的付出可能会付诸东流,持有的 ADA 会贬值。按照当前 ADA 的币价计算,投入数亿美金实施 51% 攻击,黑客会得不偿失,被成功攻击的币会迅速贬值。

虽然存在 51% 攻击的机会,前面描述相对直接的 51% 攻击在卡尔达诺网络近乎不可能发生。假设存在能够克服所有困难获得了全网 51% 委托权益或者流通量的组织,他们通过获得的权力控制链上治理的决策的可能性最大。例如,在规划好的财务模型中强制支持执行自提交的拨款提案、强制执行偏向符合己方控制的权益矿池的提案。因而,面对 51% 攻击成功后面临的各种风险,通过自由市场动态打散 ADA 的的分布,尽可能让更多的人持有 ADA 对网络的安全性提升是非常重要的。

卡尔达诺与其他公链项目相比的优缺点、整个加密货币市值的占比,最终还是由市场决定。总而言之在区块链的早期阶段产品的价值不仅由技术本身决定,市场成熟度以及生态建设同样也很重要。例如市场会看重比特币网络被 51% 攻击成功之后,大部分诚实节点总能反攻成功,重新夺回全网算力的控制权的事实。基于这样的事实,比特币被大众认为是可靠的储值币种,全球的加密货币爱好者达成共识,比特币的价格自然比其他币种价格高。

即便如此,卡尔达诺实现转账更高效和低成本、提供更安全的智能合约的公链。明显对比之下,卡尔达诺的优势可以充当比特币侧链。随着越来越多的项目使用卡尔达诺网络,更多的手续费回报给参与权益挖矿的持币者,更加刺激持币者委托进行权益挖矿和降低卖压。市场对 ADA 的持续有需求(使用 ADA 支付手续费),币价就会涨,直接抬高了实施 51% 攻击的成本,降低攻击的可能性,以此提高了卡尔达诺主网的安全性,ADA 逐渐成为更可靠的储值币,从而促使 ADA 作为一种竞争力更强的货币,形成了积极的正向反馈闭环。

熟悉比特币的演进过程的人会对林迪效应的理解比较深刻。林迪效应是指对于一些不会自然消亡的东西,比如一种技术、一个想法,它们的预期寿命和它们目前已经存在的时间成正比。即它每多生存一段时间,它的剩余预期寿命就会增加一点。在林迪效应适用的情况下,死亡率随时间下降。卡尔达诺项目还需要时间的考验,比特币网络运行超过十年期间实现了 99.98% 在线及零次已知的事故( 99.98% up-time and zero known immutability breaches)的记录。卡尔达诺即便在严谨的学术证明论证下具备了最好的安全性基础,其仍需用实际行动证明其能够抵御“野外”攻击的能力,经受住时间的考验才会赢得投资者的信赖。ADA 的币价升值使得网络更安全,卡尔达诺对区块链生态发挥的实际积极作用才能证明 ADA 币价上涨的合理性。

Always and I always will keep that philosophy. The highest achievement in business is to make the world better with a sustainable business model. This is and will always be the core of IOHK and my work in cryptocurrencies. Our company has been dedicated to this since 2015 Tweet by Charles Hoskinson, 18–1–2019

Many thanks go out to Ruslan Dudin and Nicolás Arqueros for their thorough reviews of the draft of the article and answering technical questions.

翻译来源 https://medium.com/@undersearcher/how-secure-is-cardano-5f1e076be968

推荐阅读

共收到 0 条回复
huangwenwei 将本帖设为了精华贴 04月10日 15:59
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册