算力究竟是在计算什么?

时间:2023-11-18 15:49:02

比特币的价值就是交易渠道本身,一组新制造出来的比特币,提供了将旧比特币从一个账户转移到另一个账户的数学保证。这个安全保证背后的代价就是大量的算力。生产一个安全通道需要消耗大量能源,因此,整个比特币用户群体就要对造币者进行奖励。

现在,世界上所有的比特币都是运用计算机的计算能力产生出来的。从最基本的说起,每个账户其实就是一对公钥和私钥,有私钥的人就是账户主人。举个例子,如果A要给B转一笔钱,A就要把钱的数量加上B的公钥,用自己的钥匙签名;B看到这个签名,就可以了解,的确是A转给了他如数的比特币。这笔交易需要一个见证人来担保交易发生过。这样,以后B想用这笔钱的时候才是合法的。而这里的担保人就是整个使用比特币的网络。

算力究竟是在计算什么?

A在发起这笔交易的时候,必须把签过名的交易单尽量广播到P2P网络,最终让每一节点都知道这件事。B从P2P网络上不断地收到别人的确认信息;当收到足够多的确认信息,B就认为A的确发出了这条交易单。之后,B就可以自由使用这笔钱了。

当B使用A转给他的钱转给C时,也会广播给足够多的人让他们担保。每个担保人只有确信B有足够多的钱可以支付才做确认。本质上,比特币网络并没有记录每一块钱属于谁,记录的是从比特币诞生的那一刻起到当前的每一笔交易,并推算出各账户里有多少钱。任何人想确认一个交易单,都需要确认转出账号上有没有那么多钱。

比特币需要解决的核心问题是,如何避免一笔钱被花两次。整个账单序列是一环套一环的,每次在完整的全局账单上签新的一笔时,都要利用前面信息生成后面的信息。这个账单序列被称为Chain of Blocks。每个区块都包含有若干条经过确认并哈希签名(难以伪造)的交易记录;每个区块都和全局表上的上一个区块有联系;每条账单都会通过P2P网络最终转发到制造新区块的节点上。一旦制造成功,新的区块就能广播出去。

借用P2P网络,许多人可能在同时制造新的区块,但有一个排序机制,保证只有最优(最难,花费最大计算时间的)的那个新区块能够被网络群体接受,挂在全局的区块链上。重复一次,整个比特币网络就只能有一个全局账单表,各节点都能完整地保存一份。之后,全局账单表会越来越大,区块链会越来越长,在最新的部分必然会出现许多分叉。这是因为,P2P网络的挖矿过程是分开并行的,每条新账单都不能立刻广播给所有节点,每个挖矿的节点都有责任把他收到的、在他认可的老全局账单上不存在的账单,合并到准备制造的新区块中。一旦新区块被制造出来,就会立刻被广播出去,争取得到更多人的认可,尤其是得到想挖矿的人的认可。

如果P2P网络过大,交易账单不能迅速被广播到全网络,就会出现一份P2P网络局部的、保持有小群体共同认可的全局账单。多个全局账单的分支就可能同时发展,因为各小群体都可能认为他们看见的更长更有效。但是,只要有人发现另一条分支更长,就会转换阵营。所以,用户的账单完全有可能被一个小群体接受,但在一段时间后被抛弃。

不过,算法参数决定了新的区块产生速度很慢,如果用户的账单被多达6个人确认,那么基本上就保证了它合并到的那份全局账单就是被P2P网络全体认可的。

既然生成新区块费时费力,制造出新区块的概率好像买彩票中大奖一样难,那么为何还有那么多人去执行程序计算出新区块?答案是每个制造出新区块的人,都有权利构造一条账单声明:“老天给了我50比特币”。这个规则被所有比特币用户共同承认。

将制造区块等同于挖金矿只是一个形象比喻,其实没有人可以把“金子”挖出来囤积。各新区块都要包括全局表上的上一个区块的哈希值,BTC网络自我调节难度,让每10分钟大约产生一个新区块。如果10分钟内没制造出新区块,就等于前面10分钟白干了,需要从最新版的区块继续演算。

这里,可以用买彩票比喻。每10分钟开一次奖的彩票,用户需要不停地购买,中了就是用户的,不中的就作废,然后开始下一轮。P2P网络不能凭空制造新的比特币,那么制造新的区块的动力是什么?答案是交易税。如果没有人愿意生产新的区块,想要发起交易将非常困难,这时希望交易被确认的人就可以声明:如果有人制造出新的区块接纳他的交易单,他会支付一小笔交易税给他。一旦许多人都这样做,制造区块就会变得有利可图。只不过,不再会诞生新的比特币,只是比特币在这些用户之间进行流通而已。

总有一些比特币会消失,一旦账号私钥丢失了,任何人都无法转移走这个账户上的钱。不能流通的货币就不是货币,而且比特币在达到2100万个后就不再增加。不过,比特币本身是可以切割的,比如可以支付给别人0.01个比特币。因此,比特币本身会升值,总数也一直够用。