當前位置:首頁 » 比特幣問答 » 比特幣挖礦網路結構圖

比特幣挖礦網路結構圖

發布時間: 2022-09-26 22:08:40

比特幣挖礦與共識(二)

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

獨立校驗還確保了誠實 的礦工生成的區塊可以被納入到區塊鏈中,從而獲得獎勵。行為不誠實的礦工所產生的區塊將被拒絕,這不但使他們失 去了獎勵,而且也浪費了本來可以去尋找工作量證明解的機會,因而導致其電費虧損。

當一個節點接收到一個新的區塊,它將對照一個長長的標准清單對該區塊進行驗證,若沒有通過驗證,這個區塊將被拒 絕。這些標准可以在比特幣核心客戶端的CheckBlock函數和CheckBlockHead函數中獲得

它包括:

為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?

這 是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒 絕,因此,該交易就不會成為總賬的一部分。礦工們必須構建一個完美的區塊,基於所有節點共享的規則,並且根據正 確工作量證明的解決方案進行挖礦,他們要花費大量的電力挖礦才能做到這一點。如果他們作弊,所有的電力和努力都 會浪費。這就是為什麼獨立校驗是去中心化共識的重要組成部分。

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

節點維護三種區塊:第一種是連接到主鏈上的,第二種是從主鏈上產生分支的(備用鏈),最後一種是在已知鏈中沒有 找到已知父區塊的。在驗證過程中,一旦發現有不符合標準的地方,驗證就會失敗,這樣區塊會被節點拒絕,所以也不 會加入到任何一條鏈中。

任何時候,主鏈都是累計了最多難度的區塊鏈。在一般情況下,主鏈也是包含最多區塊的那個鏈,除非有兩個等長的鏈 並且其中一個有更多的工作量證明。主鏈也會有一些分支,這些分支中的區塊與主鏈上的區塊互為「兄弟」區塊。這些區 塊是有效的,但不是主鏈的一部分。 保留這些分支的目的是如果在未來的某個時刻它們中的一個延長了並在難度值上超 過了主鏈,那麼後續的區塊就會引用它們。

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

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

因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈全貌。

解決的辦法是,每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就 是最長的或最大累計工作的鏈(greatest cumulative work chain)。節點通過累加鏈上的每個區塊的工作量,得到建立這個鏈所要付出的工作量證明的總量。只要所有的節點選擇最長累計工作的區塊鏈,整個比特幣網路最終會收斂到一致的狀態。分叉即在不同區塊鏈間發生的臨時差異,當更多的區塊添加到了某個分叉中,這個問題便會迎刃而解。

提示由於全球網路中的傳輸延遲,本節中描述的區塊鏈分叉自動會發生。

然而,倒三角形的區塊不會被丟棄。它被鏈接到星形鏈的父區塊,並形成備用鏈。雖然節點X認為自己已經正確選擇了獲勝鏈,但是它還會保存「丟失」鏈,使得「丟失」鏈如果可能最終「獲勝」,它還具有重新打包的所需的信息。

這是一個鏈的重新共識,因為這些節點被迫修改他們對塊鏈的立場,把自己納入更長的鏈。任何從事延伸星形-倒三角形的礦工現在都將停止這項工作,因為他們的候選人是「孤兒」,因為他們的父母「倒三角形」不再是最長的連鎖。

「倒三角形」內的交易重新插入到內存池中用來包含在下一個塊中,因為它們所在的塊不再位於主鏈中。

整個網路重新回到單一鏈狀態,星形-三角形-菱形,「菱形」成為鏈中的最後一個塊。所有礦工立即開始研究以「菱形」為父區塊的候選塊,以擴展這條星形-三角形-菱形鏈。

從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。

然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

2012年以來,比特幣挖礦發展出一個解決區塊頭基本結構限制的方案。在比特幣的早期,礦工可以通過遍歷隨機數 (Nonce)獲得符合要求的hash來挖出一個塊。

難度增長後,礦工經常在嘗試了40億個值後仍然沒有出塊。然而,這很容 易通過讀取塊的時間戳並計算經過的時間來解決。因為時間戳是區塊頭的一部分,它的變化可以讓礦工用不同的隨機值 再次遍歷。當挖礦硬體的速度達到了4GH/秒,這種方法變得越來越困難,因為隨機數的取值在一秒內就被用盡了。

