您现在的位置: 比特财富网 >> 区块链 >  >> 區塊鏈百科
挖礦知識入門手冊

前言:


在數字貨幣的生態體系裡,挖礦無疑是最耳熟能詳的一個詞語,工作量證明、交易打包、區塊廣播……各類專業術語眼花缭亂,在大概了解整個過程後也能講出個一二。www.emoneybtc.com然而在實際情況中,大部分人都不知道這些名詞之間的作用關系究竟是什麼,其中也不乏一些在數字貨幣領域裡沉浮多年的資深人士。


我在初步入門學習時發現,很多細節上的痛點問題並沒有一個連貫且易懂的答案,知識點都是片狀且孤立的,讓人們對於這個重要的過程遲遲不能有一個站在高處的系統認知。所以我將自己曾經有過的疑問總結成幾篇文章,從初學者視角用自問自答的方式,深入淺出地為大家答題解惑。


數字貨幣是一種高度技術化的投資產品,只有深刻了解它的機制才能對它的前景做好最准確的判斷。


挖礦知識手冊入門

第一部分:底層知識儲備

在這個部分裡,我將介紹挖礦相關的基本底層知識,其中將會設計到部分數學與編程知識,但各位也無需擔心,我會用最淺顯的語言來解釋,務必讓專業的知識變得不再有門檻而難以理解。


在了解必備的原理後,下一篇文章裡我將結合本章內容,從應用層面進行實操分析。


Q1:什麼是挖礦?為什麼擁有高算力在挖礦過程中如此重要?


A: 首先用大家都知道的一句話籠統概括:挖礦的過程就是產生比特幣的過程。


礦工們需要一同競爭去算出一個數字,當算出的數字小於系統給出的目標值時,即可宣布挖礦成功,進而獲得系統獎勵的比特幣(目前是12.5個)。


在這個過程裡,礦工只能用暴力破解(試數)的方式“碰瓷”答案,除了大量反復的機械計算以外沒有任何捷徑可走,這就是為什麼算力如此重要的原因:你的計算能力越強(算力越大),你就能比別人有更高的優先級算出正確答案——在這個領域裡拼的是人海戰術,三個臭皮匠遠比一個諸葛亮更吃香。


這也就是礦場、礦池之所以會出現的原因。


Q2:什麼是礦機、礦場、礦池和節點?它們之間的關系是什麼?


A: 礦機是專門為了解題而出現的機器,根據出現的先後順序分別為CPU礦機,GPU礦機,ASIC礦機。


最初一批人使用CPU(內存)進行計算挖礦,想要大量匯聚算力意味著需要很多CPU同時進行。但在此過程中他們發覺利用CPU進行計算簡直是大材小用,有很多計算單元根本用不上,殺雞焉用宰牛刀?何況成本還很貴。


此時人們發現GPU(顯卡)能處理的並行計算正好能滿足挖礦需求,進而紛紛轉向利用GPU挖礦,大大減少了成本,提高了性價比。但在越來越多的礦工入場後,人們已經不能滿足於GPU的運算速度了,進而出現了大批的ASIC礦機,即專用集成線路礦機。這種礦機根據不同的幣種算法有著不同的型號,專挖各類數字貨幣。


ASIC礦機的問世瞬間讓算力世界不再公平。越來越多的資本入場,開始購置大批的礦機進行集中挖礦。他們將這些礦機安排在電費地租便宜的深山中,沒日沒夜地同時進行計算,此時便形成了礦場。


然而礦場也隨著市場的擴大而逐漸不占優勢。由於各方算力勢力的崛起,礦場單打獨斗,越來越難挖到屬於自己的塊,出塊的不確定性很難保證收益能夠負擔起成本。


於是各個礦場決定抱團取暖,他們將算力匯聚在一起,最終成為了礦池。一方面出塊的概率大大提高,可以分得一杯羹;另一方面即是沒有挖到塊,礦池也會給他們固定的保底收益,就是出塊後獲得的比特幣大頭會被礦池拿走——但是雖然是別人吃肉,但畢竟是自己實力跟不上,能夠喝口湯就已經不錯了不是嗎?


