當前位置:首頁 » 算力簡介 » 比特幣算力如何挖礦

比特幣算力如何挖礦

發布時間: 2023-01-01 14:11:40

A. 什麼是比特幣挖礦

比特幣是一個記錄交易的工具或是系統,他所做的事,在中心化的系統中都可以做到,他的天才之處在於不需要任何一台中心伺服器就能做到,而且從理論上證明了目前是不可攻破的。

挖礦,專業解釋是計算機hash(哈希或散列函數)隨機碰撞的過程。簡單一點說,就是比特幣系統出一道數學題,看誰家挖礦設備先有解。

比特幣系統中的任何一台礦機,都在監聽網路中的交易信息,每收到一條交易信息,就記在自己的塊里,並且都把自己當前所有接收到的交易記錄放到塊里,然後對塊里的所有數據進行哈希計算,生成一個哈希值,或者說是數字指紋。

哪比特幣是怎麼挖礦的呢?現在可以看出來的:

礦就是一小段可以改變,對區塊的其它內容不構成影響的一串數字,礦機在記賬的同時,不斷修改這一小段數據,計算hash值,直到這個hash值滿足當前系統的要求。

如果你算出來了滿足要求的哈希值,你就把這個哈希值和塊一起廣播出去:「哈哈,我挖到了」,大家幫你驗證一下,發現是對。然後就默默地把你的塊放到系統里

如果你輸入一段字元串,經過hash運算,會得到另一串相應(夾雜數字和字母)的字元串。如果稍微做一點改動重新輸入一遍,就算只改動了一個字母,得到的hash值也完全不一樣。

再打個比方,區塊007號假設出了一道題:最先計算出下列值的礦工可以得到比特幣!

各色計算機在礦工們的帶領下,開始苦哈哈地計算正確答案。比特幣系統自身也會調節難度,控制解題的時間,一般來講,約每10分鍾挖出一個區塊。在這10分鍾內,計算機只能不停地去計算,去試各種字元串。

這也是不同計算機計算能力(簡稱算力)之間的較量。擁有更大算力計算機/挖礦機的礦工,獲得的收益越大。雖說挖礦是概率事件,擁有更大算力的礦工不是每次都能最快得到正解,但從比例上講,如果這個礦工擁有10%算力,那麼100個區塊他基本能挖到10個。

其實的普通的電腦都可以做,這裡面最主要的是要不停地計算,用CPU算效率太低,所以很多人開啟GPU並行計算挖礦,更有甚者,直接開發了挖礦的晶元!結果大家用CPU根本搶不過他們嘛。

據報道,最知名加密貨幣比特幣的價格,近一段時間持續在高位運行,2月7日以來一直在40000美元之上,還一度逼近65000美元,市值超過1萬億美元也已有一段時間。

這就是算力的集中化和礦霸的來源。

B. 怎麼挖比特幣最快,挖比特幣掙錢嗎

從比特幣誕生之日起,2009年到2011年間,比特幣對挖礦設備的需求非常小,即使是用普通電腦也能挖,收益也很好.也許是一個值夜班的工程師打開了軟體,睡了一覺就挖了幾萬個比特幣,但是由於比特幣的價格上漲,想挖礦的人也越來越多,挖礦設備的需求也越來越高,而且比特幣挖礦所需要的算力也越來越高,所以比特幣挖礦變得越來越困難。那麼怎樣挖比特幣最快呢?挖比特幣掙錢嗎?

首先我們要知道比特幣到底是什麼?簡單地說,就是一個人除了一個題目,題目總共有X個答案,X是一個定值,即比特幣的總數,你需要用電腦來計算這個答案。除了對 CPU有很高的要求外,對顯卡的運算速度也有很高的要求,越好的顯卡運算速度越高,所以筆記本基本上告別了這個行業,因為大部分筆記本的顯卡都沒辦法做。而且這答案是唯一的,也就是說,每一個答案都是不可復制的,你所計算出來的答案只有你自己知道,別人不能重復計算。這其實是一場數字和演算法的 游戲 。