當出現ASIC礦機並很快達到了TH/秒的hash速率後,挖礦軟體為了找到有效的塊, 需要更多的空間來儲存nonce值 。可以把時間戳延後一點,但將來如果把它移動得太遠,會導致區塊變為無效。

區塊頭需要信息來源的一個新的「變革」。解決方案是使用coinbase交易作為額外的隨機值來源,因為coinbase腳本可以儲存2-100位元組的數據,礦工們開始使用這個空間作為額外隨機值的來源,允許他們去探索一個大得多的區塊頭值范圍來找到有效的塊。這個coinbase交易包含在merkle樹中,這意味著任何coinbase腳本的變化將導致Merkle根的變化。

8個位元組的額外隨機數,加上4個位元組的「標准」隨機數,允許礦工每秒嘗試2^96(8後面跟28個零)種可能性而無需修改時間戳。如果未來礦工穿過了以上所有的可能性,他們還可以通過修改時間戳來解決。同樣,coinbase腳本中也有更多額外的空間可以為將來隨機數的擴展做准備。

比特幣的共識機制指的是,被礦工(或礦池)試圖使用自己的算力實行欺騙或破壞的難度很大,至少理論上是這樣。就像我們前面講的,比特幣的共識機制依賴於這樣一個前提,那就是絕大多數的礦工,出於自己利益最大化的考慮,都會 通過誠實地挖礦來維持整個比特幣系統。然而,當一個或者一群擁有了整個系統中大量算力的礦工出現之後,他們就可以通過攻擊比特幣的共識機制來達到破壞比特幣網路的安全性和可靠性的目的。

值得注意的是,共識攻擊只能影響整個區塊鏈未來的共識,或者說,最多能影響不久的過去幾個區塊的共識(最多影響過去10個塊)。而且隨著時間的推移,整個比特幣塊鏈被篡改的可能性越來越低。

理論上,一個區塊鏈分叉可以變得很長,但實際上,要想實現一個非常長的區塊鏈分叉需要的算力非常非常大,隨著整個比特幣區塊鏈逐漸增長,過去的區塊基本可以認為是無法被分叉篡改的。

同時,共識攻擊也不會影響用戶的私鑰以及加密演算法(ECDSA)。

共識攻擊也 不能從其他的錢包那裡偷到比特幣、不簽名地支付比特幣、重新分配比特幣、改變過去的交易或者改變比特幣持有紀錄。共識攻擊能夠造成的唯一影響是影響最近的區塊(最多10個)並且通過拒絕服務來影響未來區塊的生成。

共識攻擊的一個典型場景就是「51%攻擊」。想像這么一個場景,一群礦工控制了整個比特幣網路51%的算力,他們聯合起來打算攻擊整個比特幣系統。由於這群礦工可以生成絕大多數的塊,他們就可以通過故意製造塊鏈分叉來實現「雙重支 付」或者通過拒絕服務的方式來阻止特定的交易或者攻擊特定的錢包地址。

區塊鏈分叉/雙重支付攻擊指的是攻擊者通過 不承認最近的某個交易,並在這個交易之前重構新的塊,從而生成新的分叉,繼而實現雙重支付。有了充足算力的保證,一個攻擊者可以一次性篡改最近的6個或者更多的區塊,從而使得這些區塊包含的本應無法篡改的交易消失。

值得注意的是,雙重支付只能在攻擊者擁有的錢包所發生的交易上進行,因為只有錢包的擁有者才能生成一個合法的簽名用於雙重支付交易。攻擊者在自己的交易上進行雙重支付攻擊,如果可以通過使交易無效而實現對於不可逆轉的購買行為不予付款, 這種攻擊就是有利可圖的。

攻擊者Mallory在Carol的畫廊買了描繪偉大的中本聰的三聯組畫(The Great Fire),Mallory通過轉賬價值25萬美金的比特幣 與Carol進行交易。在等到一個而不是六個交易確認之後,Carol放心地將這幅組畫包好,交給了Mallory。這時,Mallory 的一個同夥,一個擁有大量算力的礦池的人Paul,在這筆交易寫進區塊鏈的時候,開始了51%攻擊。

