當前位置:首頁 » 挖礦知識 » 挖礦為什麼難度增加

挖礦為什麼難度增加

發布時間: 2023-01-22 16:12:12

比特幣初期「挖礦」的用電量不大,為何後期的用電量就增加了呢

因為比特幣的挖礦難度在越來越大。

我們可以這樣理解,最初比特幣的挖礦難度非常小,一個區塊就可以獲得幾萬個比特幣,但隨著比特幣的挖掘量越來越大,這就意味著比特幣的可供挖掘量越來越少,所以挖礦的難度越來越大,耗電量自然就增加了。

我們首先理解一下比特幣的挖礦知識。

因為比特幣的總量是恆定的,這就意味著比特幣的挖掘只會變得越來越大,並且難度越來越高。在比特幣發行初期,用戶的普通電腦就可以挖掘比特幣,但隨著比特幣的挖掘難度越來越高,現在只有專業的礦機才能去精準挖掘比特幣。從某種程度上來說,以後比特幣的挖掘難度將會呈指數級的趨勢上升。

最後,比特幣只不過是一種虛擬貨幣,不建議我們普通投資者參與到比特幣市場當中,畢竟比特幣行情的波動太大了。

⑵ 比特幣挖礦難度和算力有什麼關系

2009年1月3日,中本聰(Satoshi Nakamoto)在位於芬蘭赫爾辛基的一個小型伺服器上,中本聰挖出了 比特幣 的第一個區塊,並獲得了50個比特幣的獎勵。這標志著加密數字貨幣時代的來臨。

創世區塊是區塊鏈技術中的第一個區塊,是區塊鏈中非常獨特的一環,因為它是第一個區塊——整個數字基礎設施中唯一沒有與前一個區塊連接的區塊。

比特幣最早的挖礦難度只有1個哈希值,可以用最弱的消費者級別的CPU來開采比特幣,而且有很大的機會獲得比特幣。

在隨後的幾年裡,隨著交易所建立,比特幣持有者之間的交易活動變得更有組織性。挖礦的難度顯著增加,它需要越來越強大的處理器,到後來升級到圖形處理器。2013年,專門的ASIC挖礦硬體開始出現,性能甚至遠遠超過最強大的圖形處理器。

到2013年底,比特幣挖礦難度首次達到了1個Giga hash哈希值。這是創世紀塊挖礦難度的1000*1000*1000倍。之後,比特幣的挖礦難度又增加了數千倍。

挖礦難度是為了保證讓比特幣新區塊的產生速度在平均每10分鍾產生一個而設置的動態參數。

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

比特幣挖礦形同猜數字謎,礦工要找出一個隨機數(Nonce)參與哈希運算 1Hash(Block+Nonce),使得區塊哈希值符合難度要求。算力指計算機每秒可執行哈希運算的次數,也稱為哈希率(hashrate)。一個礦機每秒鍾能做多少次hash碰撞,就是其「算力」的代表,單位寫成 hash/s或者H/s。

算力單位:

1 KH/s = 1000 H/s

1 MH/s = 1000 KH/s

1 GH/s = 1000 MH/s

1 TH/s = 1000 GH/s

1 PH/s = 1000 TH/s

1 EH/s = 1000 PH/s

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

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

根據公式:

難度 * 2^32 / 全網算力 = 出塊時間

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

難度 = 600 * 24.42 * 10^18 / 2^32

= 3.46e+12

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

根據公式:

難度 * 2^32 / 算力 = 出塊時間

有:

3.46 * 10^12 * 2^32 / 14 * 10^12

= 1.06e+9 s

結果大概是12270天。

原本中本聰設計的是一個公平的完全去中心化的一個數字貨幣系統,每個人都可以使用個人電腦進行挖礦。然而,有利可圖時大量新算力不斷加入,礦工競爭激烈,使得單個礦工的挖礦成功率幾乎為零。

2011 年起礦池出現,大量礦工紛紛加入礦池,以穩定收入,攤薄成本。大量算力融入,使得比特幣挖礦難度越來越大。數字貨幣挖礦業形同軍事競備,挖礦設備不斷更新迭代,不再遵循摩爾定律。