挖掘速度,一個專業術語,叫做算力,是計算機每秒產生一次hash碰撞的能力。那就是說,我們手中的礦機每秒能做多少次 hash碰撞,就是力量。計算能力就是挖比特幣的能力,它越高,挖得比特幣越多,得到的回報就越多。以1080 Ti顯卡為例,這里使用的是絕對數據,其算力為1.8 GH/S,如果將挖出比特幣的定值換成1,409968000秒,換算過來就是13年,這就是100%能挖出來的情況,也就是說,每一個計算都有可能會計算出以後的正確答案。據業內人士稱,要想有機會挖到比特幣,就必須至少持續運行500天,即這個挖到比特幣的時間范圍為1.5-13年不等,概率也很隨機。

假如算上電費成本和機器成本,就知道13年挖出一塊錢絕對是不劃算的,甚至連挖幣都虧。還有一點需要說明的是,隨著挖出的幣越來越多,剩下的比特幣也越來越少,所以挖幣的效率就會越來越低,很可能要等到13年以後才發現居然20年才能保底。

另外還有一點就是顯卡的價格或挖礦機的價格也是個大問題,因為算力跟顯卡價格會越來越高,而且顯卡已經跟不上時代步伐了,這就需要更加強悍的挖礦機。而這種挖礦機也是有優劣之分,自然頂配的挖礦效率高,只是頂配設備一台怎麼也得二三十萬起步。

一個比特幣要挖多久就看你會投入多少,基本上現在對於我們大部分人來說都是很難堅持的。而我們想要參與比特幣投資,最直接且高效的方式就是去像歐易OKEx這樣的專業平台直接購買,不僅高效便捷,而且還有很好的安全保障。

C. 比特幣是怎麼挖的

比特幣是一本大張本,賬本需要有人來記賬,記賬的獎勵就是比特幣。而這個記賬的權利是需要大家來搶的。挖礦就是搶奪記賬權,誰的算力大,誰就更有可能搶到這個記賬權。

准備好礦機和電源,還需要網線和電腦
安裝IP軟體
准備自己的礦池,礦工號
礦機連接網線、電源線
設置IP
復制礦池地址
監控算力

D. 什麼是比特幣挖礦難度如何調整原理是什麼

比特幣挖礦難度(Difficulty),是對挖礦困難程度的度量,挖礦難度越大,挖出區塊就越困難。目標值(Target)與挖礦難度成反比。難度越高,目標值越小。而難度目標是目標值通過轉化得到,是一個只有 4 個位元組的欄位(為了便於理解,本文將難度目標等同目標值處理)。比特幣系統正是通過調整區塊頭中難度目標來控制挖出區塊所需平均時間的。

目標值是個長度為 256 比特的字元串,換句話說目標值約有 2^256 種可能的取值。調整難度目標就是調整目標值在整個輸出空間的佔比。

舉例說明:挖礦就如射擊,所有射出去的子彈都會落在一個很大的靶子上。難度目標就是這個大靶子上圈出一個范圍,這個范圍越小,被射中的難度就越高。調節難度目標,就是調節這個圈在整個靶子上的佔比。

挖礦算力增大,單位時間射擊的次數就越多,目標范圍被射中所需的時間就越短。反之,挖礦算力減小,目標范圍被擊中所需的時間就越長。而比特幣系統追求的平均出塊時間為 10 分鍾,這時候就需要調整難度目標來實現。

02 如何調整難度目標?

比特幣系統是怎樣調整難度目標的呢?在《白話區塊鏈入門 080 | 數說比特幣,了解 比特幣 必須知道這 10 個數字》一文中,我們介紹了比特幣系統每過 2016 區塊(大約為 14 天時間),會自動調整一次難度目標。所有區塊高度為 2016 整數倍的區塊,系統就會自動調整難度目標。如果上一個難度目標調整周期(也就是之前 2016 個區塊),平均出塊時間大於 10 分鍾,說明挖礦難度偏高,需要降低挖礦難度,增大難度目標(准確地說是目標值);反之,前一個難度目標調整周期,平均出塊時間小於 10 分鍾,說明挖礦難度偏低,需要縮小難度目標。

03 難度目標的可調范圍

比特幣系統設定,難度目標上調和下調的范圍都有 4 倍的限制。舉例說明:假設上一個難度目標調整周期內的 2016 個區塊,由於算力暴漲,只用 7 天就全部挖出來了,通過難度目標調整,將難度目標縮小一倍,可以將平均出塊時間維持在 10 分鍾左右,但如果算力暴漲,前 2016 個區塊全部挖出只用了 1 天,那麼難度目標最小隻能調整為原來的四分之一。

