北大-区块链技术与应用8-BTC挖矿

Zoella Lv4

一、全节点

1、一直在线

2、在本地硬盘上维护完整的区块链信息

3、在内存里维护 UTXO 集合,以便快速检验交易的正确性

UTXO(unspent transaction output)

4、监听比特币网络上的交易信息,验证每个交易的合法性

(1)是否有合法的签名

(2)是不是 double spending

5、决定哪些交易会被打包到区块里

缺省状态下,只要是合法交易、并且交易费符合要求,就会被打包

6、 监听别的矿工挖出来的区块,验证其合法性

(1)区块中的每个交易都要合法,包括铸币交易,比如是否篡改了出块奖励、发布的难度是否符合要求(block header 取哈希后,前面是否有足够多的 0;block header 里的难度目标域值是否设置正确)

(2)全节点是否每两周调整挖矿难度

(3)检查该区块是否在延伸最长合法链

7、挖矿

(1)决定沿着哪条链挖下去?

缺省情况下沿着最长合法链挖下去

(2)当出现等长的分叉的时候,选择哪一个分叉?

缺省情况下选择最先听到的分叉

二、轻节点

轻节点也叫做 spv client(simplified payment verification)

1、不是一直在线

2、不用保存整个区块链,只要保存每个区块的块头

大约是全节点的 1/1000

3、不用保存全部交易,只保存与自己相关的交易

4、无法检验大多数交易的合法性,只能检验与自己相关 的那些交易的合法性

5、无法检测网上发布的区块的正确性

6、可以验证挖矿的难度

因为挖矿的时候,计算哈希值只用到了块头的信息

7、只能检测哪个是最长链,不知道哪个是最长合法链

因为无法检测这条链上所包含的交易都是合法的(不过可以检测每个区块是否符合难度要求)

三、挖矿的注意事项

比特币网络中大部分节点都是轻节点,如果只想进行转账,而不进行挖矿,就不需要运行全节点、只需使用轻节点

在挖矿过程中,如果监听到别人发布了一个区块,需要重新组装区块(block header 和 交易内容都有变化)、重新开始挖

四、比特币的安全性保证

1、密码学

恶意节点拿不到私钥,就无法伪造签名,也就无法偷币

2、好节点占大部分算力

前提是系统中大部分算力的矿工是遵守协议的

五、挖矿趋势一:设备从通用到专用

1、CPU

最早是用普通的 CPU / 通用计算机 挖矿,但是这种方式无法充分利用内存

2、GPU

GPU 用于大规模的并行计算,比如深度学习大量的矩阵乘法,但也部分部件也无法充分利用(比如浮点数运算)

3、ASIC 芯片

ASIC(Application Specific Integrated Circuit,专用集成电路),ASIC 芯片是专门为比特币挖矿计算哈希值而设计,性价比最高

但是同一个芯片只能用于一种币的挖矿,除非两种币使用同一个 mining puzzle。有些新开发的币会使用已有币的 mining puzzle,进而吸引更多矿工,这叫做 merge mining

购买 ASIC 矿机的时机很重要,因为过时得很快,现在一般需要提前预定。不良厂商可能会在矿机生产后的黄金两个月先自己挖矿,然后才卖给用户

有些新型货币,设计的是 alternative mining puzzle,出发点是 ASIC resistance,目的是让通用计算机也能参与挖矿过程

六、挖矿趋势二:大型矿池的出现

矿池的出现是为了解决单个矿工收入不稳定的问题。矿池把矿工组织起来作为一个整体,其架构是:一个全节点驱动多个矿机

一个矿池一般有一个 pool manager(矿主),下面连着很多 minner(矿工),矿工只负责通过 ASIC 芯片计算哈希值,全节点的其他职责都由矿主承担(比如监听网络上的交易,并将其打包成一个候选区块,同时监听是否有其他节点抢先发布区块)

矿池的收益分配

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

(1)类似大型数据中心,所有矿机属于同一个机构

(2)分布式的,矿工和矿主不在同一个地方,矿工加入矿池,是通过矿池规定的通讯协议和矿主进行联系。矿主把要计算的哈希值的任务分配给矿工,矿工计算完成后把结果返回给矿主,有出块奖励时一起参与分红

通过工作量证明,按照矿工的贡献大小分配收益:降低挖矿难度(减少目标域值前0的数量),符合条件的叫一个 share(almost valid block),挖到合法区块、得到出块奖励之后,矿主按照矿工 share 的数量来分配收益

1、矿工是否能偷出块奖励?

矿工不可能挖到一个合法区块自己偷偷发布,因为矿工的任务由矿主分配,矿主负责组装区块,并把不同的 coinbase parameter 所对应的 nonce,交给不同的矿工尝试,而 coinbase transaction 里的收款人地址填的是矿主的地址

2、矿工是否能捣乱?

是可以的,比如 矿工正常提交 share,但是挖到合法区块之后就丢弃掉

3、矿池的弊端

恶意方可能吸引到足够多的矿工(不明真相的群众)加入,然后发动 51% attack:

(1)Forking attack:制造分叉,因为算力高,迟早能赶超6个区块;

(2)Boycott:制裁对象一挖出区块,就分叉,因为算力高,更容易使制裁对象的区块作废

类似于云计算中的 on demand computing,平时不用自己去维护很大的计算集群,需要用的时候可以随时召唤,对于矿池来说就是 on demand mining

  • Title: 北大-区块链技术与应用8-BTC挖矿
  • Author: Zoella
  • Created at : 2025-01-13 23:47:49
  • Updated at : 2025-01-14 20:59:08
  • Link: https://zoella-w.github.io/2025/01/13/37-北大区块链-BTC挖矿/
  • License: This work is licensed under CC BY-NC-SA 4.0.