当你听说比特币“挖矿”的时候,你会想象把硬币从地下挖出来。但是比特币不是实物。为什么我们称之为采矿?
类似金矿,比特币存在于协议的设计中,就像黄金存在于地下,只是它们没有被暴露出来,就像黄金没有被挖掘出来一样。
比特币协议规定,一次最多2100万个比特币。矿工所做的是把它们带到阳光下,一次几个。一旦矿工们开采完所有这些硬币,就不会有更多的硬币被引入,除非比特币协议发生变化,允许更大的供应量。采矿者通过创建经过验证的交易区块并将其纳入区块链来赚取交易费。
要理解比特币挖矿是如何工作的,我们先回过头来说说节点。节点是强大的计算机,运行比特币软件,全面验证交易和区块。由于比特币网络是去中心化的,这些节点共同负责确认待处理的交易。
任何人都可以运行节点——。你只需要下载免费的比特币软件。缺点是消耗能量和存储空间。写的时候网络需要几百GB的数据。节点在网络中传播比特币交易。一个节点会把信息发送给它认识的几个节点,这些节点再把信息转发给它们认识的节点,以此类推。这样,未决事务最终将在整个网络中快速传播。
有些节点是挖掘节点,通常称为矿工。这些将未完成的交易分成块,并将它们添加到区块链中。他们是怎么做到的?通过解决一个复杂的数学问题,作为比特币程序的一部分,并将答案包含在一个块中。
要解决的问题是找到一个数,当它与块中的数据结合,通过hash函数的范围(将任意大小的输入数据转换成固定长度的输出数据,产生一定范围内的结果)。
对于琐事爱好者来说,这个号码叫做“nonce”,是“使用过一次的号码”的缩写。在区块链中,nonce是一个介于0和4,294,967,296之间的整数。
他们怎么找到这个号码的?通过随机猜测。哈希函数使得预测输出结果变得不可能。因此,挖掘器猜测神秘的数字,并将散列函数应用于猜测的数字和块中的数据的组合。生成的哈希以一定数量的零开始。没有办法知道哪个数字会起作用,因为两个连续的整数会产生非常不同的结果。更重要的是,可能有也可能没有几个随机数产生预期的结果。在这种情况下,矿工将继续尝试,但使用不同的块配置。
计算难度(哈希字符串开头需要的零个数)经常调整,所以平均处理一个块需要10分钟左右。
为什么是10分钟?这是比特币开发者认为稳定和减少新货币流量直到达到2100万的最大值(预计在2140年的某个时候)所需的时间。
第一个获得所需范围内的结果散列的矿工向网络的其余部分宣布他的胜利。其他所有矿工立即停止了在这个区块的工作,开始试图找出下一个区块的神秘数字。作为对他们工作的奖励,获胜的矿工获得了一些新的比特币。
在撰写本文时,奖励为每块6.25比特币,在2020年6月约值5.6万美元。
然而,这笔交易并不像听起来那么容易。有很多挖矿节点在争夺这个奖项。你的计算能力越强,你能进行的猜测计算就越多,你就越幸运。
此外,成为一个挖掘节点的成本是相当可观的,不仅因为需要强大的硬件,还因为这些处理器消耗大量的电力。
而且作为解谜奖励的比特币数量也会减少。现在是6.25,但是每四年左右会减半(下一次预计是2024年)。比特币相对于电力和硬件成本的价值可能会在未来几年上升,以部分补偿这种下降,但这是不确定的。
如果你做到了这一步,恭喜你!关于系统还有很多需要解释的地方,但至少现在你对编程天才的大纲和概念有了一个大概的了解。我们第一次拥有了一个允许以分散、无信任和防篡改的方式进行便捷数字传输的系统。