挖矿概念
mining puzzle: 寻找nonce,使得
比特币使用的哈希算法是SHA-256,输出空间有256位,有 $2^{256}$ 种取值
挖矿难度
与target范围大小成反比
为什么要增加挖矿难度
不调整挖矿难度,会导致挖矿难度过小,出块时间缩短,增加分叉的几率,或产生多分叉
系统的总算力越强,越安全(发动51%攻击需要的算力就更大)
如何提高挖矿难度
每2016个区块调整难度,即14天
实际代码中,上调和下调有4倍的限制(不得超过)
提高难度的功能是写死在代码中的
挖矿工具
CPU->GPU->ASIC(Application Specific Integrated Circuit专用集成电路,只能为一种mining puzzle使用)
通用->专用
alternative mining puzzle 实现 ASIC resistance
大型矿池:pool manager 下属很多miner,miner只负责挖矿,manager负责全节点的其他职责,能解决收益不稳定的问题。矿工使用自己开采出的almost valid block来证明自己的工作量获得奖励
矿池的存在使得51%攻击更容易了,因为更容易召集算力