1. 程式人生 > >比特幣的挖礦原理(POW演算法)是什麼?

比特幣的挖礦原理(POW演算法)是什麼?

各位朋友大家晚上好,今天和大家分享的主題是《比特幣挖礦的原理是什麼》?下面讓我們開始今天的分享。

大家如果要來學習區塊鏈,比特幣系統是我們一定會面對的第一個大的知識模組。為什麼是這樣?在昨天的分享中,我們已經提到了,比特幣是區塊鏈的前身實現,區塊鏈是比特幣的後期提煉,兩者的邏輯關係決定了比特幣是個繞不開的傢伙;如果大家是初次接觸比特幣,當你想和別人交流的時候,面對的第一個概念可能就是挖礦。

那麼問題來了?挖礦是什麼意思?挖礦和比特幣是什麼關係?挖礦的原理是什麼?等等。這些問題在我學習區塊鏈的過程中,困擾過我很長一段時間。下面呢,就讓我們來逐一看看。

首先讓我們從 比特幣和挖礦的關係說起;
在開始這個話題之前,我先提個問題:大家有沒有想過為什麼每個區塊鏈系統都要發行自己的數字貨幣?也就是前段時間的ICO熱;這裡面就涉及到區塊鏈的根本作用,這個作用就是:實現社會價值在區塊鏈上的自由流通(類比下網際網路的根本作用:實現資訊的自由流通);比如我可以針對汽車開發一個汽車鏈,針對房子開發一個房子鏈,針對母豬開發一個母豬鏈;等等;如果一個組織或個人的能量足夠大,也可以釋出一個面向全行業的鏈,這個事估計只有央行能做;那汽車、房子、母豬…想在各自的鏈上自由流轉,從A的名下流轉到B的名下,或者從C的名下流轉到D的名下,一定需要個度量的尺度;這個尺度就是靠支出相應的數字貨幣來完成的;換句話說,每條鏈釋出的數字貨幣,充當的是該鏈上價值流通的一般等價物;做個現實的類比:也就是我們生活中用於交易的人民幣、美元、泰銖、英鎊等中央貨幣,在我們購物時充當的作用。每條鏈可以類比成一個國家,每個國家是不是都有自己的貨幣系統?這樣一想,是不是就清楚為什麼每條鏈發行數字貨幣的原因了,其目的就是促使鏈上資產的順利流通;
就數字貨幣而言,對於想做事的人,他充當的是價值流通的一般等價物;對於斂財的人,就是個圈錢的工具;

下面我們就進入正題:分析下比特幣和挖礦的關係;說起二者的關係,需要先說一下在區塊鏈中,數字貨幣的釋出模式;

從籠統的角度來說:區塊鏈釋出鏈上的數字貨幣有兩種主要形式:一種就是像比特幣這種的,通過挖礦節點,不斷消耗自身的算力,也就是不斷挖礦的意思,來換取比特幣;由於比特幣系統是完全開源的,在這套開源的程式碼裡,包含了挖礦的功能,只要一個人懂程式碼,就可以把這套程式碼進行編譯部署,加入到比特幣網路裡面去,把挖礦功能開啟,那你的宿主機開始挖礦了;在比特幣系統,通過自身的演算法可以動態調整全網節點的挖礦難度,保證每過大約10分鐘,比特幣網路中,就會有一個節點挖礦成功;一旦有人挖礦成功,比特幣系統就會獎勵此人一定數量的比特幣,這個數量也是通過演算法控制的,這個演算法可以說一下:最開始的頭四年,每個挖礦成功的人會得到25個比特幣的獎勵,每過四年衰減一半;也就是下一個四年挖礦成功獎勵12.5個,再下一個四年獎勵6.25個,以此類推;大約到2140年的時候,區塊鏈發行完畢,共計約2100萬個比特幣;