首先,Paul利用自己礦池的算力重新計算包含這筆交易的塊,並且在新塊里將原來的交易替換成了另外一筆交易(比如直接轉給了Mallory 的另一個錢包而不是Carol的),從而實現了「雙重支付」。這筆「雙重支付」交易使用了跟原有交易一致的UTXO,但收款人被替換成了Mallory的錢包地址。

然後,Paul利用礦池在偽造的塊的基礎上,又計算出一個更新的塊,這樣,包含這 筆「雙重支付」交易的塊鏈比原有的塊鏈高出了一個塊。到此,高度更高的分叉區塊鏈取代了原有的區塊鏈,「雙重支付」交 易取代了原來給Carol的交易,Carol既沒有收到價值25萬美金的比特幣,原本擁有的三幅價值連城的畫也被Mallory白白 拿走了。

在整個過程中,Paul礦池裡的其他礦工可能自始至終都沒有覺察到這筆「雙重支付」交易有什麼異樣,因為挖礦程序都是自動在運行,並且不會時時監控每一個區塊中的每一筆交易。

為了避免這類攻擊,售賣大宗商品的商家應該在交易得到全網的6個確認之後再交付商品。或者,商家應該使用第三方 的多方簽名的賬戶進行交易,並且也要等到交易賬戶獲得全網多個確認之後再交付商品。一條交易的確認數越多,越難 被攻擊者通過51%攻擊篡改。

對於大宗商品的交易,即使在付款24小時之後再發貨,對買賣雙方來說使用比特幣支付也 是方便並且有效率的。而24小時之後,這筆交易的全網確認數將達到至少144個(能有效降低被51%攻擊的可能性)。

需要注意的是,51%攻擊並不是像它的命名里說的那樣,攻擊者需要至少51%的算力才能發起,實際上,即使其擁有不 到51%的系統算力,依然可以嘗試發起這種攻擊。之所以命名為51%攻擊,只是因為在攻擊者的算力達到51%這個閾值 的時候,其發起的攻擊嘗試幾乎肯定會成功。

本質上來看,共識攻擊,就像是系統中所有礦工的算力被分成了兩組,一 組為誠實算力,一組為攻擊者算力,兩組人都在爭先恐後地計算塊鏈上的新塊,只是攻擊者算力算出來的是精心構造 的、包含或者剔除了某些交易的塊。因此,攻擊者擁有的算力越少,在這場決逐中獲勝的可能性就越小。

從另一個角度 講,一個攻擊者擁有的算力越多,其故意創造的分叉塊鏈就可能越長,可能被篡改的最近的塊或者或者受其控制的未來 的塊就會越多。一些安全研究組織利用統計模型得出的結論是,算力達到全網的30%就足以發動51%攻擊了。全網算力的急劇增長已經使得比特幣系統不再可能被某一個礦工攻擊,因為一個礦工已經不可能占據全網哪怕的1%算 力。

待補充

待補充

Ⅱ 比特幣挖礦是一個什麼過程

簡單的說,大概每十分鍾發行一次。新比特幣在每個網路節點在解決了一定的數學計算(比如,創建新的區塊)後生成。這個生成過程被認為是難以重現的。解決問題後得到的回報是自動調節的,因此在比特幣網路的頭4年,將會產生總額為10,500,000比特幣的比特幣。這個數量每隔4年就自動減半,也就是說在第4至第8年會產生5,250,000比特幣,第8至12年則只有2,625,000比特幣,以此類推。到最後,總共產生的比特幣數量為21,000,000比特幣。
另外,伴隨著網路一同建立的還有一個系統。平均每隔10分鍾,該系統就嘗試去收集網路上產生的區塊裡面的新比特幣。創建新比特幣的難度系數是隨著參與嘗試產生新比特幣的人數而變化的。某個人「發現」一個區塊的可能性是他所用的計算資源和比特幣網路上所有計算資源的比值。

Ⅲ 什麼是比特幣挖礦

