# 153期【币圈人物】 北大肖臻比特币的挖矿 2022 **Published by:** [币同学](https://paragraph.com/@0x4484c3371eb90c8a9092ec8caecb3dfb3038c818/) **Published on:** 2022-04-17 **URL:** https://paragraph.com/@0x4484c3371eb90c8a9092ec8caecb3dfb3038c818/153-2022 ## Content 你好,我是币同学。这是我分享学习的第153天,每天学习进步一点点。 关键词:北大肖臻老师的公开课,关于比特币系统的挖矿。 全节点的职责 1. 一直在线; 2. 在本地硬盘上维护完整的区块链信息; 3. 在内存里维护UTXO集合,以便快速检验交易的正确性; 4. 监听比特币网络上的交易信息,验证每个交易的合法性(有没有合法的签名); 5. 决定哪些交易会被打包到区块里; 6. 监听别的矿工挖矿出来的区块,验证其合法性(验证区块中的每个交易都要合法,包括铸币(coinbase transaction);验证发布的区块是否符合难度要求;验证该区块是都在最长合法链上); 7. 挖矿:决定沿着哪条链挖下去?最长合法链。 当出现等长的分叉的时候,选择哪一个分叉?最先听到的区块。 轻节点的职责: 1. 不是一直在线; 2. 不用保存整个区块链的信息,只要保存每个区块的块头; 3. 不用保存全部交易,只保存与自己相关的交易; 4. 无法验证大多数交易的合法性,只能验证与自己相关的那些交易的合法性; 5. 无法检测网上发布的区块的正确性; 6. 可以验证挖矿的难度; 7. 只能验证哪个是最长链,不知道哪个是最长合法链。 1. 挖矿的性质是无记忆性(memoryless)。 2. 比特币如何保证安全性? 密码学:没有私钥,就没办法伪造你的签名。 共识机制:前提是系统中绝大多数的矿工是诚实节点,遵守系统协议,不会接受那些没有合法签名的交易。 3. 挖矿的趋势。 挖矿设备的专业性:从家用电脑的CPU挖矿——GPU(主要用于大规模的并行计算,像深度学习),GPU是为了通用并行计算而设计的,用来挖矿的话,它里面的很多部件仍然是闲置状态。GPU的噪音很大——ASIC(Application Specific Integrated Circuit)芯片,这是专门为挖矿而设计的芯片,没有多余的电路逻辑,整个芯片就是为了比特币挖矿计算哈希值的操作而设计的。这个芯片除了挖矿,别的也干不了。如果挖其他的币,除非两个加密货币的mining puzzle相同。 ASIC芯片研发周期是很长的,一款芯片从设计流片到生产周期,像比特币的ASIC芯片,可能需要一年时间,但这已经是非常快的了。 挖矿市场的竞争很激烈,可能上市几个月后,就得更换更高算力的芯片。 【注意:新研发出来的高算力的芯片矿机,最佳的利润点可能就在两个月时间(这也是其市场的短期优势),基本上头两个月时间可以在该芯片整个生命周期中有一半的利润。再往后,可能有更强算力的芯片被研发出来,所以购买矿机的时机很重要,一般都是期货预定制的。有些不良的厂商,把这些最新研发出来的芯片矿机,不是马上交付给市场,而是自己把最佳算力挖矿期(黄金时间)先挖完。】 大型矿池的出现:单个矿工,即使用ASIC芯片,挖矿从平均收益来看是有利可图的,但是他的收入是非常不稳定的。比特币平均每十分钟出一个区块,但这是相对于整体矿工而言的。如果具体到某个矿工,他可能要挖很长的时间,才能挖出一个区块。如果没有矿池行为,与全网算力竞争,单个矿工的挖矿行为就像中彩票。挖到的概率是很小的,但挖到后的收益比较大。单个矿工除了挖矿外,还要承担全节点的职责。 矿池就是把矿工组织起来,作为一个整体。矿池的架构,一般来说是一个全节点会驱动很多矿机。一个矿池,一般有一个矿主(pool manager),管理着很多矿工(miner)。矿工只负责计算哈希值,全节点的其他职责都由矿主来完成。ASIC芯片矿机,只能负责计算哈希值,不能承担全节点的其他工作。 矿池的出现,还为了解决收入不稳定的问题。单个矿工的收益不稳定,所以大家集合在一起,有收益后按工作量/贡献大小来分配。 4. 如果矿池的某个矿工,在挖到区块后不提交给矿池的矿主,而是扔掉。这样做是可行的,虽然经济利益角度来说是损人不利己的,但是矿池之间是存在竞争的。为了打击竞争对手,故意派些矿工去对手矿池里挖矿,采用上述方法起到搞破坏的作用。等于这些矿工还是能得到分红,分的是别的矿工挖出来的区块奖励。 5. 矿池的危害? 全球矿池的分布,假设某个机构把算力分散到不同的矿池,平时的时候是分散的,但需要发动攻击的时候,再集中起来发动攻击。矿工转换矿池是容易的,加入一个矿池,就是按照该矿池的协议去矿主联系,矿主再把找随机数的任务分配给该矿工,矿工开始挖矿即可。如果矿工要转换到另外一个矿池,也是可按照上述方法操作。 所以这就是矿池带来的危害,如果没有矿池的话,那么要想发动51%的攻击。这个攻击者只要投入大量的硬件成本来购买到足够的矿机,能够达到系统中半数以上的算力。 有了矿池后,攻击者可能自己只占一定比例的算力,只要能够吸引到足够多不明真相的矿工,加入到该攻击者的矿池中。 6. 假设某个矿池占到半数以上的算力,那么具体可以发动哪些攻击? 第一种常见的攻击就是分叉攻击,看下图。【注意:51%的攻击,其实是概率问题,不是必须得超过51%的概率,就不能发起攻击。】第二种攻击就是封锁禁令(boycott)。比如说攻击者要封锁A的账户,他怀疑A的账户上参与了非法交易,攻击者会让所有跟A的交易都不让上链。如果有人把A的交易发布到区块链上,他马上就发动分叉,产生一个不包含A交易的区块。 总结大型矿池出现的好处:给矿工减轻了负担,矿工就负责挖矿找哈希值即可,别的事情由矿主来完成;收入分配更加稳定。 大型矿池出现的危害:使得发动51%的攻击,变得更容易。 今天就学习到这里,明天见。 ## Publication Information - [币同学](https://paragraph.com/@0x4484c3371eb90c8a9092ec8caecb3dfb3038c818/): Publication homepage - [All Posts](https://paragraph.com/@0x4484c3371eb90c8a9092ec8caecb3dfb3038c818/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@0x4484c3371eb90c8a9092ec8caecb3dfb3038c818): Subscribe to updates