通過上面的闡述,大家應該明白挖礦和比特幣的關係了,這個關係就是:挖礦,是比特幣系統發行自身數字貨幣,也就是比特幣的必經之路。比特幣系統,藉助挖礦完成自身數字貨幣的發行;發行數字貨幣的過程,就是各個礦工競爭挖礦的過程。在每一個10分鐘內,看誰先挖到礦,就獎勵一定數量的比特幣,這個獎勵的過程就是比特幣發行的過程;每個挖礦節點,受利益的驅使,也是不斷的想辦法能更快的挖礦,這也就催生了市面上的各種各樣的礦池節點;

剛才我們說了,數字貨幣的發行有兩種主要形式;比特幣的是一種;另外一種,我以國內的NEO為例;NEO的發行模式是:在系統建立的時候,一次性的在創世塊裡,寫入1億個NEO;藉助ICO,使用者可以直接用人民幣認購持有;這種模式有點類似於央行發行人民幣;而比特幣那種發行模式,和淘金很相似;

在剛才的分享中,我們不斷提到了挖礦,那比特幣中的挖礦到低是怎麼一回事呢?

其實挖礦是比特幣系統中一個形象化的表達;它背後真正的名稱是POW演算法,也就是工作量證明演算法;工作量證明,是從經濟學中來的;是1993年,由兩個經濟學家提出來的一種策略,就是,防止對服務濫用或者資源濫用,而採取的一種有效阻斷的經濟策略;

這個POW在比特幣之前就已經被廣泛使用了;其中比較有名的就是Google郵箱的反垃圾郵件系統;Google是怎麼用的呢?google是這樣做的:他要求每一個給google郵件伺服器發電郵的對方伺服器,必須先完成一定量的計算工作;這個計算可能會耗時對方服務執行緒2到3秒;2到3秒,如果是一個人在發郵件,是完全可以忍受的;如果對方是個傳送垃圾郵件的指令碼程式,他是根本無法忍受的,郵件指令碼要做的是每秒成千上百封的往外發;

那在比特幣系統是怎樣用的呢?中本聰在設計實現比特幣系統的時候,希望每10分鐘完成一次比特幣發行,由於比特幣網路中有成千上萬個節點,那該把幣發行給誰呢?按照工作量證明的策略,也就是POW演算法的思路,中本聰在比特幣系統中,給每一個節點出了一個難題,大家先看下語音下方的這個截圖,這是一個區塊頭的資料結構,大家注意一下,裡面有個Nonce欄位;中本聰的難題呢就是:在其他欄位值不變的前提下,通過不斷調節Nonce的值,來對BlockHeader這個結構體值算Hash,要求找到一個Nonce值,使得算出來的hash值小於或大於某個固定值,這個固定值,在BlockHeader結構體中,由Bits來標示;
由於hash演算法是一個不可以逆的演算法,沒法通過具體的hash值,倒推出原文;這樣每個節點只能採用窮舉的方法,也就是從1開始,2 3 4 5…不斷的往後試;在這個過程就開始考驗各個節點的CPU計算速度了,算的快的,很快就能得到Nonce值,然後他就把這個Nonce值放在結構體裡,通過P2P網路廣播出去;每個系統節點收到後,發現這個Nonce值是合法的,能滿足要求,就認為挖礦成功;對於那些算到半截的節點,發現有人已經算出來了,就放棄本次窮舉了;然後開始通過窮舉的辦法,去尋找下一個區塊頭的Nonce值;

這樣大家是不是就明白了,所謂挖礦,就是計算機通過窮舉的辦法,不斷去找Nonce值、算Hash值的過程;誰先找到,誰就挖成功了;

到這裡,基本就把挖礦及挖礦和比特幣的關係說清楚了,其實圍繞挖礦還有很多其他的問題需要解決,比如:挖礦難度的動態調整,入鏈時的孤塊處理,由於網路時延或計算機處理能力導致的分叉處理等等問題,這些問題留著以後再說,今天先把挖礦這件事情和大家說明白了;希望大家聽完能夠有收貨,如果大家願意,可以轉發給你周圍對區塊鏈感興趣的朋友,一起學習進步;
那今天先到這裡,我們下一期再聊;