⑶ 加密貨幣的挖礦難度和高度難度有什麼區別

這還是有很大區別的,因為加密貨幣的挖礦難度加大了,說明挖礦的成效就沒有過往那樣過得快,進而會拉長挖礦的回本周期。

⑷ 挖礦掙錢是什麼原理

挖礦就是那個維特幣唄,比特幣礦場,然後呢,他有特定的程序,需要大量的結算。需要耗電然後呢挖礦就是那個維特幣唄,比特幣礦場,然後呢,他有特定的程序,需要大量的結算,需要耗電,然後呢,每天他一個機器能夠生成幾個比特幣

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

比特幣挖礦難度(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 分鍾調整一次),有明顯的滯後性。你認為是哪種調整方式更合理呢?為什麼呢?歡迎在留言區分享你的觀點。

⑹ 比特幣挖礦的難度和算力

難度是對挖礦困難程度的度量,即指:計算符合給定目標的一個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天

⑺ 科普:比特幣是什麼,「挖礦」是如何進行的為何耗電量越來越大

2021年中旬,劍橋大學的一項研究數據表明,因為比特幣挖礦導致的耗電數已高達134.89太瓦時,如果把比特幣挖礦比作一個國家,那麼它在全球所有國家中的耗電排名高達第27位,相當於馬來西亞全國一年的耗電總量。

比特幣挖礦到底是怎麼一回事?為什麼它需要消耗這么多電力呢?

我們知道要獲取比特幣就需要「挖礦」,在現實生活中,挖礦要用到挖掘機,鑽井機等大型設備;而在虛擬世界裡,挖礦就是指使用電腦計算獲取比特幣。按理來說,電腦計算也不需要消耗這么多的電吧,為什麼挖比特幣就這么費電呢?

確實,在比特幣剛剛被創造出來的時候,它的創始人中本聰僅僅使用了一台家庭電腦就開發出了50枚比特幣,所消耗的電力自然不多。

但是,隨著越來越多的人湧入比特幣市場,其開采難度卻越來越大了。這個和比特幣的發行模式有關。那麼,比特幣是如何發行的呢?

首先,比特幣礦場在誕生之初,它的儲量就被限定死了,總共只有2100萬枚,分布於各個礦區裡面。最開始,礦工們每發現一個礦區,就會被獎勵50枚比特幣。但是每產生21萬個「礦區」,獎勵的比特幣數量就會減半一次。

簡單來說就是,當初我們挖一個比特幣只要用一台電腦挖上一天就可以了,但是後來慢慢變成兩台電腦兩天,四台電腦四天。挖礦的難度成倍增加,需要消耗的電力自然也是成倍增加的。這個過程將一直持續到2140年,2100萬枚比特幣才會全部發行完成。如今自比特幣誕生才僅僅過去了13年時間,就耗費了這么多電力,可想而知,未來的比特幣市場將會是一個怎樣的無底洞。

正是因為這樣的機制,所以作為一個礦場主,要跑贏其他人,唯一能做的就是購進更多、運算速度更快的礦機,這樣才能搶在別人前面挖到更多的比特幣。

而作為初代礦機的家庭電腦顯然已經無法滿足挖礦的需求了,因而礦工們的生產工具也是不斷革新,從一開始的CPU計算、進化成為GPU運算,再到產生專門的礦機運算。礦機搭載有專門的「挖礦晶元」,通常以燃燒顯卡和晶元的方式運行。

這個過程中不僅有硬碟運作帶來的電力消耗,在運作過程中產生的熱能,也會導致整個礦場宕機(死機)。因此,這其中還包括電源風扇和機箱風扇消耗的電能。目前,僅僅是單台礦機的運作耗電量都在35度左右,一個礦場一天的電力消耗甚至可以滿足普通人一輩子的用電需求。

那麼,礦工們「辛辛苦苦」,耗費無數電力資源挖掘得來的比特幣,究竟有怎樣的價值呢?我們不妨看看比特幣誕生的背景,2008年次貸危機全面爆發,美聯儲不得不啟用寬松量化政策來應對接下來的危機。面對美元的不斷加印,貶值成為了它的定數。