04 總結

比特幣的算力是持續波動的,比特幣系統通過難度目標的調整,使得平均出塊時間維持在 10 分鍾左右。難度目標和挖礦難度成反比,挖礦難度越大,難度目標越小。當區塊高度為 2016 的整數倍時,比特幣系統就會在該區塊上,自動調整難度目標。如果上一個難度目標調整周期內,平均出塊時間超過 10 分鍾,那麼降低挖礦難度,增大難度目標;反之則提高挖礦難度,減小難度目標。難度目標上調和下調的范圍都有 4 倍的限制。

比特幣每 2016 個區塊(大約 14 天)調整一次挖礦難度,相比於 BCH 每個區塊都調整(大約 10 分鍾調整一次),有明顯的滯後性。你認為是哪種調整方式更合理呢?為什麼呢?歡迎在留言區分享你的觀點。

E. 比特幣怎麼挖 挖比特幣的方法

比特幣是一本大賬本,賬本需要有人來記賬,記賬的獎勵就是比特幣。而這個記賬的權利是需要大家來搶的,挖礦就是搶奪記賬權。誰的算力大,誰就更有可能搶到這個記賬權。

1、准備好礦機和電源,還需要網線和電腦。

2、安裝找IP軟體(如已下載則跳過此步驟)

每台礦機都有自己的IP,需要配備軟體才能識別出來,可以在比特大陸的官網-技術支持-設備支持里上找到該軟體,軟體叫作IPReporter。

3、准備自己的礦池、礦工號(如已注冊則跳過此步驟)

如果沒有自己的礦池號和礦工號,那就不能保證挖到的比特幣都是到自己賬戶上了,所以准備這些是必須的。在螞蟻礦池官網注冊一個自己的礦池賬號,並創建一個礦工號。

4、礦機接網線

首先連接好網線,把網線插進礦機的網線介面,記得插緊一點哦。只有連接上網線礦機才能挖礦,寬頻沒有限制。

5、礦機接電源線

把礦機電源的各個介面接入礦機,電源有10根接線,分別接入算力板和控制板。把所有的電源線介面全都接好了,接好線之後記得檢查一下有沒有插得不夠深的地方。接完所有的線就可以讓電源通電了,這時候礦機的燈會開始亮,機器開始響。

6、設置IP

打開剛才下載好的IPReporter這個軟體,點擊「Start」,然後按住礦機的IPReporter這個按鈕,按一秒之後松開。此時軟體上會自動彈出這台礦機的IP地址,將IP地址復制到瀏覽器中。點擊回車鍵,在彈出的身份驗證中,用戶名和密碼都輸入「root」,點擊確定。

7、復制礦池地址

這個時候我們就進入管理礦機的後台,在miner configuration(礦機配置)這里,把螞蟻礦池的挖礦服務地址復制過來,只復制//後面的內容即可。總共有三個地址,全部都要復制到礦機後台。這一步就是保證挖到幣都能到你自己的賬戶里來。

Worker這一欄填上自己螞蟻礦池的剛剛創建的礦工名就行,三個都填一樣的,密碼自己設置即可。點擊右下角的Save&Apply;,等待設置完成即可。

8、監控算力

進入Miner Statu(礦機狀態),多刷新幾次,就可以出現螞蟻礦機目前的運行情況了,再打開自己的礦池,就可以看到礦機為你挖出了多少幣。

F. 比特幣挖礦原理是什麼

比特幣挖礦就是通過挖礦節點,然後比特幣挖礦機(電腦)不斷消耗自身的算力,來換取比特幣。在比特幣系統,通過自身的演算法可以動態調整全網節點的挖礦難度,保證每過大約10分鍾,就會有一個節點挖礦成功,這時比特幣系統就會獎勵此人一定數量的比特幣。挖比特幣是一個比較復雜的過程,不過挖比特幣一般會經過這幾個步驟,分別是准備工作、找到礦池、注冊礦池賬號、礦池賬號設置、下載比特幣挖礦器(軟體)、比特幣挖礦機配置;經過以上步驟就可以挖礦了。
本條內容來源於:中國法律出版社《中華人民共和國金融法典:應用版》

G. 比特幣挖礦機原理介紹 幾個方面來講解