相關推薦

原理(POW演算法是什麼?

各位朋友大家晚上好,今天和大家分享的主題是《比特幣挖礦的原理是什麼》?下面讓我們開始今天的分享。 大家如果要來學習區塊鏈,比特幣系統是我們一定會面對的第一個大的知識模組。為什麼是這樣?在昨天的分享中,我們已經提到了,比特幣是區塊鏈的前身實現,區塊鏈是比特幣的後

演算法

基礎資料 發行總量:2100萬。 新區塊生成周期:約10分鐘。 挖礦難度調整週期:每2016個區塊,大約2個星期。 挖礦獎勵:比特幣的挖礦獎勵來源於兩部分: 創世區塊獎勵50個比特幣,以後每210000個區塊減半,即約4年調整一次。目前已經經歷了兩次

演算法

Bitcoin mining uses the hashcash proof of work function; the hashcash algorithm requires the following parameters: a service string, a nonce, and a counter

#part1# 演算法

之前,我總以為挖礦就是把Nonce值都試一遍,然後用SHA256演算法算一遍。後面發現自己把東西看得太簡單,我嘗試嘗試講講比特幣的挖礦演算法的流程。 區塊頭 首先挖礦演算法的目標物件只是區塊中的區塊頭,共80個位元組,我們來看看區塊頭有哪些欄位:

的兩種方式

  比特幣挖礦,一般有兩種方式,早期一般都是solo方式,就是單槍匹馬淘金,隨著挖礦設備性能的指數級提高,solo已經無法保障收入,現在一般都是采用加入礦池的方式。 solo方式 說明如下: solo礦工一般通過bitcoind來網絡上獲得新的交易。 挖礦軟件(比如50Miner,GU

《區塊鏈100問》第27集:機進化史

gpo tran per 很難 區塊 出了 http lin sin 自從比特幣誕生以來,比特幣挖礦經歷了以下四個階段:   CPU挖礦-GPU挖礦-專業礦機挖礦-礦池挖礦。   2009年1月3日,比特幣創始人中本聰用電腦CPU挖出了第一批比特幣。   隨著大家對比特幣

對環境真正的影響是什麽?

sta -o 機制 表示 出現 qwt 競爭優勢 錯誤 還要 加密貨幣挖礦其實比印制法幣耗費的電力少。 截至現在,比特幣每天交易數量高達15萬-40萬筆。隨著比特幣網絡算力難度的增加,挖礦對環境影響的問題也愈加突出。比特幣挖礦制度簡介 比特幣挖礦制度指通過計算機硬件

速率單位kH/s,MH/s,GH/s匯率轉換

比特幣挖礦kH/s,MH/s和GH/s有什麼區別? 另外,當我說300 kH /s這是否意味著每秒產生30萬個雜湊? 最佳說明 當然: 1 kH /s是每秒1,000次雜湊(雜湊)(有時錯誤地寫成KH /s)。 1 MH /s是每秒1,000,000

難度升級 區塊鏈交易平臺壟斷加速!

幣挖礦:比特幣挖礦難度升級,行業壟斷加速! 2017年,韭菜們被收割,幣圈哀嚎陣陣,引起市場的恐慌不斷上升。一年的時間裡,幣圈的漲漲浮浮,韭菜們追漲、殺跌、抄底在無限迴圈著。想要獲利是很重要的,但是更重要的是韭菜們怎麼讓自己不被割。然而比特幣挖礦難度升級,韭菜們如何改變被割

什麼意思

認知能力的邊界決定了資訊的利用效率,而結構或者制度決定了資訊的傳播效率。所以,判斷一個區塊鏈的社群是否有價值,資訊的維度是第一個判斷標準。 我們看到新古典經濟學中對資訊的假設是認為市場資訊是完全對稱透明的,而事實上這個假設並不成立。資訊不僅是不對稱的,而且資訊

Go語言學習(三 簡單類實現

//utils.go package main import ( "bytes" "encoding/binary" "log" ) func IntToHex(num int64)[]byte{ buff:=new(bytes.Buffer) //開闢記憶體,

浪費電?你不懂背後的真相!

挖比特幣,費電。 眾所周知。 以目前通用的螞蟻礦機s9i為例。 實打實的1365瓦,具體跑起來的話只會更誇張。平均每天耗電35度電左右。 來自去年的資料,比特幣挖礦在2017年的實時耗電量已經佔到全球總耗電量的0.5%,並且已超越了159個國家的耗電量。下面這

雲算力是什麼?這得要從談起

雲算力挖礦是什麼?相信還有不少幣圈礦工是不太瞭解的,因為很多礦工定義比特幣挖礦就是礦機挖礦,買一堆螞蟻礦機、阿瓦隆礦機、神馬礦機就可以開始比特幣挖礦。但隨著比特幣挖礦市場的快速升溫,挖礦行業也不斷進步和探索著新的挖礦方式。因為參與挖礦的礦工不斷在增加,全網算力也

僅算電費,成本是多少?

比特幣投資,可通過挖礦低廉的方式獲取。那挖到一個比特幣的成本是多少?礦工如何降低挖礦成本,如何控制風險?特別是行情低迷的時,挖到一個比特幣只算電費成本是多少? 挖礦成本主要是礦機的價格和電費,礦機的算力和全網算力相關。礦機的算力高於全網算力,獲取比特幣快,礦機功耗高,也是電費高。比特幣暴

難度降15% 圈重新洗牌,礦工還要關機嗎?

最近比特幣收益不斷縮水。礦圈有人關機,有人退出,挖礦參與人員減少,挖礦難度降低。堅守的礦工,隨著挖礦難度降低,可挖到更多的比特幣。日本有一家公司,11月通過挖礦獲取696個BTC(約264萬美元)。 據悉12月3日挖礦難度再一次做出調整,挖礦難度下降15.13%,創下歷史第二大跌幅。相對

區塊鏈學堂——(一

10萬+人民幣一枚喲2017,還有三天就要謝幕了,如果要盤點今年最值得投資的標的,恐怕非比特幣莫屬,2017年一整年,比特幣在爭議中不斷螺旋上升,暴漲暴跌,風起雲湧。比特幣就如同高爾基描寫的《海燕》——在烏雲和大海之間,像一道黑色的閃電在高獓的飛翔,一會兒翅膀碰著波浪,一會箭

什麼是和區塊鏈共識機制?

經常有人說比特幣是“挖”出來的,而且需要用“礦機”來挖,那這究竟這是什麼意思呢? 比特幣採用一種稱為“工作量證明(PoW,Proof of Work)”共識機制來判斷誰記賬。 什麼是共識機制呢?區塊鏈技術的核心是由系統中節點競爭進行記賬,這個競爭的評判標準稱之為“共

通過原始碼學習 --

挖礦的過程就是區塊生成的過程 同時也是比特幣“發行”的過程。 1. 礦工節點通過暴力碰撞法找到滿足條件的雜湊值(下文詳述) 即為挖礦成功,從而獲取比特幣獎勵 大約每十分鐘產生一個區塊, 每210000個區塊(大約4年)獎勵比特幣減半 2009.1 – 50

,到底是怎麼一回事回事?

        比特幣是一個分散式的點對點網路系統。因此沒有“中央”伺服器,也沒有中央發行機構。

——錢包

1. BitCoin錢包 BitCoin是錢包的一種,目前它需要下載上百G的資料,且之後還會不斷增加,其它錢包也有資料比較少的,但是做礦池一般用bitcoin,可以把它看成實時更新的礦池資料庫。 如果想做礦池的話,必須把錢包資料下到本地,而且後臺程序要一直開著更新資料。還需要給錢包加密。 2. 安裝配置錢包