类别:区块链 / 日期:2021-09-17 / 浏览:396

做者: Jameson Lopp

翻译&校对: 闵敏 & 阿剑

人们在讨论差别密码学货币的共识机造时经常会产生争议,次要是因为他们对那些密码学货币用来庇护账本汗青数据的平安模子缺乏领会(定义)。固然所有共识模子都是在防备各类理论上的攻击,但是领会那些模子的目标十分重要。

平安模子能够分为两个部门:假设(assumption)和包管(guarantee)。若是用做输入的假设成立,则平安模子输出的包管也应成立。

让我们来深切摸索比特币为其全节点运营者供给的平安模子。

求实“用户间信赖需求最小化是比特币的优势之一。我小我以至认为那是比特币更大的优势。” —— Pieter Wuille

散布式账本心在供给有序的事务记录,因为在散布式系统中你不克不及单纯地信赖时间戳。

新的参与者刚参加一个区块链收集时,会从软件硬编码的创世块起头下载所有可获得的区块,然后辨别整条区块链的有效性。

比特币平安模子最重要的假设之一是绝大大都矿工都是诚笃的 —— 他们在勤奋庇护区块链的平安性,而不是试图毁坏它。现实上,纵不雅比特币的开展史,得益于有效的矿工鼓励机造,那个假设至今未被突破,固然已经有人思疑它能否持久连结。

有了那个假设做为前提,全节点运营者完全能够确信:

除矿工之外没人能增发比特币,并且比特币的供给量会严酷根据发行方案表增加。没有私钥就无法破费对应的比特币。没有人能够反复破费统一笔比特币。

在比特币区块链强有力的包管下,全节点运营者还能够确信以下两点:

任何比特币区块都是在当时间戳的大约两小时内创建的。他们正在同步的是 “实在的” 区块链汗青。

从手艺层面来讲,比特币区块需要颠末大量查抄:

所有区块都遵守共识规则:每个区块都与其父块相连每个区块都到达目的难度值,而且有充沛的工做量证明区块时间戳位于与上一最新区块之间的时间窗口内默克尔根与区块所记载的交易相婚配区块大小不超越上限每个区块的第一笔(也只要第一笔)交易是 coinbase 交易Coinbase 输出不超越区块奖励区块内包罗的签名操做不超越答应范畴所有交易都遵守共识规则:输入值和输出值都是合理的交易只破费还未被破费过的输出所有即将破费的输入都有有效签名coinbase 交易创建后的 100 个区块内,该 coinbase 交易的输出无法破费当某笔交易仍处在区块确认的窗口期,其输出就不克不及破费篇幅有限,其余规则不做赘述热力学平安性

区块内的交易一经确认无法回滚,除非有人破费大量能源重写那条链。只要没有攻击者拥有全网 50% 以上的算力,且诚笃的节点能够快速通信,发作交易回滚的概率就会跟着交易确认次数呈指数级下降。其它类型的攻击(例如,无私挖矿)固然没有那么高的能耗需求,但是施行起来很难。

深切摸索比特币的平安模子  节点 Bitcoin 工作量证明 比特币 共识 第1张- 来源:Yonatan Sompolinsky1 和 Aviv Zohar 撰写的 Bitcoin’s Security Model Revisited -

从比特币矿工当前的累积工做量来看,攻击者需要计算出将近 10^26 个哈希值,才气从创世块起头构建出一条累积工做量证明更多的链。全节点会将那条链视为 “合法” 的链。

深切摸索比特币的平安模子  节点 Bitcoin 工作量证明 比特币 共识 第2张- 来源:http://Bitcoin.sipa.be -

我们来计算一下 51% 攻击的成本:

一台蚂蚁矿机 S9 的功耗是 0.1 J/GH(10^9 hash)。

10^26 hash * 0.1 J / 10^9 hash = 10^15 J

