Skip to content

挖矿

全节点和轻节点

全节点轻节点
一直在线不是一直在线
在本地硬盘上维护完整区块链信息不保存整个区块链,只需要保存每隔区块块头
在内存中维护 UTXO 集合,以便于快速检验交易合法性不保存全部交易,只保存和自己有关的交易
监听比特币网络中交易内容,验证每个交易合法性无法验证大多数交易合法性,只能检验和自己相关的交易合法性
决定哪些交易会打包到区块中无法检测网上发布的区块正确性
监听其他矿工挖出的区块,验证其合法性可以验证挖矿难度
挖矿: 1.决定沿着哪条链挖下去。 2.当出现等长分叉,选择哪一个分叉只能检测哪个是最长链,不知道哪个是最长合法链

在比特币网络中,大多数节点都是轻节点。 如果只是想进行转账操作,不需要挖矿,就无需运行一个全节点。

在挖矿过程中,如果监听到别人已经挖出区块延申了最长合法链,此时应该立刻放弃当前区块,在本地重新组装一个指向最后这个新合法区块的候选区块,重新开始挖矿(挖矿本身具有无记忆性,前面无论挖多久,对后续继续挖矿没有影响。)。

挖矿设备演化

目前,挖矿设备逐渐趋于专业化,其经历了三个过程,总体趋势从通用到越来越专用。

普通 CPU -> GPU ->ASIC 芯片(挖矿专用矿机)

定制 ASIC 芯片 只能挖某一种固定的币, 除非有相同的 miming puzzle(挖矿算法)

ASIC 芯片的出现是好事吗?

很明显,ASIC 芯片一定程度上提升了挖矿的门槛,违背了比特币系统去中心化的初衷。理想状态下,所有人用 CPU 挖矿,这样只要有一台家用计算机便可以参与挖矿。当然,后续有一些货币便考虑到了这个问题,设计了抗 ASIC 芯片化的解决方案。

但反过来想,如果大家都用 ASIC 矿机挖矿,如果有人想要颠覆 BTC 系统,必然会导致 BTC 价格跳水,从而导致其所购买 ASIC 矿机作废,投入成本血本无归。所以,很多人反倒认为 ASIC 芯片出现,一定程度上并不是坏事。

矿池

挖矿另一个趋势便是大型矿池的出现。

对于单个矿工来说,即使使用了 ASIC 矿机,其算力在整个系统中仍然只占据很少一部分,即使从平均收益看有利可图,但收入很不稳定。 此外,单个矿工除挖矿还要承担全节点其他责任,造成了算力的消耗

因此,为了解决这些问题,便引入了矿池的概念。

通常是一个全节点驱动多台矿机。矿工只需要不停计算哈希值,而全节点其他职责由矿主来承担。ASIC 芯片只能计算哈希值,不能实现全节点其他功能。此外,矿池出现解决了单个矿工收益不稳定的问题。当获得收益后,所有矿工对收益进行分配,从而保证了收益的稳定性。

矿池一般具有两种组织形式:

  1. 类似大型数据中心(同一机构),集中成千上万矿机进行哈希计算。
  2. 分布式。矿工与矿主不认识(不同机构),矿工与矿主联系,自愿加入其矿池,矿主分配任务,矿工进行计算,获得收益后整个矿池中所有矿工进行利益分配。

矿池的出现,使得矿工的收益更加稳定,矿池的收益也更加公平。

大型矿池越容易发动攻击

矿池本身对 BTC 系统带来了较大威胁。某个恶意用户如果想发动攻击,以前需要自己达到 51%算力,现在自己只需要作为矿主,只需要很少一部分算力就可以了。只要能够吸引到足够多的不明真相的矿工,便可以用较低成本实现 51%攻击。

  • 分叉攻击
    • 对已经经过 6 次确认的交易分叉,利用 51%算力将交易记录回滚。
  • 封锁交易
    • 假如攻击者不喜欢某个账户 A,不想让 A 的交易上区块链,在监听到有其他人将 A 的交易发布到区块链上时,立刻发动分叉攻击,使 A 所在链无法成为”最长合法链“。这样,便实现了对 A 账户的封锁。

矿池出现的优劣

  • 优点:解决了矿工收入不稳定的问题,减轻了矿工的负担。
  • 缺点:威胁到了区块链系统的安全,使得 51%攻击变得容易起来(s)。

参考

北京大学肖臻老师《区块链技术与应用》

君子慎独