主页 > imtoken唯一官网 > 《精通比特币第二版》中文版第10章挖矿与共识1/6

《精通比特币第二版》中文版第10章挖矿与共识1/6

imtoken唯一官网 2023-02-21 05:47:09

精力有限,后期改版主要基于github。 建议您移至github链接阅读更新版本。 感谢您的理解:

比特币挖矿奖励_比特币挖矿网站_比特币 挖矿

邀请你加入和我一起学习

特别提示:栏目早鸟价:99元,11月5日后升级为199元,11月14日0点前报名的朋友将获赠《精通比特币第二版》中文版印刷本.

本文为6200字。

10.1 简介

“挖矿”一词有点误导。 一般意义上的挖矿类似于贵金属的提取,更注重创建每个区块所获得的奖励。 虽然挖矿可以获得这个奖励作为激励,但是挖矿的主要目的不是这个奖励,也不是新币的产生。 如果你只是把挖矿当做创造新币的过程,你就会把比特币系统中的这种手段(激励)作为挖矿过程的目标。 挖矿最重要的作用是巩固去中心化的清算交易机制,通过该机制对交易进行验证和清算。 挖矿是一项使比特币独一无二的发明。 它实现了去中心化的安全机制,是P2P数字货币的基础。

挖矿确保比特币系统的安全,并在没有中央权威的情况下实现全网共识。 新币发行奖励和交易手续费是一种激励机制,使矿工行为与网络安全保持一致,同时实现货币发行。

提示 挖矿的目的不是创造新的比特币。 这就是激励机制。 挖矿是一种实现去中心化安全的机制。

矿工验证每笔新交易并将其记录在分类帐中。 每隔 10 分钟,就会“开采”一个新区块。 每个区块包含了从上一个区块到当前周期发生的所有交易,这些交易被依次添加到区块链中。 中间。 我们将包含在区块中并添加到区块链中的交易称为“已确认”交易。 交易“确认”后,新主人就可以使用他在交易中获得的比特币。

矿工在挖矿过程中获得两种奖励:创建新区块的新货币奖励,以及区块中包含的交易的交易费。 为了获得这些奖励,矿工们竞相完成基于加密哈希算法的数学难题。 这些谜题的答案包含在新区块中,作为矿工计算工作的证明,称为“工作量证明”。 算法的竞争机制和获胜者有权在区块链上记录交易的机制是比特币安全的基石。

生成新比特币的过程称为挖矿,因为其奖励机制旨在降低速度,类似于贵金属的挖矿过程。 比特币的货币是通过挖矿发行的,类似于中央银行通过印制钞票来发行货币。 大约每四年(或准确地说,每 210,000 个区块),矿工收到的用于创建新区块的比特币数量就会减少一半。 从 2009 年 1 月开始每个区块 50 个比特币,然后在 2012 年 11 月减半到每个区块 25 个比特币。然后在 2016 年 7 月再次减半,每个新区块奖励 12.5 个比特币。 根据这个公式,比特币挖矿奖励呈指数递减,直到 2140 年。届时,将发行所有比特币(20,999,999,980)。 也就是说,2140年之后,将不会再产生新的比特币。

矿工也收取交易费。 每笔交易都可能包含交易费,即每笔交易记录的输入和输出之间的差额。 在挖矿过程中成功“挖出”新区块的矿工将获得该区块中包含的所有交易的“提示”。 目前,这笔费用占矿工收入的 0.5% 或更少,大部分收入仍来自挖矿的比特币奖励。 但随着挖矿奖励减少,每个区块包含的交易数量增加,交易手续费占矿工收入的比例会逐渐增加。 2140 之后,所有矿工收入都将由交易费组成。

在本章中,我们首先了解比特币的货币发行机制,然后了解挖矿最重要的功能:支撑比特币安全的去中心化自发共识机制。

为了理解挖矿和共识,我们将关注 Alice 的交易以及上海矿工 Jing 如何接收它并使用挖矿设备将交易添加到区块中。 然后,我们将继续跟踪区块的开采、添加到区块链并通过共识被比特币网络接受。

10.1.1 比特币经济学和货币创造

比特币通过创建新块以确定但不断下降的速度铸造。 大约每十分钟生成一个新块,每个新块都伴随着一定数量的从头开始创建的全新比特币。 每挖出210,000个区块,大约需要4年时间,货币发行率降低50%。 在比特币运行的头四年里,每个区块都会产生 50 个新的比特币。

2012 年 11 月,比特币的新发行率降至每块 25 个比特币,并于 2016 年 7 月降至每块 12.5 个比特币。 在 2020 年的某个时候,在 630,000 个区块,它将再次下降到 6.25 个比特币。 新硬币以 32“半”的指数速度发行,直到第 6,720,000 个区块(大约在 2137 年开采)达到 1 satoshi,比特币的最小货币单位。 最终,在 693 万个区块之后,将发行全部 2,099,999,997,690,000 个聪。 也就是说,到 2140 年左右,比特币数量将接近 2100 万枚。 之后,新区块不再包含比特币奖励,矿工的收入全部来自交易手续费。 图 10-1 显示了在发行量持续下降的情况下,比特币的总发行量与时间的关系。