同年底,一位「屠龍少年」——中本聰,發布了一則白皮書,名為《比特幣:一種點對點的電子現金系統》,明確闡釋了比特幣的概念,他試圖用電子貨幣來挑戰美元的霸權。次年1月,在他的一手操辦下,比特幣的「創世區塊」也由此誕生。

由於比特幣在當時,知道的人很少,只在程序員群體中小范圍流傳,所以並不值多少錢。其中還流傳著這么一個經典故事,某程序員通過挖礦,獲得了1000枚比特幣。於是,他用這些比特幣買了兩塊披薩。

但是後來,由於比特幣自帶的反叛精神,它很快就在Geek圈(即,技術發燒友)獲得了認可。在他們的擁護之下,比特幣在整個世界范圍內逐漸站穩了腳跟。甚至在暗網世界裡,人們把它當作是虛擬世界裡的「美元」,用來進行各種黑色產業的交易行為。

隨著知名度和使用范圍越來越廣,價格也逐漸魔幻起來。一路突破了3000美元的大關。時間來到2020年,美聯儲再次「放水」,光是這一年發行的貨幣量就佔到了美元總發行量的21%,比特幣也迎來了它「幣生」中的高光時刻,一舉突破單價68000美元的大關。

但是,與中本聰的初始理念相悖,隨著比特幣擁躉數量的增加,它已經逐漸脫離了貨幣這個概念,甚至從勞動價值論來講,比特幣的價值只能被認定為「0」。首先,在比特幣誕生之初,人類 社會 並不需要這樣一個東西,它不是剛需。第二,礦工們掘金的過程,也無法通過勞動力衡量。總之,比特幣誕生的13年來,它一直是游離於我們的商品流通體系之外。

一句話就是,比特幣沒什麼實際價值,現在的高價不過是炒作出來的泡沫而已。

如果非要說比特幣有價值,只可能是因為它擁有去中心化、匿名性、難以丟失等屬性,致使它具備了人造數字資產的價值。一旦它回歸初始屬性——貨幣,面臨的必將是被主流貨幣絞殺。所以,比特幣最大的價值恐怕就是挖礦時浪費的電費和礦機的賬單了吧!

去年中旬,央行發布公告,約談了一眾主流金融機構,重申了我國打擊比特幣在內的虛擬貨幣炒作行為。我國為什麼一定要打擊比特幣炒作呢?

首先是消耗電力資源。 我們在前面說過,比特幣市場的耗電量只會越來越多,而且是成倍增加,如果讓它在國內泛濫,必然會壓榨其他產業的電力,影響國內經濟的發展。

實際上,比特幣早已入侵我國,並且造成了極大的資源浪費。

據報道,在2021年5月以前,全球近7成的比特幣礦場都在中國。礦場主們會在豐水期前往雲貴川一帶的水電站購買廉價電力。枯水期則會前往大西北,諸如內蒙古、新疆等煤炭相對便宜的地方購買火電。有人預測到2024年,中國比特幣挖礦每年會消耗3.5個三峽大壩的年發電量。好在,經過我國的全力打壓後,目前比特幣礦區已經逐漸退出國內。

其次,比特幣應用場景一般都是非法資金運作,它的匿名性成為了洗錢、毒品交易、詐騙所得等黑色產業天然的保護傘。 我國嚴厲打擊掃黑除惡的風氣,首先就得打擊其中利益往來的工具,也就是斬斷比特幣的傳播鏈條。

其三,也是最重要的一點,就是要捍衛我國貨幣主權。 現在世界范圍內,經濟局勢動盪不安,比特幣會增加國家甚至世界的金融風險。甚至這些小小的比特幣,足以擁有讓一個國家破產的能力。

比如,2021年9月,中美洲小國薩爾瓦多,因為欽定比特幣為法定貨幣,在世界范圍內,狠狠刷了一波存在感。可是今年以來,比特幣的大熊市,卻讓薩爾瓦多虧損了上千萬美元,