比特幣挖礦是一種獲得比特幣的方式,簡單來講就是全網礦工一起來做一道題目,誰先做出來,誰就會得到比特幣獎勵,「礦工」需要在區塊努力工作,就是消耗計算資源來處理交易,挖礦對於設備的配置要求相當高,提高設備配置,可以加強運算能力,也能更快的獲得比特幣。 比特幣是一種電子貨幣,由開源的P2P軟體產生,可以用來交易,也可以通過交易來獲利,比特幣挖礦運用的是哈希演算法,在比特幣系統裡面,需要進行大量哈希運算,計算的值需要符合規定,誰運算的快,誰能挖到的比特幣就越多。
拓展資料
比特幣挖礦,是一種利用電腦硬體計算出比特幣的位置並獲取的過程。 挖礦是在比特幣系統中進行記錄數據的一個激勵過程,在比特幣系統個人用戶通過利用CPU或者GPU進行哈希運算,當計算出特定的哈希值之後便擁有了打包區塊的權利。 而為了獎勵這個用戶進行打包區塊,系統就給予一定的比特幣作為報酬。因為這個過程很像現實生活中「挖礦」所以大多數人就把這個過程叫做挖礦。除了比特幣外,其他的電子虛擬貨幣也可以通過挖礦獎勵獲取,如以太坊、門羅幣等等
挖礦風險:
1,貨幣安全
比特幣的支取需要多達數百位的密鑰,而多數人會將這一長串的數字記錄於電腦上,但經常發生的如硬碟損壞等問題,會讓密鑰永久丟失,這也導致了比特幣的丟失。
2,系統風險
系統風險在比特幣這個裡面非常常見,最常見的當屬於分叉。分叉會導致幣價下跌,挖礦收益銳減。不過很多情況表明,分叉反而讓礦工收益,分叉出來的競爭幣也需要礦工的算力來完成鑄幣和交易的過程,為了爭取更多的礦工,競爭幣會提供更多的區塊獎勵及手續費來吸引礦工。風險反而成就了礦工。

Ⅳ 詳解比特幣挖礦原理

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

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

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

通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采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分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

Ⅳ 比特幣挖礦原理是什麼

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

Ⅵ 比特幣挖礦,到底如何挖- 解析虛擬貨幣挖礦流程和原理

網路上有許多種加密貨幣在流通說到底是什麼意思?像是比特幣(Bitcoin)、以太幣(Ether)、瑞波幣(Ripple)等等,但大家最常聽到的還是非比特幣莫屬,可以說是全球的「礦工」們都在想盡辦法獲得它,許多人不只是把它看作是單純的熱潮跟風,甚至有些人將它視為資產在投資,比特幣同時也是造成目前全球顯示卡大缺貨的主因,全世界有無數的礦工、礦場無時無刻不在運作,他們大量購買顯卡,為得就是要搶在其他競爭對手前奪得先機。

然而,到底比特幣挖礦在挖什麼?如果現在想要進場挖礦會不會太晚?又要准備什麼硬體設備才能開始挖礦呢?

身為目前最火紅數位貨幣之一的比特幣,由於獲取難度高,且物以稀為貴的條件下,導致比特幣的相對價值非常高。在數位貨幣市場上,比特幣被當成一種「股票」操作,它可以用來當作保值品投資,也可以將其轉換成各國貨幣並存入現行銀行 帳戶 ,許多網路商店甚至支持直接使用比特幣購買商品。想要獲得比特幣的話,最直接快速的方法就是金錢購買,目前一個比特幣的價值大約等同於30萬左右,這是近一年來,價格最低的一段時間,想要直接用金錢購買比特幣加入這股數位貨幣風潮的話,現在或許是最好的時機。

購買比特幣的方法其實很簡單,首先需要先在網路上建立一個可以儲存比特幣的電子錢包,關於電子錢包的種類網路上十分多樣,本文我們將以「幣托」(BitoEX)為例說明。進入幣托首頁以後,直接點擊畫面中央的「免費申請」並輸入賬號和密碼建立電子錢包,完成信箱帳號認證以後你就會獲得一個專屬於你的電子錢包,登入後即可進入該電子錢包並瀏覽目前的余額,因為是剛申請的緣故,因此賬戶余額為零,這時候可以直接選擇「購買比特幣」功能開始交易。

不過此頁面中最重要的是信息其實是位於右上方的「錢包地址」,這不僅是在交易時會使用到,後續挖礦時也會使用這個錢包地址作為比特幣的儲存目標。

不過,由於比特幣單價價格昂貴,動輒二三十萬以上,如果不想要直接用金錢購買比特幣的話,另一個方法就是用挖礦的方式獲得了。