10^15 J = 2,777,777,778 kw/h * $0.10 kw/h = $277,777,778(重写整条区块链所需的电力成本)

撰写本文时,一个区块必需到达 253,618,246,641 的目的难度值,那大约需要:

253,618,246,641 * 2^48 / 65535 = 1.09 * 10^21 hash

1.09 * 10^21 hash * 0.1 J / 10^9 hash = 1.09 * 10^11 J

1.09 * 10^11 J = 30,278 kw/h * $0.10 kw/h = $3,028(创建每个区块所需的电力成本)

因而,我们能够说比特币具有热力学平安性。

你能够调整上述计算中的一些变量来降低成本,但我们能够必定的是,仅重写整条区块链就需要价值数百万美圆的电力。然而,在最坏的情况下,拥有如斯强大算力的攻击者可以将交易回滚至 2014 年 —— 我们很快就会深切探究其原因。别的请留意,购置和运行矿机所需的成本并未考虑在内。

抗女巫攻击

因为比特币协议认为累积工做量证明最多的链才是合法的链(最长链原则是常见的曲解),新参加收集的对等节点只需与另一个诚笃的对等节点成立毗连,就能够找到合法的链。那也被称为抗女巫攻击,那意味着攻击者无法通过运行多个不诚笃的对等节点来向某个对等节点供给虚假信息。

深切摸索比特币的平安模子  节点 Bitcoin 工作量证明 比特币 共识 第3张上图显示了一个近乎最蹩脚的情况:你的节点遭受了大规模女巫攻击,但是仍然与一个诚笃的节点连结毗连,就能够通过那个节点毗连至实正的区块链。只要有一个诚笃的对等节点将实在的区块链数据传输给你的全节点,你的节点就会识破那些试图棍骗你的女巫攻击者,然后将它们忽略。

实时共识

当你的节点同步至区块链顶端时,你就会发现比特币协议通过其它一些有趣的属性来维护全网共识。

《比特币和其它密码学货币的研究视角及挑战》的做者指出,以下特征对密码学货币的不变性来说至关重要:

最末共识。在任何时候,所有遵守规则的节点都要就最末的 “合法” 区块链的最新一个区块达成共识。

指数级收敛。深度为 n 的分叉的概率是 O(2−n)。那使得用户坚信他们的交易能够在 “k 次确认” 后得到永久结算。

活性。新区块会不竭生成,付出恰当交易费的有效交易会在合理时间内被打包上链。

准确性。在累积工做量证明最多的链上,所有区块内包罗的交易都是有效的。

公允性。拥有全网总算力 X % 的矿工能够挖出大约 X% 的区块。

论文做者指出,比特币看起来具备上述特征,至少是在假设大部门矿工都连结诚笃的前提下。那就是区块奖励和工做量证明机造想要到达的目标。

还有许多其它算法能够用来维护散布式系统中的共识,例如:

权益证明(PoS)币龄证明(Proof of Coin Age)量押证明(Proof of Deposit)燃烧证明(Proof of Burn)活动量证明(Proof of Activity)耗时证明(Proof of Elapsed Time)结合共识(Federated Consensus)适用型拜占庭容错(Practical Byzantine Fault Tolerance)

上述算法创建了差别的平安模子 —— 与工做量证明最明显的区别在于,基于那些算法的系统都是以消耗内部资本(币或声誉)而非外部资本(电力)来达成共识的。受其影响,那些系统对收集中验证者的鼓励办法和信赖需求各不不异,极大地改动了平安模子。

平安模子误区

一个常见的误区是,比特币有一个明白定义的平安模子。

事实上,无论是过去仍是如今,比特币协议都没有一个正式定义的标准或平安模子。我们能做的更好的工作就是研究系统参与者的动机和行为,以便更好天文解和描述比特币的平安模子。

虽然如斯,经常有人曲解了比特币协议的一些特征。