1、最初的時候,用CPU就可以挖到比特幣,中本聰就是用他的電腦CPU挖出了世界上第一個創世區塊。然而,CPU挖礦的時代早已過去,現在的比特幣挖礦是ASIC挖礦和大規模集群挖礦的時代。

2、挖礦速度,專業的說法叫算力,就是計算機每秒產生哈希碰撞的能力。也就是說,我們手裡的礦機每秒能做的哈希碰撞次數,就是算力。

3、比特幣在宏觀上的原理,就如同黃金一樣。黃金在地球上的總量是一定的,而且比較稀少,可以作為一般等價物來使用,在紙幣大面積發行之前,一直作為貨幣的形式來使用。比特幣也是一個道理,之所以比特幣可以用來作為貨幣的形式來進行買賣,也是因為其總量是一定的,而且挖礦需要花費很大的成本,主要表現就是電力上的消耗。

4、工作量證明,簡單理解就是一份證明,用來確認你做過一定量的工作。監測工作的整個過程通常是極為低效的,而通過對工作的結果進行認證來證明完成了相應的工作量,則是一種非常高效的方式。

5、比特幣的背後是一個公共賬本,這個賬本每十分鍾需要重新記錄一遍,而成功記賬者會獲得一定數量比特幣的獎勵。在比特幣誕生之初,這個獎勵是50個比特幣,這一數字大約每4年減半。

H. 比特幣挖礦的難度和算力

難度是對挖礦困難程度的度量,即指:計算符合給定目標的一個HASH值的困難程度。

difficulty = difficulty_1_target / current_target

difficulty_1_target 的長度為256bit, 前32位為0, 後面全部為1 ,一般顯示為HASH值:, difficulty_1_target 表示btc網路最初的目標HASH。 current_target 是當前塊的目標HASH,先經過壓縮然後存儲在區塊中,區塊的HASH值必須小於給定的目標HASH, 區塊才成立。

例如:如果區塊中存儲的壓縮目標HASH為 0x1b0404cb , 那麼未經壓縮的十六進制HASH為

所以,目標HASH為0x1b0404cb時, 難度為:

比特幣的挖礦的過程其實是通過隨機的hash碰撞,找到一個解 nonce ,使得 塊hash 小於 目標HASH 值。 而一個礦機每秒鍾能做多少次hash碰撞, 就是其「算力」的代表, 單位寫成 hash/s 或者 H/s

算力單位:

比特幣系統的難度是動態調整的, 每挖 2016 個塊便會做出一次調整, 調整的依據是前面2016個塊的出塊時間, 如果前一個周期平均出塊時間小於10分鍾,便會加大難度, 大於10分鍾,則減小難度,目的是為了保證系統穩定的每過 10分鍾 產出一個塊,所以難度調整的時間大概是2周(2016 * 10 分鍾)

全網算力是btc網路中參與競爭挖礦的所有礦機的算力總和。當前難度周期全網算力會影響下一個周期的難度調整, 如果全網算力增加,挖礦難度增大,單台礦機固定時間的產出就會減少。目前全網算力大概是24.42EH/s, 一台螞蟻S9礦機的算力大概是14TH/s

那麼, 已知當前全網算力,下一個周期難度將如何調整呢?

根據公式:

因為出塊時間要穩定在10分鍾, 也就是600s:

那麼,在3.46e+12的難度下, 一台算力為14TH/s的礦機平均要花多長時間才能出一個塊呢?

根據公式:

有:

結果大概是12270天

I. 詳解比特幣挖礦原理

可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。

比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。

至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。

通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。

在2016年的某個時刻,在第420,000個區塊被「挖掘」出來之後降低到12.5比特幣/區塊。在第13,230,000個區塊(大概在2137年被挖出)之前,新幣的發行速度會以指數形式進行64次「二等分」。到那時每區塊發行比特幣數量變為比特幣的最小貨幣單位——1聰。最終,在經過1,344萬個區塊之後,所有的共20,999,999.9769億聰比特幣將全部發行完畢。換句話說, 到2140年左右,會存在接近2,100萬比特幣。在那之後,新的區塊不再包含比特幣獎勵,礦工的收益全部來自交易費。

在收到交易後,每一個節點都會在全網廣播前對這些交易進行校驗,並以接收時的相應順序,為有效的新交易建立一個池(交易池)。

每一個節點在校驗每一筆交易時,都需要對照一個長長的標准列表:

交易的語法和數據結構必須正確。

輸入與輸出列表都不能為空。

交易的位元組大小是小於MAX_BLOCK_SIZE的。

每一個輸出值,以及總量,必須在規定值的范圍內 (小於2,100萬個幣,大於0)。

沒有哈希等於0,N等於-1的輸入(coinbase交易不應當被中繼)。

nLockTime是小於或等於INT_MAX的。

交易的位元組大小是大於或等於100的。

交易中的簽名數量應小於簽名操作數量上限。

解鎖腳本(Sig)只能夠將數字壓入棧中,並且鎖定腳本(Pubkey)必須要符合isStandard的格式 (該格式將會拒絕非標准交易)。

池中或位於主分支區塊中的一個匹配交易必須是存在的。

對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕。

對於每一個輸入,在主分支和交易池中尋找引用的輸出交易。如果輸出交易缺少任何一個輸入,該交易將成為一個孤立的交易。如果與其匹配的交易還沒有出現在池中,那麼將被加入到孤立交易池中。

對於每一個輸入,如果引用的輸出交易是一個coinbase輸出,該輸入必須至少獲得COINBASE_MATURITY (100)個確認。

對於每一個輸入,引用的輸出是必須存在的,並且沒有被花費。

使用引用的輸出交易獲得輸入值,並檢查每一個輸入值和總值是否在規定值的范圍內 (小於2100萬個幣,大於0)。

如果輸入值的總和小於輸出值的總和,交易將被中止。

如果交易費用太低以至於無法進入一個空的區塊,交易將被拒絕。

每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證。

以下挖礦節點取名為 A挖礦節點

挖礦節點時刻監聽著傳播到比特幣網路的新區塊。而這些新加入的區塊對挖礦節點有著特殊的意義。礦工間的競爭以新區塊的傳播而結束,如同宣布誰是最後的贏家。對於礦工們來說,獲得一個新區塊意味著某個參與者贏了,而他們則輸了這場競爭。然而,一輪競爭的結束也代表著下一輪競爭的開始。

驗證交易後,比特幣節點會將這些交易添加到自己的內存池中。內存池也稱作交易池,用來暫存尚未被加入到區塊的交易記錄。

A節點需要為內存池中的每筆交易分配一個優先順序,並選擇較高優先順序的交易記錄來構建候選區塊。

一個交易想要成為「較高優先順序」,需滿足的條件:優先值大於57,600,000,這個值的生成依賴於3個參數:一個比特幣(即1億聰),年齡為一天(144個區塊),交易的大小為250個位元組:

High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

區塊中用來存儲交易的前50K位元組是保留給較高優先順序交易的。 節點在填充這50K位元組的時候,會優先考慮這些最高優先順序的交易,不管它們是否包含了礦工費。這種機制使得高優先順序交易即便是零礦工費,也可以優先被處理。

然後,A挖礦節點會選出那些包含最小礦工費的交易,並按照「每千位元組礦工費」進行排序,優先選擇礦工費高的交易來填充剩下的區塊。

如區塊中仍有剩餘空間,A挖礦節點可以選擇那些不含礦工費的交易。有些礦工會竭盡全力將那些不含礦工費的交易整合到區塊中,而其他礦工也許會選擇忽略這些交易。

在區塊被填滿後,內存池中的剩餘交易會成為下一個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸入時所引用UTXO的深度(即交易「塊齡」)也會隨著變大。由於交易的優先值取決於它交易輸入的「塊齡」,所以這個交易的優先值也就隨之增長了。最後,一個零礦工費交易的優先值就有可能會滿足高優先順序的門檻,被免費地打包進區塊。

UTXO(Unspent Transaction Output) : 每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出,而其所產生的輸出,就是「未花費過的交易輸出」,也就是 UTXO。

塊齡:UTXO的「塊齡」是自該UTXO被記錄到區塊鏈為止所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。

區塊中的第一筆交易是筆特殊交易,稱為創幣交易或者coinbase交易。這個交易是由挖礦節點構造並用來獎勵礦工們所做的貢獻的。假設此時一個區塊的獎勵是25比特幣,A挖礦的節點會創建「向A的地址支付25.1個比特幣(包含礦工費0.1個比特幣)」這樣一個交易,把生成交易的獎勵發送到自己的錢包。A挖出區塊獲得的獎勵金額是coinbase獎勵(25個全新的比特幣)和區塊中全部交易礦工費的總和。