1.進入幣托網頁以後,點擊畫面中央的「免費申請」開始建立個人電子錢包。

2.輸入用來登入錢包的電子信箱以及密碼,建議使用強度高的各種符號或數字字母作為密碼組合。

3.完成步驟以後即可進入個人的電子錢包頁面,這里可以隨時關注自己錢包內的金額數量。

比特幣的發行有它自己的時間以及數量,大約每十分鍾會由代碼執行新比特幣的發行,並且授予給參與比特幣交易的某(群)人,因此,獲得新發行的比特幣就好比是獲得剛出土的金礦,所以才會將這些獲得比特幣的人比喻為礦工。而礦工們「挖礦」的動作在英文中稱為「mining」,這是一種比特幣使用者可以考慮、但是只有專業挖礦者才「有可能」獲取比特幣的方法。

想要開始挖礦的話,在開始之前有一些事前准備要做,包含硬體投入成本以及運作成本。

前者是指硬體的購入、安裝、電費、折舊、場地以及散熱等等;

而後者則是維持這些硬體持續運作,所需付出的成本。

兩者綜合以後,可以發現其實挖礦所需的成本非常龐大,這也就造成部分擁有大量資金成立挖礦專用硬體設備的以「出租」的方式來回收成本,這種挖礦模式被包裝成一種「商品」並在公開的網路市場上進行買賣,當挖到比特幣時,會依每位承租人的付出比例來分礦,這樣的挖礦模式也就是所謂的「雲端挖礦」。

開采比特幣的做法主要有三種,除了雲端挖礦外,還有「獨立挖礦」以及「合力挖礦」,不過由於目前的挖礦難度不斷提升,且有越來越多競爭者擠入,時至今日想要單靠自己的力量獨立挖到礦的可能已經不大,雖然一旦成功挖礦便可獨自獲得全部利益,但一般比較可行的做法是採用後者「合力挖礦」,也就是團隊挖礦的概念,挖到礦時全團依照每個人付出的比例來分礦。

由於挖礦難度與日俱增,個人想要藉由顯卡挖礦獲得比特幣難如登天。

擁有大量資本的礦工會租挖礦機,最後甚至會把挖礦機承租給其他人,藉此獲利。

雲端挖礦逐漸被塑造成一種金融商品,以月租或年租的方式收取承租費,挖到礦時再按比例分給承租人。

礦池 :早期比特幣還不興盛的時候,大部分人都用自己的電腦來挖礦,最早當然是用盡CPU的能力來運算,接著有人發現用顯示卡的GPU Stream Processors來計算會快更多,可是當大家紛紛投入挖礦以後,出現了很多為挖礦優化的設備,一般個人電腦根本拼不過,因此需要加入礦池(Mining Pool)來挖礦,由伺服器集合所有使用者的運算力量來挖,再由一定比例回饋使用者(礦工),才不會發生挖了老半天卻拼不過專業挖礦機,花了電費卻什麼都得不到的情形。

礦機 :由於顯卡雖然挖礦速度較快,但是顯示晶片原本並不是專門用於挖礦,因此用顯卡挖礦不僅很耗電而且發熱量又高,如果是3、4張顯卡所組成的挖礦電腦,更是耗電,最後計算起來很可能挖比特幣的收益都還不夠付電費呢!因此從2013年開始,挖比特幣的重心逐漸轉移到專業礦機上,這種礦機區分為兩大類型:

挖礦的過程並不復雜,只需要下載「挖礦程序」其實就能開始挖礦。網路上的挖礦軟體百百款,這里我們將以NiceHash Miner 這款軟體舉例說明。

首先,根據手上顯卡廠商下載對應的NiceHash Miner 版本並開啟軟體,在正式開始挖礦以前,有幾個步驟要先設定。

電子錢包頁面中最重要的信息就是錢包地址,這除了是比特幣買賣家交易時須使用的信息以外,同時也是挖礦時比特幣儲存的目標位址,點擊幣托頁面中的錢包地址後,就會獲得一串「未命名的錢包地址」,請復制這串數位碼並好好保存。