比特币挖矿奖励_比特币挖矿网站_比特币 挖矿

图 10-1 比特币货币供应速度随时间呈几何级数下降

注意,比特币挖矿发行的最大数量成为挖矿奖励的上限。 在实践中,矿工可能会故意开采未获得全部奖励的区块。 这些区块已经被开采,未来可能会开采更多,这导致货币供应总量减少。

在示例 10-1 的代码显示中,我们计算了发行的比特币总数。

示例 10-1 比特币发行总量计算脚本

链接:代码/max_money.py[]

示例 10-2 显示了上述脚本的输出

$ python max_money.py

将要创建的 BTC 总数:2099999997690000 聪

有限的供应和不断下降的发行速度创造了一种抗通胀的货币供应模型。 法定货币可以由中央银行无限期印制,而比特币永远不会因为套印而膨胀。

通货紧缩

最重要和最有争议的结论之一是,发行率递减的预定货币发行模式将导致货币通缩(简称通货紧缩)。 通货紧缩是货币供求失衡导致货币升值的现象。 它与通货膨胀相反,价格通缩意味着货币随着时间的推移具有越来越多的购买力。

许多经济学家认为,通货紧缩经济是一种灾难性的经济,应该不惜一切代价避免。 因为在快速通货紧缩时期,人们预期商品价格会下跌,人们会存钱避免花钱。 由于需求崩溃后出现滞胀,这种现象填补了日本经济“失去的十年”。

比特币专家并不认为通货紧缩本身是坏事。 相反,由于过去的特殊情况,我们将通货紧缩与需求崩溃联系起来。 在法币世界,可以无限印币,除非需求彻底崩溃,没有发行货币的意愿,经济很难进入滞胀期。 比特币的通货紧缩不是由需求崩溃引起的,它遵循预定和受控的货币供应模型。

通货紧缩的正面当然是通货膨胀的反面。 通货膨胀导致货币缓慢但不可避免地贬值,这是一种隐性税收形式,惩罚那些将钱存在银行以救助债务人(包括最大债务人政府)的人。 政府控制下的货币很容易受到债务发行的道德风险的影响,然后可以通过贬值以牺牲储户为代价来消除这种风险。

比特币并非由经济快速衰退引起的通货紧缩是否会引发其他问题还有待观察。

10.2 去中心化共识

在上一章中,我们了解了区块链。 区块链可以看作是记录所有交易的公共账本(列表)。 比特币网络中的每个参与者都可以接受区块链作为证明所有权的权威记录。

但是,比特币网络中的所有参与者如何在不考虑信任任何人的情况下就任何人的所有权达成共识呢? 所有传统的支付系统都依赖于中央认证机构,依靠中央机构提供的结算服务来验证和处理所有交易。 比特币没有中央权威,几乎所有的全节点都有一份公共账本,可以认为是权威记录。 区块链不是由中央组织创建的,它是由比特币网络中的所有节点独立完成的。 也就是说比特币挖矿奖励,比特币网络中的所有节点,依靠节点间不稳定的网络连接传递的信息,最终达到相同的结果,维护相同的公共账本。 本章将介绍比特币网络在不依赖中央权威机构的情况下达成共识的机制。

中本聪的主要发明就是这种去中心化的自发共识(emergent consensus)机制。 这种自发性是指没有明确选举或没有固定共识的时候。 换句话说,共识是成千上万的独立节点按照简单规则通过异步交互自发形成。 比特币的所有属性,包括货币、交易、支付以及不依赖中央权威和信任的安全模型,都依赖于这项发明。

比特币的去中心化共识是所有网络节点的4个独立进程交互作用的结果:

▷ 每个全节点根据综合标准独立验证每笔交易

▷ 通过完成工作量证明算法的验证,挖矿节点自主将交易记录打包到新区块中

▷ 每个节点独立验证新区块并组装到区块链中

▷ 每个节点独立选择区块链,在工作量证明机制下选择累计工作量最大的区块链

在接下来的几节中,我们将研究这些过程并了解它们如何相互作用以实现自发的网络范围内的共识,从而使任何节点都可以组装自己的权威、可信和公开的账本副本。

10.3 交易的独立验证

在第 6 章交易中,我们了解到钱包软件通过收集 UTXO、提供正确的解锁脚本并构建支付给接收者的输出来创建交易。 由此产生的交易将被发送到与比特币网络相邻的节点,从而允许交易在整个比特币网络中传播。