A節點已經構建了一個候選區塊,那麼就輪到A的礦機對這個新區塊進行「挖掘」,求解工作量證明演算法以使這個區塊有效。比特幣挖礦過程使用的是SHA256哈希函數。

用最簡單的術語來說, 挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的哈希值低於某個特定的目標。 哈希函數的結果無法提前得知,也沒有能得到一個特定哈希值的模式。舉個例子,你一個人在屋裡打檯球,白球從A點到達B點,但是一個人推門進來看到白球在B點,卻無論如何是不知道如何從A到B的。哈希函數的這個特性意味著:得到哈希值的唯一方法是不斷的嘗試,每次隨機修改輸入,直到出現適當的哈希值。

需要以下參數

• block的版本 version

• 上一個block的hash值: prev_hash

• 需要寫入的交易記錄的hash樹的值: merkle_root

• 更新時間: ntime

• 當前難度: nbits

挖礦的過程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。

簡單打個比方,想像人們不斷扔一對色子以得到小於一個特定點數的游戲。第一局,目標是12。只要你不扔出兩個6,你就會贏。然後下一局目標為11。玩家只能扔10或更小的點數才能贏,不過也很簡單。假如幾局之後目標降低為了5。現在有一半機率以上扔出來的色子加起來點數會超過5,因此無效。隨著目標越來越小,要想贏的話,扔色子的次數會指數級的上升。最終當目標為2時(最小可能點數),只有一個人平均扔36次或2%扔的次數中,他才能贏。

如前所述,目標決定了難度,進而影響求解工作量證明演算法所需要的時間。那麼問題來了:為什麼這個難度值是可調整的?由誰來調整?如何調整?

比特幣的區塊平均每10分鍾生成一個。這就是比特幣的心跳,是貨幣發行速率和交易達成速度的基礎。不僅是在短期內,而是在幾十年內它都必須要保持恆定。在此期間,計算機性能將飛速提升。此外,參與挖礦的人和計算機也會不斷變化。為了能讓新區塊的保持10分鍾一個的產生速率,挖礦的難度必須根據這些變化進行調整。事實上,難度是一個動態的參數,會定期調整以達到每10分鍾一個新區塊的目標。簡單地說,難度被設定在,無論挖礦能力如何,新區塊產生速率都保持在10分鍾一個。

那麼,在一個完全去中心化的網路中,這樣的調整是如何做到的呢?難度的調整是在每個完整節點中獨立自動發生的。每2,016個區塊(2周產生的區塊)中的所有節點都會調整難度。難度的調整公式是由最新2,016個區塊的花費時長與20,160分鍾(兩周,即這些區塊以10分鍾一個速率所期望花費的時長)比較得出的。難度是根據實際時長與期望時長的比值進行相應調整的(或變難或變易)。簡單來說,如果網路發現區塊產生速率比10分鍾要快時會增加難度。如果發現比10分鍾慢時則降低難度。

為了防止難度的變化過快,每個周期的調整幅度必須小於一個因子(值為4)。如果要調整的幅度大於4倍,則按4倍調整。由於在下一個2,016區塊的周期不平衡的情況會繼續存在,所以進一步的難度調整會在下一周期進行。因此平衡哈希計算能力和難度的巨大差異有可能需要花費幾個2,016區塊周期才會完成。

舉個例子,當前A節點在挖277,316個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第277,316個區塊(父區塊為277,315)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。

比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。

每一個節點對每一個新區塊的獨立校驗,確保了礦工無法欺詐。在前面的章節中,我們看到了礦工們如何去記錄一筆交易,以獲得在此區塊中創造的新比特幣和交易費。為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?這是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒絕,因此,該交易就不會成為總賬的一部分。

比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊,它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。

節點維護三種區塊:

· 第一種是連接到主鏈上的,

· 第二種是從主鏈上產生分支的(備用鏈),

· 第三種是在已知鏈中沒有找到已知父區塊的。

有時候,新區塊所延長的區塊鏈並不是主鏈,這一點我們將在下面「 區塊鏈分叉」中看到。

如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。

選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈,新塊本身就代表它們的投票。

因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是, 每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。

當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其並入並延長區塊鏈。如果該節點在隨後又收到了另一個候選區塊,而這個區塊又擁有同樣父區塊,那麼節點會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。