甚至有人說,它極有可能成為第一個因為「炒幣」而破產的國家。

由此可見,無論是對於一個國家還是一個普通人來說,「炒幣」的行為和賭博的性質沒什麼兩樣,它會腐蝕一個人的精神,消耗掉一個民族勤勞的美德。所以,我國堅決打擊比特幣絕對是明智之舉。

⑻ 詳解比特幣挖礦原理

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

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

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

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

⑼ 挖礦掙錢是什麼原理

比特幣系統由用戶(用戶通過密鑰控制錢包)、交易(交易都會被廣播到整個比特幣網路)和礦工(通過競爭計算生成在每個節點達成共識的區塊鏈,區塊鏈是一個分布式的公共權威賬簿,包含了比特幣網路發生的所有的交易)組成。

比特幣礦工通過解決具有一定工作量的工作量證明機制問題,來管理比特幣網路—確認交易並且防止雙重支付。由於散列運算是不可逆的,查找到匹配要求的隨機調整數非常困難,需要一個可以預計總次數的不斷試錯過程。這時,工作量證明機制就發揮作用了。

當一個節點找到了匹配要求的解,那麼它就可以向全網廣播自己的結果。其他節點就可以接收這個新解出來的數據塊,並檢驗其是否匹配規則。如果其他節點通過計算散列值發現確實滿足要求(比特幣要求的運算目標),那麼該數據塊有效,其他的節點就會接受該數據塊。

中本聰把通過消耗CPU的電力和時間來產生比特幣,比喻成金礦消耗資源將黃金注入經濟。比特幣的挖礦與節點軟體主要是透過點對點網路、數字簽名、互動式證明系統來進行發起零知識證明與驗證交易。

每一個網路節點向網路進行廣播交易,這些廣播出來的交易在經過礦工(在網路上的計算機)驗證後,礦工可使用自己的工作證明結果來表達確認,確認後的交易會被打包到數據塊中,數據塊會串起來形成連續的數據塊鏈。

每一個比特幣的節點都會收集所有尚未確認的交易,並將其歸集到一個數據塊中,礦工節點會附加一個隨機調整數,並計算前一個數據塊的SHA256散列運算值。挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的散列值低於某個特定的目標。

挖礦難度

為了使得資料塊產生的速度維持在大約每十分鍾一個,產生新資料塊的難度會定期調整。

如果資料塊產生的速度加快了,那麼就提高挖礦難度;如果資料塊產生速度變慢了,那麼就降低難度。比特幣系統在每隔2016個資料塊被產出後(約兩周的時間),會以最近這段時間的資料塊產生速度,自動重新計算接下來的2016個資料塊之挖礦難度。

而難度基本上就決定了一個有效的資料塊標頭(英語:Block Header)的SHA-256散列值應小於一定值,也就是說該散列值必須要恰好落在目標區間之內才算有效,當目標區間越小就意味著命中幾率越低。換句話說就是挖礦的難度越高。

由於ASIC計算設備的爆炸式加入,目前挖礦難度呈現幾何級數的上升,目前年均難度增長約為3%,讓普通個人挖礦者的挖礦工作變得異常困難。

以上內容參考網路-比特幣挖礦機

熱點內容
礦池實際地址 發布:2025-05-16 14:53:45 瀏覽:523
去光大會展中心坐幾號線 發布:2025-05-16 14:53:44 瀏覽:325
幣圈做合約哪個平台好 發布:2025-05-16 14:49:33 瀏覽:367
下載區塊鏈app的錢包 發布:2025-05-16 14:41:01 瀏覽:875
顯卡除挖以太坊還能挖什麼用 發布:2025-05-16 14:38:55 瀏覽:969
區塊鏈幣圈一級 發布:2025-05-16 14:23:51 瀏覽:299
比特幣一開始怎麼買 發布:2025-05-16 14:12:48 瀏覽:267
數字貨幣哈希查詢 發布:2025-05-16 13:55:07 瀏覽:799
比特幣價合約格今日行情 發布:2025-05-16 13:53:36 瀏覽:834
doge小狗視頻 發布:2025-05-16 13:53:33 瀏覽:147