区块链 | POW及自私挖矿

区小升 2019-06-30

  • 由于区块链是无中心登记的匿名服务,创建多重身份代价极低,所以在公有链上可能发生多重身份攻击(Sybil Attack)。作为解决方法,区块链没有使用身份投票的机制,采用资源投票的机制,即工作量证明(POW)。POW即由分散在各处的参与者综合上一个区块的Hash 值,上一个区块生成之后的新的验证过的交易内容的Markle Root值,再加上猜测的一个随机数Nonce,一起打包到一个候选新区块,让新区块的Hash值小于比特币网络中给定的一个数。此猜测值被找出后,与数据、散列值一起打包成块后广播,经多数节点确认与承认,打包者就能获得打包该区块所提供的奖励。一般采用工作量证明的加密货币,例如比特币,会设置成随着参与竞赛的算力增减,而调整找寻猜测值的难度,以维持合理的运作速度。
  • POW依托正向快速、输入敏感、逆向困难、冲突避免的哈希算法,架构简明扼要,使用数学的方法保证了可靠性。由于要获取更高的交易验证权力就要获取更多的算力来提升占比,使得恶意用户必须投入超过总体一半的运算量(51%攻击),才能篡改交易结果,使得攻击成本极其高昂,在现实中难以实现。并且对于矿工来说是公平的,投入的计算设备即算力越多,获取打包权和打包奖励的概率也就越大,从而实现理论上的激励相容(incentive-compatible)。
  • 而POW也有显著的缺点。对于算力的军备竞赛,使得非常多的资源被浪费,电力被用在了并不是最重要的猜测上。且在加密货币的价值提升后,专用的ASIC矿机和其制造商可能会垄断算力,与去中心化思想背道而驰。
  • 在论文《Majority Is Not Enough Bitcoin Mining Is Vulnerable》中,作者给出了一种在遵循规则挖矿之外可以获得更大利益的算法,且这个算法会导致理性的矿工投身于这种策略中获取更大的利润并最终破坏区块链网络正常运转。这篇文章中提出, 私自矿池挖出新块之后, 暂时不发布这个区块, 而是继续挖下一区块, 当发现网络上别人也挖出新区块时再发布这个区块, 可以获得更高的收益。同时这个更高收益的算法并不是全局最优的, 因为矿工会为了更高的利益进行自私挖矿, 使得自私矿池越来越大, 逐渐变成多数, 破坏了比特币的去中心化.虽然在自私挖矿攻击中。诚实和自私矿池都会浪费算力, 但是诚实矿池浪费的算力会更多, 同时自私矿池可以获得比自己诚实挖矿更高的收益。此消彼长, 矿工会更愿意加入自私挖矿。而且, 自私矿池的算力越大, 它能够获得的奖励高于线性增长,这更加有利于自私矿池吸引更多矿工加入。
  • 对于浪费资源的问题,POW的设计机制是几乎无解的。即使用提高运算能力来提高获取打包权的概率从而提升获得的收益的激励机制必然导致算力的军备竞赛并浪费大量资源。这个问题可以考虑通过使用其他方式如POS、DPOS即权益证明机制,通过给与拥有更多货币的用户更多的投票权来替代给与拥有更多算力的矿工更大概率的记账权。这些方法都能一定程度解决资源浪费问题。
  • 而自私挖矿的问题,可以通过改变机制,当矿工收到两个竞争区块时,随机选取其中一个进行挖矿,这样的话诚实节点选择在自私矿池发布的区块上挖矿的比例就会降低到1/2,这样的话只有在自私矿池掌握全网1/4以上的算力时才能够获得比诚实节点更大的收益。

相关推荐