但是,每个收到交易的比特币节点都会先验证交易,然后再将其传递给相邻节点,这将确保只有有效的交易在网络中传播,无效的交易将首先被节点丢弃。

每个节点在验证每笔交易时,需要比对一长串标准:

▷交易的语法和数据结构必须正确。

▷ 输入输出列表不能为空。

▷交易的字节大小小于MAX_BLOCK_SIZE。

▷ 每次输出值,以及总量,必须在规定的取值范围内(小于2100万币,大于0)。

▷ 没有哈希等于 0 且 N 等于 -1 的输入(不应中继 coinbase 交易)。

▷nLockTime 小于或等于 INT_MAX。 或者nLocktime和nSequence的值满足MedianTimePast

▷交易的字节大小大于或等于100。

▷一笔交易的签名数(SIGOPS)应小于签名操作数上限。

▷ 解锁脚本(scriptSig)只能将数字压入栈,锁定脚本(scriptPubkey)必须符合isStandard格式(这种格式会拒绝非标准交易)。

▷ 匹配交易必须存在于池中或主分支块中。

▷对于每个输入,引用的输出必须存在且不被花费。

▷对于每个输入,如果引用的输出存在于池中的任何其他交易中(译者注:此输入引用的输出有某人自己的输入,而不是你),则该交易将被拒绝。

▷对于每个输入,在主分支和交易池中寻找引用的输出交易。 如果输出交易缺少任何一个输入,则该交易将成为孤立交易。 如果匹配的交易不在池中,它将被添加到孤立交易池中。

▷ 对于每个输入,如果引用的输出交易是一个 coinbase 输出,输入必须至少有 COINBASE_MATURITY (100) 个确认。

▷使用引用的输出交易获取输入值,检查每个输入值和总值是否在指定值范围内(小于2100万币,大于0)。

▷如果输入值之和小于输出值之和,则交易中止。

▷ 如果交易费用太低而无法进入空区块,交易将被拒绝。

▷ 每个输入解锁脚本必须根据相应的输出锁定脚本进行验证。

这些条件可以在比特币标准客户端的 AcceptToMemoryPool、CheckTransaction 和 CheckInputs 函数中进行更详细的描述。 请注意,这些条件会随着时间的推移而变化,并且有时会放宽交易类型多样化的规则,以处理新型拒绝服务攻击。

各节点在收到交易后,将在全网广播前独立验证这些交易,并在收到时按照相应的顺序为有效的新交易建立验证池(尚未确认)。 这个池可以叫做交易池,或者内存池或者mempool。

10.4 挖矿节点

在比特币网络中,一些节点被称为专业节点矿工。 在第 1 章中,我们介绍了 Jing,一名在中国上海学习计算机工程的学生,他是一名矿工。 Jing 通过矿机赚取比特币,矿机是专门设计用于挖掘比特币的计算机硬件系统。 Jing 的专业采矿设备连接到运行完整比特币节点的服务器。 与 Jing 不同,一些矿工在没有完整节点的情况下进行挖矿,如我们在“矿池”部分中所述。 与任何其他全节点一样,Jing 的节点通过比特币网络接收和传播未确认的交易。 然而,Jing 的节点也可以将这些交易包含在一个新的区块中。

与其他节点一样,Jing 的节点不断监听要传播到比特币网络的新区块。 而这些新增的区块对于挖矿节点来说有着特殊的意义。 矿工之间的竞争以新区块的传播而告终,仿佛宣告谁是最后的赢家。 对于矿工来说,收到一个新区块进行验证,就意味着别人赢了比特币挖矿奖励,自己输了。 然而,一轮比赛的结束也代表着下一轮的开始。 一个新的街区不仅仅是标志着比赛结束的方格旗; 它也是通往下一个街区的发令枪。

本章结束。

参考内容:

1、本文部分内容摘自《精通比特币》第一中文译本,特此说明,谢谢。

我正在发起“和我一起精通比特币第二版”活动。

我声明,这不是讲座,而是讨论,是学习,所以需要你们的参与,更需要你们的参与。

我把这种学习方法作为一种认知学习方法的实践[注]。

希望大家能和我一起尝试通过认知学习法结合《精通比特币第二版》的学习,总结出一套可行的区块链知识技能快速入门方法。

尝试、反思、总结、生成、结合实践、检验、逐步迭代升级,这就是我们的经验,也是我们的结果。

这个结果也将成为我们大家合写的一本书《认知学习比特币》的原型(所有有价值的讨论都将成为本书的素材)。

也希望通过这种认知学习方法论的实践和迭代升级,让大家把这种实践出来的学习方法迁移到更多领域的学习中。

所以希望我们携手进入第二季,第三季……

欢迎扫描二维码加入。

比特币挖矿奖励_比特币挖矿网站_比特币 挖矿

了解更多信息,请扫描二维码