撰文:邹传伟,万向区块链首席科学家 中本聪在比特币白皮书技术部分(第 6-9 页)讨论了比特币分布式账本面对双花攻击的安全问题,核心是诚实节点和恶意节点在挖矿中的竞争。这部分内容非常重要,但中本聪的表述非常简略,省去了关键论证过程。区块链行业中有专家对这部分内容做了说明,但都存在一些疏漏之处。本文在前人工作的基础上,试图给出一个严谨解析。 比特币挖矿的数学过程 比特币挖矿的本质上通过不断运行哈希计算,以找出一个符合要求的 Nonce,使其前若干位等于 0。如果将 Nonce 视为一个十六进制小数,那么其可以视为一个在 0 和 1 之间均匀分布的随机变量,合格 Nonce 需小于α(如果要求 Nonce 前β位等于 0,那么α=2-β)。α由比特币算法根据全网算力调整。 用Η表示全网算力,含义是每秒可运行哈希计算的次数。用随机变量τ表示找到合格 Nonce 的时点,τ是概率论上的停时概念。因为不同次哈希计算的结果相互独立,所以对任意 t>0, 因此,随机变量τ的累积概率分布函数等于 (1) 表示参数为-ln(1-α)Η的指数分布。根据指数分布的性质,找到一个合格区块的平均时间为 用 T 表示平均出块时间(即 10 分钟)。那么,存在如下关系 (2) 就是比特币的难度系数调整机制。 诚实节点与恶意节点之间的挖矿竞争 假设全网算力 H 不变,诚实节点与恶意节点的算力分别为 Hg和 Hb,H=Hg+Hb。它们找到合格区块的时间分别为τg和τb。根据前文的分析,和均服从指数分布,参数分别是 诚实节点先找到合格区块的概率是 同理,恶意节点先找到合规区块的概率是 (3) 和 (4) 说明,先找到合规区块的概率与算力成正比。 恶意节点从落后追赶诚实节点的问题 假设全网算力 H、诚实节点的算力 Hg和恶意节点的算力 Hb均保持不变。假设恶意节点落后诚实节点个区块,接下来考虑恶意节点赶上诚实节点的概率。站在恶意节点的角度,引入如下计数函数 其中,-z 表示初始时恶意节点落后诚实节点 z 个区块。Ii(τb<τg) 表示第 i 个合格区块是否由恶意节点生成。若是,则 L(n) 增加 1;否则,L(n) 减少 1。换言之,L(n) 刻画了在 n 个区块后,恶意节点领先于诚实节点的区块数量(小于 0 则表示恶意节点落后于诚实节点的区块数量)。 恶意节点与诚实节点之间开展的是「最长链竞争」。用 qz表示恶意节点赶上诚实节点的概率,数学表述是: (6) 的含义是,恶意节点从落后 z 个区块出发,能超越诚实节点 1 个区块的概率。 考虑第 1 个区块的情况(i=1)。如果这个区块由恶意节点生成,则恶意节点领先于诚实节点的区块数量变为-z+1,此情形的概率为 Pr(τb<τg)=q;反之,这个区块由诚实节点生成,恶意节点领先于诚实节点的区块数量变为-z-1,此情形的概率为 Pr(τb>τg)=p。因此, 另外,q-1=1。但仅凭 (7) 和这个边界条件不足以求解,需要将这个问题转换为「赌徒破产」问题(Gambler’s Ruin Problem)。 假设恶意节点在落后诚实节点 N 个区块后放弃追赶(N 是一个很大的正整数),恶意节点在超越诚实节点 1 个区块后赢得「最长链竞争」。这两种情况都对应着「最长链竞争」停止,表示成「赌徒破产」问题是: 其中, τc也是概率论上的停时概念,L( τc)=-1 表示恶意节点赢得「最长链竞争」,L( τc)=-N 表示恶意节点退出「最长链竞争」。此时,(6) 等价于 (7) 仍然成立,但有两个边界条件: (7) 可以等价表述为, 也就是 迭代可知, 将上述迭代结果累加起来可得, (12) 考虑边界条件 (10),存在两种情况。 第一,q>p (也就是恶意节点占优)。因为 q/p>1,所以 第二,q<p (也就是诚实节点占优)。因为 q/p<1,所以 (二) p=q=0.5 在上述求解过程中,N->∞的含义是恶意节点为了赢得「最长链竞争」可以容忍任何大的成本。这当然是一个过于理想化的假设,只考虑了恶意节点从落后追赶诚实节点在技术上的可行性。实际上,恶意节点会衡量追赶的成本和收益,在很多情况下成本超过收益,说明追赶即使在技术上可行,在经济学上不可行。这会为比特币分布式账本带来安全保障。 这就对应着比特币白皮书第 6 页给出的如下公式。需要说明的是,比特币白皮书讨论的是恶意节点从落后追平诚实节点的概率,而 (15) 给出的是恶意节点至少超过诚实节点 1 个区块的概率。 分布式账本面对双花攻击的安全性 这是比特币白皮书重点讨论的问题。此问题的关键是泊松过程与指数分布之间的关系。如果从任意时点开始统计区块生成数量,由此得到的计数过程就是泊松分布: 任意两个不重叠的时间段内区块生成数量是互相独立的随机变量;在任意长度为的时间段内,区块生成数量服从泊松分布换言之,在相邻两个区块之间的时间间隔服从参数为-ln(1-α)H 的指数分布时,与其对应的计数过程服从参数为-ln(1-α)H 的泊松过程。 在双花攻击中,假设交易发起者等待了 z 个区块。这些区块由诚实节点生成,对应的时间等于 假设恶意节点在这个时间段内在私下生成区块,累计生成区块生成数量 Z 服从泊松分布,参数等于 这对应着比特币白皮书第 7 页的如下公式: 根据泊松分布的定义, 在时 0<=Z<=z,恶意节点落后的区块数为 z-Z;在 Z>=z+1 时,恶意节点已完成双花攻击。因此,恶意节点双花成功的概率等于(只讨论 q<p 的情形) —- 编译者/作者:区块链网络 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
邹传伟:技术解析比特币应对双花攻击的安全性问题
2021-09-30 区块链网络 来源:链闻
LOADING...
相关阅读:
- 比特币重新走强,为什么加密市场可以在短期内反弹2021-09-30
- 比特币价格经过一个月的波动后趋于稳定,预计 10 月交易量将上升2021-09-30
- 欢续上的通证与区块链天生一对2021-09-30
- 与 James Bowater 的 Cryptonites 之夜2021-09-30
- 储蓄和支付协议 Pylon Protocol 发布「Columbus-5」合约迁移说明,期间用户将2021-09-30