HOME/Articles/

比特币网络中挖矿究竟指的是什么?

Article Outline

比特币网络中挖矿究竟指的是什么?

什么是挖矿?

在现实生活中,挖矿指的是对稀有金属(如黄金、白银)的开采,稀有金属由于其天然的特性(总量有限、易保存、耐腐蚀等)就具备了货币的特性,具备交易价值。

在比特币网络中,挖矿指的是矿工节点对交易信息打包的过程,每个矿工节点会先把从网络中搜集得到的交易信息整理到一个候选区块中来,然后依靠暴力破解的手段来解决一个”数学谜题“,一旦获得答案那么就把候选区块打包为区块,随机广播到网络中。矿工在成功打包后,会获得一定的比特币作为奖励,整个区块链网络就是通过这种方式来发现货币的。

每10分钟打包一个区块即可获得一定数量的比特币奖励,每隔4年奖励的比特币数目减半,从最初2009年开始的50个,到2013年降为25个,到2017年降为12.5个,到2021年降为6.25个,当前降为3.125个······,总量为恒定的2100万个,大约需要142年才会将所以的比特币发完。

为什么要挖矿?

肤浅的理解,挖矿的目的是为了获取比特币,但更重要的是,挖矿能够加固整个比特币网络,让整个网络变得更加安全。当越来越多的矿工节点加入网络后,区块链就变得越来越难以篡改。从另一个角度来看,挖矿也是进行是CPU算力证明(Proof-of-Work)的过程,整个区块链上累积的区块代表着最多的工作量,作为所有节点都认可的存在。

如何挖矿?

挖矿就是不断地对区块头进行哈希运算的过程,通过不断地调整区块头的内容,得到不同的哈希值,当哈希值小于给定的目标值后,就代表挖矿成功了。

工作量证明(Proof-of-work)

sha256是一个哈希函数,任意长度的不同输入都会产生一个唯一且不同的256位二进制数。它的特点是计算速度快、不可逆。所谓不可逆指的是无法根据一个哈希值来反推出其输入信息,而只能够一个个试错,通过不断地调整输入来进行哈希计算,直到找到相应的哈希值。

当对候选区块头进行sha256运算,一旦得到的哈希值比目标值小,就表示找到满足条件的输入,挖矿成功。目标值一般会是以0开头的一个256位二进制数,开头的0数目越多,计算难度越大,用时越久,需要计算的次数越多。

从概率的角度来看,对于256位二进制数字,每一位可以是0或1。第一位是0的概率是0.5、前两位是0的概率是0.5^2,前三位是0的概率是0.5^3,随着0的增多,概率越来越小,计算难度也就越来越大,需要计算的次数越多。就像赌场中扔骰子的游戏,每个骰子1到6,扔两个骰子算总和。总和越小难度越大,需要扔的次数越多。

根据区块头部的目标值,可以估算得出所需要的计算次数,通过不断地调整区块头中的nonce值(一般是不断对其进行加1),来获得哈希值,直到得到目标值。当得到目标值时,从概率上来看该矿工已经完成了相应的计算次数。把目标值保存到区块头,打包区块,发送到网络,网络中的其他节点会通过哈希计算进行验证,验证通过表明该节点完成了相应的工作量,随后就把该节点接入到区块链中。