接下來在挖礦程序中點擊「錢包」(Wallet)選項,將剛剛復制的數位碼貼上後即可完成儲存目標設定。在左下方的「硬體信息」(Hardware Details)選項中,系統預設會找到你電腦使用的顯卡型號,也可以在這里開啟處理器加入挖礦的行列,可根據需求和喜好設定。

在「錢包」的選項中,貼上個人電子錢包位置,一旦挖到比特幣時便會儲存在該錢包中。

一切都准備就緒後,就可以按下中間的「開始挖礦」(Start),你的電腦會自動開啟命令執行視窗進行挖礦,不同的挖礦軟體無論每次挖礦的動作成功與否,都會釋出不同的通知指令,以NiceHash 為例,成功挖礦時視窗上將會出現的綠色的指令通知。但這時候軟體挖到的比特幣數額其實非常小,需要長時間連續不間斷的挖礦才能挖到完整一個比特幣。

每個軟體在挖礦時,顯示的通知不盡相同,NiceHash是以綠色文字提示挖到比特幣的通知信息。

根據挖礦的規模,每次成功挖礦時獲得的比特幣數額不同,需要長時間不間斷開挖才能獲得完整一個比特幣。

無論你是使用金錢直接購買,還是使用各種不同的挖礦模式,在獲得比特幣以後該如何使用它?首先你可以把它當成是一種投資品保存,由於全世界幾乎無時無刻都有人在進行比特幣交易,因此,它的幣值也在不斷波動,你可以在它未來價格漲到最高點時脫手賣出,以去年一整年最高的平均價格50多萬來看,現在一個比特幣大約是25萬,有可能可以獲得大於成本兩倍的獲利。

如果沒有打算將比特幣當作保值品來看的話,你可以到幣托或是MaiCoin 等網站里,將獲得的比特幣轉換成人民幣,換取現金到現行的銀行帳戶中供其他使用,如果不想換成人民幣的話,也可以將比特幣轉換成其他虛擬貨幣來持有;此外,目前網路上還有許多網站或服務是支持比特幣付款的。

其他還有很多網路零售商也支持買家使用比特幣在平台上購買商品,國外電子產品零售業龍頭之一的newegg 就是其中之一,它們和Bitpay 電子錢包合作,讓消費者可以在購買商品時,選擇使用比特幣進行支付。其他還有像是NASDAQ 的線上百貨零售商Overstock、紐約地產公司邦德紐約或是利用信用卡定世界各國旅館獲得比特幣現金回饋的PointHound 等等,種類非常多。

比特幣過去一年最高曾有突破50萬的可觀價值,將其視為一保值品也是不錯的選擇。

由於比特幣在全世界造成的熱潮至今還未間斷,無論是用團隊挖礦還是雲端挖礦模式,仍有許多比特幣使用者正在挖礦。在這樣的熱潮下,也間接導致了不少問題。

顯卡嚴重缺貨

首先最直接的問題就是顯卡,由於顯卡是礦工們最主要的挖礦工具,它們需要大量顯卡加快挖礦的速度,藉此搶在他人以前獲得比特幣,也導致目前無論是NVIDIA 還是AMD 顯卡在全球都出現缺貨的情形,同時也造成顯卡價格上漲,尤其是高階的顯卡問題更嚴重,常常會需要以比廠商建議售價高出許多的價格購買,也讓想要單買顯卡幫電腦升級的民眾購買困難。

挖礦的過程是將顯卡以及電腦的效能發揮到最極致,如果能成功獲得比特幣那也就罷了,更慘的就是不僅沒挖到礦,甚至還多花冤枉錢。挖礦的過程不僅需要隨時保持電腦主機的溫度,甚至主機還需要放在通風的室內運作來避免主機過熱,長時間連續挖礦下,對於顯卡的產品壽命也有害。

此外,挖礦過程中還必須考量到電費的問題,根據「比特幣能源消耗指數」報告的統計,比特幣在過去一年內挖礦的電力總消耗已累積達29.51兆瓦小時,約佔全球總電力消耗的0.13%,聽起來佔比不大,但該數字已經超過全球近160個國家一年的電力消耗,可見挖礦的耗電量有多大。雖然說比特幣確實有它的吸引力存在,但在通往致富的挖礦路上,礦工們仍要考慮許多成本付出的問題以及帶來的影響。