一些区块链存在很严峻的隐患,因为开发者在节点软件中增加了独断设定的已签名查抄点,暗示 “开发人员已经确认区块 X 位于准确的那条链上”。那是一个极端中心化的单点问题。

值得一提的是,比特币有 13 个被硬编码的查抄点,但是那些查抄点并没有像被独断设定的查抄点那样改动平安模子。最初一个查抄点被添加到了 Bitcoin Core 0.9.3 内,区块高度是 295000 (创建于 2014 年 4 月 9 日)。那个区块的难度值是 6,119,726,089,所需电力成本约为:

6,119,726,089 * 2^48 / 65535 = 2.62 * 10^19 hash

2.62 * 10^19 hash * 0.1 J / 10^9 hash = 2.62 * 10^9 J

2.62 * 10^9 J = 728 kw/h * $0.10 kw/h = $73(创建该区块所需的电力成本)

因而,若是女巫攻击者将一个新参加的节点(需要从头起头停止同步)围住,几乎不需要任何成本就能够在较低的区块高度创建较短的区块链,但是不克不及超越查抄点。

若是女巫攻击者将一个节点从同步超越区块高度 295,000 的收集别离出来,就能以每个区块 73 美圆的成本起头供给虚假区块,至少是在发作难度调整之前。但是,受害节点同步的区块链越长,攻击者创建一条累积工做量证明更多的链所需的成本越高。

Greg Maxwell 和 Pieter Wuille 都暗示,他们希望某天能完全移除查抄点。Bitcoin Core 的维护负责人 Wladimir van der Laan 指出,关于那些想要领会比特币平安模子的人来说,查抄点经常使人感应猜疑。

能够说,位于区块高度 295,000 的查抄点意味着,全节点 “相信” Bitcoin Core 开发者所说的 2014 年 4 月 9 日之前的区块都是有效的。但是,全节点仍然会查抄每个区块头里的默克尔哈希值,也就是说,交易汗青的有效性仍然遭到工做量证明的庇护。初次同步汗青区块链时,那些旧的查抄点能够改善性能(跳过签名验证),虽然 libsecp256k1 的引入让性能差别变得不那么明显。

查抄点存在的目标次要有三个:

避免节点的内存被有效但低工做量证明的区块头占满。跳过早期区块内的签名(提拔性能)。估量同步进度。

在撰写那篇文章时,Greg Maxwell 提出利用累积工做量证明查抄来取代查抄点。一旦节点胜利同步了某条包罗超越 5.4 * 10^24 次哈希计算工做量的链,累积工做量证明较少的那条链就会被回绝。那刚好与 2014 年 9 月创建的区块 320,000 的工做量大致相符,那时单个区块的难度值约为 27,000,000,000。

深切摸索比特币的平安模子  节点 Bitcoin 工作量证明 比特币 共识 第4张- 来源:Blockchain.info -

当难度值为 27,000,000,000 时,挖矿需要计算大约 27,000,000,000 * 2^48 / 65535 = 1.16 * 10^20 次哈希函数。

1.16 * 10^20 hash * 0.1 J / 10^9 hash = 1.16 * 10^10 J

1.16 * 10^10 J = 3,222 kw/h * $0.10 kw/h = $322(均匀创建每个区块所需的电力成本)

因而,按照提议停止修改后,若是女巫攻击者将一个需要从头起头同步的全新节点完全包抄起来,就能够从任一区块起头向那个节点发送虚假的区块数据,并且几乎不需要成本。若是女巫攻击者将一个已经同步超越区块 320,000 的节点完全包抄起来,那么从区块 320,000 起头向该节点发送每个虚假区块的成本是 322 美圆。

简而言之,若是一个实体能够完全控造你的节点的收集毗连,无论是接纳哪种体例对节点的初始同步停止查抄,攻击成本都相对较低;若是你的节点的收集毗连不受任何实体的控造,就能够垂手可得地忽略来自攻击者的区块。 

(未完)

 可能感兴趣的文章

最近发表