時(shí)間:2023-07-09|瀏覽:224
當(dāng)你和別人交流比特幣的時(shí)候,除了提到它所代表的價(jià)值的高低之外,還會(huì)提到一個(gè)概念:挖礦。比特幣就是通過(guò)挖礦挖出來(lái)的。
比特幣每年可以挖到的數(shù)量
我們首先需要了解幾個(gè)簡(jiǎn)單的概念。P2P點(diǎn)對(duì)點(diǎn)金融大家應(yīng)該都有所了解,這里我們先解釋下P2P軟件。舉個(gè)例子:比如你從騰訊視頻上面觀看電影,想要把電影下載到手機(jī)觀看,但這個(gè)下載過(guò)程中,電影的來(lái)源就是騰訊視頻的服務(wù)器上,簡(jiǎn)單的理解為電影存在騰訊視頻上。然后從騰訊視頻服務(wù)器的硬盤(pán)下載到手機(jī),而P2P軟件不同的就是電影的資源可以從其他P2P用戶電腦硬盤(pán)上下載,如果其他P2P用戶需要下載資源也可從你得手機(jī)中下載。
我們可以把這個(gè)電影比作比特幣。它不存在于任何公司、銀行、政府的服務(wù)器上,而是存在于互聯(lián)網(wǎng)中,存在于所有人的電腦中,每隔一段時(shí)間比特幣系統(tǒng)就會(huì)在系統(tǒng)節(jié)點(diǎn)上生產(chǎn)一個(gè)隨機(jī)代碼,然后所有人的電腦均可以計(jì)算此代碼,第一個(gè)計(jì)算到的人就會(huì)產(chǎn)生一個(gè)區(qū)塊,獲得到比特幣,這就是我們所說(shuō)的挖礦。而礦機(jī)就是電腦。
上文我們說(shuō)過(guò)比特幣總共只有2100萬(wàn)枚,而目前一枚比特幣基于目前的數(shù)據(jù)結(jié)構(gòu)會(huì)被分割成8個(gè)小數(shù)位,也就是0.00000001BTC,礦工們可以挖到的最小比特幣的單位就是0.00000001BTC。
在比特幣系統(tǒng)中,是可以通過(guò)自身的算法來(lái)動(dòng)態(tài)地調(diào)整全網(wǎng)所有電腦的挖礦難度的,目前在比特幣系統(tǒng)中,每過(guò)10分鐘,就會(huì)有一個(gè)節(jié)點(diǎn)挖礦成功,一但有人挖礦成功,比特幣系統(tǒng)就會(huì)獎(jiǎng)勵(lì)挖礦者一定數(shù)量的比特幣,這個(gè)數(shù)量也是通過(guò)算法進(jìn)行控制的。簡(jiǎn)單的解釋就是最開(kāi)始的四年,每個(gè)挖礦成功的人可以得到25枚比特幣的獎(jiǎng)勵(lì)。每四年衰減一半,下一個(gè)四年,每個(gè)挖礦成功的人只能獲得獎(jiǎng)勵(lì)12.5個(gè)。下一個(gè)四年就會(huì)得到獎(jiǎng)勵(lì)6.25個(gè),以此類(lèi)推,直到2140年的時(shí)候區(qū)塊鏈發(fā)行完畢,比特幣就獎(jiǎng)勵(lì)完了??偣仓挥?100萬(wàn)枚。
比特幣的挖礦計(jì)算公式
比特幣的設(shè)計(jì)者中本聰在設(shè)計(jì)比特幣系統(tǒng)的時(shí)候,希望每隔10分鐘就可以發(fā)行一次比特幣,但是比特幣系統(tǒng)中挖礦的電腦可能成千上萬(wàn)臺(tái),那應(yīng)該給誰(shuí)發(fā)呢?
中本聰采用了一個(gè)工作量證明的策略,在比特幣系統(tǒng)中給每臺(tái)電腦出一個(gè)難題,在每個(gè)新區(qū)塊里面,區(qū)塊頭的數(shù)據(jù)結(jié)構(gòu)中存在一個(gè)Nonce的字段。難題就是:在區(qū)塊頭中其他的字段值不變的前提下,不斷地調(diào)整Nonce字段的值,然后對(duì)區(qū)塊頭里面BlockHeader這個(gè)結(jié)構(gòu)體的值計(jì)算Hash。要求要到一個(gè)Nonce值,使得計(jì)算出的Hash值小于或者等于某個(gè)固定的值。
列舉一下區(qū)塊頭中參與計(jì)算的參數(shù):
version----------------block的版本 prev_hash----------------上一個(gè)Bl遼寧礦場(chǎng)ockHeader的hash值 merkle_root----------------需要寫(xiě)入交易記錄的Hash值 ntime----------------更新時(shí)間 nbits-----------------必須小于或者等于當(dāng)前值 Nonce------------------上文說(shuō)的隨機(jī)值
計(jì)算公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+Nonce))<nbits
所以挖礦其實(shí)就是通過(guò)計(jì)算機(jī)的CPU、GPU計(jì)算一個(gè)特定的數(shù)據(jù)結(jié)構(gòu),比特幣挖礦過(guò)程使用的是SHA256哈希函數(shù)。由于Hash算法是一個(gè)不可逆的算法,沒(méi)法通過(guò)具體的Hash值倒推出原文,所以計(jì)算機(jī)只能采用窮舉的方法,從1開(kāi)始不斷地嘗試,1,2,3,4.....在這個(gè)過(guò)程在就是考驗(yàn)計(jì)算的CPU的計(jì)算速度了,計(jì)算速度快的,很快就能得到這個(gè)Nonce值,然后把Nonce值放入?yún)^(qū)塊的結(jié)構(gòu)體里面,通過(guò)P2P網(wǎng)絡(luò)進(jìn)行廣播出去,然后通過(guò)每個(gè)節(jié)點(diǎn)去驗(yàn)證這個(gè)Nonce的值是否合法。如果全部驗(yàn)證通過(guò),就認(rèn)為這個(gè)區(qū)塊挖掘成功,挖到礦了。其他的計(jì)算機(jī)可能計(jì)算出一半,也可能計(jì)算出來(lái),但一旦別人計(jì)算出的值被驗(yàn)證通過(guò),計(jì)算機(jī)只能放棄本次窮舉,轉(zhuǎn)而向新的區(qū)塊進(jìn)行挖掘,計(jì)算,去尋找下一個(gè)區(qū)塊頭的Nonce的值。
用最簡(jiǎn)單的術(shù)語(yǔ)來(lái)說(shuō),就是挖礦的節(jié)點(diǎn)會(huì)不斷地重復(fù)嘗試,直到找到的隨機(jī)數(shù)計(jì)算得到的哈希值低于某個(gè)特定的目標(biāo)值。其中哈希函數(shù)的結(jié)果是無(wú)法提前得知的,也是無(wú)規(guī)律的。只能不斷地產(chǎn)生計(jì)算。
因此可以把挖礦理解為,讓計(jì)算機(jī)通過(guò)窮舉的辦法,不斷去找Nonce值、計(jì)算Hash值。誰(shuí)先找到這個(gè)Nonce值并且廣播驗(yàn)證通過(guò),誰(shuí)就挖到礦了。
普通人怎么進(jìn)行挖礦?
任何人都可以在專(zhuān)門(mén)的硬件上面運(yùn)行軟件來(lái)成為比特幣的挖礦工,挖礦軟件通過(guò)P2P網(wǎng)絡(luò)監(jiān)聽(tīng)交易廣播,執(zhí)行恰當(dāng)?shù)剡\(yùn)行計(jì)算任務(wù),并且確認(rèn)一些交易,比特幣礦工可以獲得的收益就是完成確認(rèn)工作中賺取用戶支付的用于加速交易處理的交易手續(xù)費(fèi)以及按照固定公式增加的比特幣。
挖礦機(jī)
挖礦機(jī)一般都是配置了專(zhuān)業(yè)的挖礦芯片的電腦,目前大多數(shù)采用的燒顯卡的方式(利用顯卡GPU來(lái)進(jìn)行挖礦),耗電量比較大,這也是最近市面上顯卡價(jià)格不斷漲價(jià)的原因。
然后下載軟件,運(yùn)行算法,需要下載專(zhuān)門(mén)的比特幣運(yùn)算工具,然后注冊(cè)合作網(wǎng)站,把注冊(cè)得到的用戶名和密碼填入計(jì)算程序中,點(diǎn)擊運(yùn)算就可以進(jìn)行挖礦了。比如比特幣挖礦軟件guiminer。是完