在零售商的網頁上,可以看到無論是NVIDIA還是AMD的顯卡,高階版本幾乎都為缺貨狀態。

挖礦的過程中,會大量耗費處理器和顯卡的性能,導致其溫度升高,降低其產品壽命。

根據統計,比特幣過去一年的耗電量已超過圖中黃色國家和地區的耗電量。

# 科技 日報#

Ⅶ 比特幣挖礦的原理是什麼

比特幣挖礦是利用計算機硬體為比特幣網路做數學計算進行交易確認和提高安全性的過程。

Ⅷ 什麼是比特幣網路

比特幣採用了基於互聯網的 P2P (peer-to-peer)網路架構。 P2P 是指位於同一網路中的每台計算機都彼此對等,各個節點共同提供網路服務,不存在「特殊」節點。每個網路節點以「扁平(flat)」的拓撲結構相互連通。在 P2P 網路中不存在任何服務端(server)、中央化的服務、以及層級結構。 P2P 網路的節點之間交互運作、協同處理:每個節點在對外提供服務的同時也使用網路中其他節點所提供的服務。P2P 網路也因此具有可靠性、去中心化,以及開放性。
比特幣所採用的 P2P 網路結構不僅僅是選擇拓撲結構這樣簡單。比特幣被設計為一種點對點的數字現金系統,它的網路架構即是這種核心特性的反映,也是該特性的基石。去中心化控制是設計時的核心原則,它只能通過維持一種扁平化、去中心化的 P2P 共識網路來實現。
比特幣 P2P 網路中的各個節點相互對等,但是根據所提供的功能不同,各個節點的分工也不盡相同。每個比特幣節點都是路由、區塊鏈資料庫、挖礦、錢包服務的功能集合。一個比特幣網路全節點包括四個功能:錢包、礦工、完整區塊鏈、網路路由節點。
一些節點保有一份完整的、最新的區塊鏈拷貝,這樣的節點被稱為「全節點」。全節點能夠獨立自主地校驗所有交易,而不需藉由任何外部參照。另外還有一些節點只保留了區塊鏈的一部分,他們通過一種名為「簡單支付驗證(SPV)」的方式來完成交易驗證。這樣的節點被稱為「SPV節點」,又稱「輕量級節點」。
挖礦節點通過運行在特殊設備硬體設備上的工作量證明(POW)演算法,以相互競爭的方式創建新的區塊。一些挖礦節點同時也是全節點,保有區塊鏈的完整拷貝;還有一些參與礦池挖礦的節點是輕量級節點,它們必須依賴礦池伺服器維護的全節點進行工作。
用戶錢包也可以作為全節點的一部分,這在桌面比特幣客戶端比較常見。當前,越來越多用戶錢包都是SPV節點,尤其是運行於諸如智能手機等資源受限設備上的比特幣錢包應用,而這正變得越來越普遍。

Ⅸ 比特幣挖礦原理是怎樣的

比特幣挖礦利用計算機硬體比特幣網路做數計算進行交易確認提高安全性程作服務獎勵礦工所確認交易包含手續費及新創建比特幣。比特幣還有炒作模式。於比特幣相似的還有流量礦石,流量礦石也有交易炒作的方式,但是流量礦石的挖礦原理和比特幣不同,流量礦石主要是收集礦工的閑散帶寬,並給以礦石作為獎勵。

熱點內容
千米紅包能挖礦嗎 發布:2024-04-20 14:18:27 瀏覽:240
中國比特幣將上線狗狗幣 發布:2024-04-20 14:13:30 瀏覽:740
普通人元宇宙怎麼賺錢 發布:2024-04-20 13:52:00 瀏覽:153
雲幣網區塊鏈提現地址 發布:2024-04-20 13:46:44 瀏覽:173
如何向btc地址充值 發布:2024-04-20 13:45:13 瀏覽:620
比特幣買賣案例 發布:2024-04-20 13:45:02 瀏覽:846
幣圈的重大利空 發布:2024-04-20 13:31:06 瀏覽:284
eth在2021年中能能跌到多少美元 發布:2024-04-20 13:27:24 瀏覽:883
eth挖礦最小單位 發布:2024-04-20 12:39:52 瀏覽:227
btc原料 發布:2024-04-20 12:17:13 瀏覽:181