比特币是被发现的,而不是印刷的。世界各地的计算机通过相互竞争来“挖掘”比特币。
关键要点:
比特币挖矿是发现新区块、验证交易并将其添加到比特币区块链的过程。
每次发现一个新区块时,成功的矿工都被授予用新的交易数据填充该区块的权利。
作为投入时间和资源完成这项任务的回报,获胜的矿工将免费获得一定数量的新铸造的比特币,即“区块奖励”,以及与他们存储在新区块中的交易相关的任何费用。
向成功的矿工提供新铸造的比特币的过程正是新货币进入流通的方式。
为什么要挖掘比特币?
个人或公司想要挖掘比特币等加密货币主要有两个原因。
为了有机会获得比特币区块奖励(截至 2023 年 4 月,相当于 6.25 比特币 - 约合 177,000 美元)。大约每 10 分钟发现一个新区块。
参与保护和维护去中心化的比特币网络。
比特币矿工如何发现新区块?
为了验证并将新交易添加到区块链,矿工必须使用专门的计算设备相互竞争。他们使用设备生成固定长度的代码,称为“哈希值”(见下文)。为了发现下一个区块,矿工必须生成一个哈希值,该哈希值的前面的零数等于或大于“目标哈希值”。
目标哈希是一个 64 位十六进制代码(包含数字 0-9 和字母 AF),所有矿工都试图获取该代码以发现下一个区块。
作为起点,所有矿工都会从前一个区块(称为“区块头”)中获取数据,其中包含区块的时间戳、前一个区块数据的哈希值以及称为“加密随机数”的空白区域。区块头中的大多数数据都是固定的,这意味着除了随机数之外,其他数据都无法更改。随机数的意思是“只使用一次的数字”,是前一个区块头的一部分,矿工可以对其进行调整。请记住,只需更改输入的一位,就会产生完全不同的哈希值。
棘手的是,哈希值是完全随机生成的,这意味着矿工在生成哈希值之前不可能知道哈希值是什么。因此,这只是一个反复试验的过程,直到有人找到正确的随机值 - 即所谓的“黄金随机值”。
这就是为什么矿工必须投资能源密集型计算机,特别是每秒可以产生数万亿个哈希值的专用集成电路 (ASIC) 矿工。
理解比特币挖矿的一个简单方法是将每个新区块想象成一个带有密码锁的宝箱。要获得里面的免费比特币区块奖励并赢得向其中添加新交易数据的权利(并收取相关费用),您必须不断转动锁上的数字轮之一(随机数),直到破解密码(目标哈希值)。
以下是目标哈希的示例:
0000000000000000057fcc708cf0130d95e27c5819203e9f967ac56e4df598ee
要了解生成一个前面有比上述目标哈希更多的零的哈希有多困难,请尝试使用此免费在线哈希生成器自己创建一个获胜哈希。只需在提供的文本框中输入任何您想要的内容,看看它是否会产生一个前面有超过 17 个零的哈希!
什么是哈希?
哈希是一种加密数学函数,可将任何消息或数据输入转换为固定长度的代码。可以将其视为一种加密技术,其中消息以数学方式转置为固定长度的数字和字母序列。
输出的长度是固定的,因此无法猜测输入的大小。例如,“hi”这个词的哈希值与《哈利·波特》这本书全文的哈希值长度完全相同。
这些哈希函数是不可逆的,这意味着不可能将哈希恢复到其原始输入。相同的输入也将始终生成相同的字母和数字序列。例如,“hi”的哈希每次都是相同的代码。生成的每个代码也是完全唯一的,这意味着不可能用两个不同的输入产生相同的哈希。
就比特币而言,区块链使用安全哈希算法 256 或 SHA 256 来生成 256 位或 64 个字符长的输出,而不管输入的大小。
在比特币挖矿过程中,矿工必须生成符合特定条件的哈希值来验证并将新交易添加到区块链中。以下是详细过程和相关依据:
生成哈希值的过程
1. 输入数据:
• 区块头信息:矿工使用区块头的内容进行哈希运算。区块头包含以下信息:
• 前一个区块的哈希
• 区块中包含的交易的梅克尔树根哈希(Merkle Root)
• 时间戳
• 当前区块的难度目标
• 随机数(Nonce)
2. 哈希函数:
• 使用SHA-256:比特币使用SHA-256哈希算法。矿工将区块头作为输入,通过SHA-256生成一个256位(32字节)的哈希值。
3. 随机数(Nonce):
• Nonce的调整:为了找到合适的哈希值,矿工不断更改区块头中的随机数(Nonce)。每次更改Nonce,重新计算哈希值,直到找到满足条件的哈希值。
目标哈希值的获得
1. 难度目标:
• 难度值(Difficulty):比特币网络设定了一个难度值,表示生成合适哈希值的难度。难度值每2016个区块(大约每两周)调整一次,以确保平均每10分钟生成一个新块。
2. 目标哈希值(Target Hash):
• 计算目标哈希值:难度值用来计算目标哈希值。目标哈希值是一个256位的数,所有有效的哈希值必须小于或等于这个目标哈希值。
• 前导零的数量:目标哈希值表示为二进制形式时,前导零的数量越多,难度越大。例如,目标哈希值为“00000000…”,矿工需要生成的哈希值也必须有相同数量的前导零。
实际过程
1. 矿工竞争:
• 计算哈希值:所有矿工同时尝试使用不同的Nonce值来计算哈希值。
• 验证结果:一旦一个矿工找到一个符合目标哈希值条件的哈希值,他们会将新区块广播到网络,其他矿工和节点验证结果的正确性。
• 新区块添加:验证通过后,新的区块被添加到区块链,成功的矿工获得区块奖励和交易费用。
比特币挖矿的回报有多大?
对于区块链中新增的每个区块,协议(即比特币中编入的一组规则)都会向成功的矿工发放一定数量的新币。该区块奖励系统也是比特币的分配机制。
作为中本聪 (Satoshi Nakamoto) 引入的逐步减少比特币发行数量的程序化措施的一部分,奖励给矿工的比特币大约每四年减少一次,即减少 210,000 个区块,这一过程被称为“比特币减半”。2009 年,区块奖励为 50 BTC。2013 年,这一数字降至 25 BTC。最近一次减半发生在 2020 年,区块奖励从 12.5 BTC 降至 6.25 BTC。
请注意,比特币的最大供应量上限为 2100 万,目前流通的比特币数量为 1890 万。一旦 2100 万 BTC 被投放到市场,区块奖励将不再发放。一旦发生这种情况,矿工将只能以比特币交易费的形式获得奖励。
阅读更多:当所有比特币都被开采出来时会发生什么?
即使有这两种收入来源,也并非每个矿工都能盈利。为了维持收支平衡,矿工的收入必须超过电力和购买及维护采矿设备的支出。此外,随着挖矿难度的增加,大型采矿企业被迫扩大或升级设备以保持竞争优势。对于大多数无法负担昂贵设备投资的普通矿工来说,这是一个将资源与全球其他矿工结合起来的机会。每个矿工都同意根据各自的贡献分享奖励。这些矿工网络被称为“采矿池” 。
然而,也有一些罕见的情况,单人矿工可以在家中独自成功开采出区块。
比特币挖矿难度
关于比特币,有一件重要的事情需要了解:中本聪 (Satoshi Nakamoto) 创建协议时,他们设定了 10 分钟的目标区块发现时间。这意味着矿工需要大约 10 分钟才能成功创建获胜代码以发现下一个区块。
那么网络如何确保每 10 分钟发现新区块呢?
比特币协议能够根据发现区块的速度自动增加或减少挖掘过程的复杂性。
每两周,比特币协议都会自动调整目标哈希,使矿工更难或更容易找到区块。如果花费的时间太长(超过 10 分钟),难度就会向下调整;如果少于 10 分钟,难度就会向上调整。更具体地说,协议会增加或减少前面零的数量。这听起来可能不多,但只要在目标哈希中添加一个零,就会让代码更难被破解,反之亦然。
2021 年中国对挖矿活动的严厉打击,导致比特币网络难度出现历史上最大降幅。这随后导致剩余的比特币矿工报告挖矿收入大幅增加。
通过该系统,比特币协议能够将区块发现时间保持在尽可能接近 10 分钟的水平。您可以在此处跟踪比特币的挖矿难度。
阅读更多:比特币挖矿难度:你需要知道的一切
虽然积极参与比特币网络可能是一项回报丰厚的事业,但电力和硬件要求往往会限制其盈利能力——特别是对于资源有限的矿工而言。
为什么比特币挖矿要消耗这么多能源?
比特币最大的缺点之一是它需要耗费大量能源来挖掘新币、验证交易和保护网络。截至发稿时,比特币的哈希率(用于挖掘新币的所有计算能力的度量)为183 exahash (Eh/s )。这意味着比特币矿工每秒集体尝试破解下一个新区块的目标哈希值 183 千万亿次。
根据剑桥比特币电力消耗指数(CBECI),这项活动每年消耗约 131 太瓦时 (TWh) 的电力 - 这比乌克兰在同一时期消耗的电力还要多。
这种极端消耗的主要原因是,每次比特币价格上涨,都会鼓励新矿工加入争夺新币的战斗,并迫使现有企业购买更多矿机或升级设备以保持竞争力。当这种情况发生时,用于挖掘比特币的计算能力就会增加(哈希率增加),这反过来又导致比特币协议增加难度,以便每 10 分钟以稳定的速度继续发现区块。
竞争加剧的自然副产品是能源消耗增加——开采比特币的机器越多,集体能源消耗就越高。