分叉之前

分叉開始

我們看到兩個礦工幾乎同時挖到了兩個不同的區塊。為了便於跟蹤這個分叉事件,我們設定有一個被標記為紅色的、來自加拿大的區塊,還有一個被標記為綠色的、來自澳大利亞的區塊。

假設有這樣一種情況,一個在加拿大的礦工發現了「紅色」區塊的工作量證明解,在「藍色」的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了「綠色」區塊的解,也延長了「藍色」區塊。那麼現在我們就有了兩個區塊:一個是源於加拿大的「紅色」區塊;另一個是源於澳大利亞的「綠色」。這兩個區塊都是有效的,均包含有效的工作量證明解並延長同一個父區塊。這個兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。

比特幣網路中鄰近(網路拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到「紅色」區塊,並建立一個最大累計難度的區塊,「紅色」區塊為這個鏈的最後一個區塊(藍色-紅色),同時忽略晚一些到達的「綠色」區塊。相比之下,離澳大利亞更近的節點會判定「綠色」區塊勝出,並以它為最後一個區塊來延長區塊鏈(藍色-綠色),忽略晚幾秒到達的「紅色」區塊。那些首先收到「紅色」區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受「綠色」區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈。

分叉問題幾乎總是在一個區塊內就被解決了。網路中的一部分算力專注於「紅色」區塊為父區塊,在其之上建立新的區塊;另一部分算力則專注在「綠色」區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解並將其傳播出去。在這個例子中我們可以打個比方,假如工作在「綠色」區塊上的礦工找到了一個「粉色」區塊延長了區塊鏈(藍色-綠色-粉色),他們會立刻傳播這個新區塊,整個網路會都會認為這個區塊是有效的,如上圖所示。

所有在上一輪選擇「綠色」區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇「紅色」區塊為勝出者的節點現在會看到兩個鏈: 「藍色-綠色-粉色」和「藍色-紅色」。 如上圖所示,這些節點會根據結果將 「藍色-綠色-粉色」 這條鏈設置為主鏈,將 「藍色-紅色」 這條鏈設置為備用鏈。 這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識 。因為「紅」區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為了「孤塊」,所以現在任何原本想要在「藍色-紅色」鏈上延長區塊鏈的礦工都會停下來。全網將 「藍色-綠色-粉色」 這條鏈識別為主鏈,「粉色」區塊為這條鏈的最後一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為「粉色」,來延長「藍色-綠色-粉色」這條鏈。

從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。

比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

J. 天天說挖礦,比特幣挖礦流程概述。

通俗易懂的大概流程

如果你之前對挖礦根本沒有了解,這段介紹就適合你閱讀,進入狀態後再進行更深層次的學習。

其實通俗來講原理很簡單,比特幣作為一種點對點的電子貨幣體系,挖礦的過程就是一個紀錄數據的過程,因為整個系統是開放的,人人可參與的,所以人人都可以進行挖礦,雖然理論上人人都可以參與,但無利不起早沒有人會平白無故的參與到網路的建設中,中本聰就利用Hash函數設計了一種激勵和競爭方式。

大家都進行數據的處理工作,誰處理的又快又准確,誰就獲得記賬權,同時獲得該區塊的獎勵。既有獎勵又有競爭才使得比特幣網路得以正常運轉。

想要競爭成功就要經歷幾個基本的流程。

一、首先你要將沒有被記錄的交易信息檢查並歸集到一個數據塊中。

二、數據塊打包好後,進行哈希運算,算出哈希值,哈希值這個概念在昨天文章中已經詳細的介紹過。

三、算出哈希值後進行全網廣播,其他礦工接收到後進行驗證,驗證沒有問題就會將這一個數據塊連接到整個區塊鏈上,就可以獲得這個區塊的獎勵了。

大致過程了解後就可以開始詳細的了解整個過程了。

開始挖礦前的准備工作

這里所說的准備,可不是讓你准備買礦機或者給礦機通電,說的是在進行POW工作量證明之前記賬節點所作的准備工作。也就是前面流程的第一步的具體解釋。

想要收集齊全交易信息,第一步就是收集廣播中還沒有被記錄賬本的原始交易信息。收集完成後就要自己先進行驗證,主要驗證兩個方面,1.每個交易信息中的付款地址有沒有足夠付款的余額。2.驗證交易是否有正確的簽名。這兩項必不可少,通俗一點就是你給別人打錢銀行需要確認的就是兩點,你賬號里到底有沒有那麼多錢,是不是你本人或本人同意的行為。

這兩項驗證完後就可以將驗證好的數據進行打包,打包完成後當然沒有完,因為還有對於礦工來說最最重要的 一 步,添加一個獎勵交易,寫一個給自己地址增加6.25枚比特幣的交易。

如果你競爭成功,那麼你的賬戶地址內就會增加6.25枚比特幣,在這里也順便提一下減半,最開始一個區塊的記賬獎勵是50個比特幣,比特幣大概每4年獎勵就進行減半,前一段時間的減半過後比特幣一個區塊的獎勵已經變成了6.25枚。

值得一提的是前兩次減半後都伴隨著牛市的來臨,現在第三次減半已過,在之後會有什麼樣的變化呢?

准備工作完成後就要正式的爭奪了

因為10分鍾左右就一個記賬的名額,在這個階段全世界的礦工,都進行著一場沒有硝煙的戰爭。

那這場仗怎麼打呢?其實就是計算Hash函數,礦工算力的比拼,所以說在比特幣網路哪裡都離不開Hash函數。為了保證在10分鍾只有一個人能夠成功,這個哈希函數的難度必須適當。直接哈希難度過低,所以規定Hash出的結果必須以若干個0構成。

可能直接這么說開頭若干個0還沒有什麼難度概念,那就簡單分析一下,進行這樣的計算有多難 , 也就順便可以解釋為什麼單打獨斗的礦工已經不吃香了。

Hash值跟平常我們設置的密碼要求相似,是由數字、字母組成,其中字母區分大小寫。也就是說每一位都有62種可能,哈希運算本質就是試錯,相當於給你一個不限出錯次數的手機讓你開鎖一樣 。 而比特幣的哈希值是以18個0開頭的,理論上需要進行62的18次方,這個數字在普通計算器上都是以科學計數法顯示的,結果為1.832527122*10的32次方。

指數爆炸式的運算次數增長保證了其挖礦的難度。同時也因為難度大帶來了一些爭議,有人就會說耗費那麼大卻不產生價值,之前挖礦還在一份意見徵集稿中放到了落後產能里。可以說對於挖礦行業的爭議是一直存在的。

最後一步驗證

找到哈希值後,進行廣播打包區塊,網路節點就會進行驗證。

情況無非就是兩種,一種是驗證通過,那麼表明這個區塊成功挖出,其他礦工就不再競爭,選擇接受這個區塊,將這個區塊進行記錄,挖出這個區塊的礦工就獲得了該區塊的獎勵,並且進入下一個區塊的競爭。

另外一種就是不通過,那麼前面的那些工作都白費了,投入的成本就沒有辦法收回,所以礦工們都自覺的遵守著打包和驗證的規則,因為作惡成本較高,也就維護了比特幣網路的安全。

相信你讀完文章已經大致了解了比特幣挖礦的整個流程,不過挖礦實際操作起來又是另一個概念了,其中什麼時候適合進場挖礦、入手什麼樣的礦機進行挖礦、通過什麼樣的方式參與挖礦都是有一定學問的。

挖礦有風險投資需謹慎呀,搞懂再行動,沒搞懂之前就要多學習。

熱點內容
足球鞋trx是什麼 發布:2024-10-01 21:30:29 瀏覽:2
幣圈中的爆倉是什麼意思 發布:2024-10-01 21:18:46 瀏覽:108
比特幣大盤曲線圖 發布:2024-10-01 21:12:29 瀏覽:539
LTC外語培訓教材 發布:2024-10-01 20:59:12 瀏覽:124
聯通靚號20年合約怎麼解除 發布:2024-10-01 20:46:07 瀏覽:931
智能合約LP的價格怎麼確定 發布:2024-10-01 20:30:23 瀏覽:64
ETH名稱 發布:2024-10-01 19:12:43 瀏覽:31
區塊鏈上億大學生 發布:2024-10-01 18:53:43 瀏覽:739
顯卡可以挖比特幣 發布:2024-10-01 18:52:54 瀏覽:976
2018比特幣還能漲價嗎 發布:2024-10-01 18:42:17 瀏覽:611