所以一句話概括,礦機匯聚成礦場,礦場匯聚成礦池,涓滴成河,川流入海。


那麼現在的數字貨幣網絡裡,節點已經不再再是個人的設備了,任何一個礦場或者礦池,都可以看作成一個大的節點,並且後者已經遠遠超過了個人設備節點,成為了比特幣網絡的主力軍。


Q3: 什麼是工作量證明(proof-of-work)?它和上一個回答裡提到的目標值是什麼關系?


A: 首先我們先要了解一下什麼是哈希計算(hash)。


在比特幣挖礦裡主要使用SHA-256算法。我們無需具體了解這個算法的具體機制,我們只需要知道,一個數字A通過SHA-256的計算後,將會變成一個長度為256位的數字B,此時B就叫做A的哈希值。


不同的數字的哈希值絕不會一樣,並且這個過程不可逆,即A可以通過SHA-256得到B,而如果僅知道B,絕不能倒推出數字A。所以即使當系統給出一個值C(已被哈希計算過),沒有任何人能夠倒推出這個值在哈希前是一個什麼數字,只能一個一個數字進行嘗試計算。當某個人算出一個哈希後的數字比系統給出的值C小,即可認證計算成功。


此時,礦工為了尋求答案而進行的計算嘗試的過程,我們稱之為工作量證明(proof-of-work)。


綜上所述:


  • 系統給出的值C即是目標值;
  • 礦工每計算一次,都是工作量證明(proof-of-work)的具體體現。所以工作量證明(proof-of-work)即是證明礦工們為了得到答案確實進行了計算;
  • 再具體一些,我們設定一個參數nonce,作為工作量證明的計數器。nonce初始值為0,每進行一次計算數值加1。

Q4: 系統如何自動判斷是否需要調整挖礦難度?又是如何調節才能將出塊速度維穩在每十分鐘一個?


A: 我們都知道,系統將比特幣出塊的速度設定為1個/10分鐘。但這個並不是絕對固定的,因為出塊的速度跟全網各個節點的算力大小有關。


從下圖https://btc.com/stats/diff網站數據我們可以發現:



 


實際的出塊速度並不是精准的10分鐘,而是在一定的值域內呈小范圍的波動。當某些節點具有較強的算力,它便能更輕松地解開數學題,也就是更快地挖到塊。此時系統將會根據一定周期內的出塊平均時間,進行相應的難度(difficulty)調整:


如果平均值小於10分鐘,便會增加解題難度,即將目標值設置的更小;當目標值減小時,找到一個小於它的哈希值會越來越難(例如,扔骰子扔到小於3點總會比扔到小於6點的概率更小)。反之亦然。


在這裡,系統將每14天進行一次難度評估計算,並作出難度調整。


其中:


設d=14天=60*24*14=20160分鐘


在這14天內,將會挖出塊的數量:p=6*24*14=2016個


那麼出塊平均時間 avg t1 =p/d


當avg t1 小於上一個周期的avg t0時便會增加難度,相反亦同理。


我們需要注意一點的是,挖礦的速度與比特幣交易的數量與金額規模無關,僅跟全網的算力大小有關。而算力的大小又跟電費、當前幣價有關,因為若是幣價過於低,cover不住挖礦的成本,便會有大量的礦工離場。此時系統的算力便會降低,挖礦的難度也會相應調小。但由於系統每14天才會進行一次調整,所以比特幣的挖礦難度會有些許的滯後性。


10分鐘的出塊速度也是當初中本聰一個權衡,太快的話會導致加大分叉概率(關於分叉與孤塊,後面的文章會詳細介紹);而太慢的話會使交易確認變得過於漫長。


  風險提示:比特財富網的各種信息資料僅供參考,不構成任何投資建議,不對任何交易提供任何擔保,亦不構成任何邀約,不作為任何法律文件,投資人據此進行投資交易而產生的後果請自行承擔,本網站不承擔任何責任,理財有風險,投資需謹慎。
比特財富網 版權所有 © www.emoneybtc.com