當前位置:首頁 » 比特幣問答 » 比特幣難度調整方法

比特幣難度調整方法

發布時間: 2023-03-03 12:40:33

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

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

② 比特幣多久調整一次難度

每14天左右。比特幣大約每10分鍾挖出一個塊,每挖出2016個塊調整一次,正常情況下,每14天左右會調整一次難度,挖礦的難度是根據之前一個周期的比特幣全網算力來調整,所以難度和全網算力是相關的,時間上有一定程度的滯後。

③ 比特幣系統是由誰在出題並調整難度第一個比特幣是如何計算出的

BTC是一種由開源系統的P2P手機軟體產生的虛擬貨幣,是一種網路虛擬貨幣。比特犬~幣不依靠特殊貸幣組織發售,它通過特殊演算法的很多測算造成,虛擬幣經濟發展應用全部P2P網路中許多連接點構成的分布式系統來確認並記錄每一個交易行為。實際上BTC是近幾年才進到投資者的視線,可以這么說BTC剛出現的時候,BTC基本上一文不值,1美金均值可以買到1309.03個BTC。在2011年,BTC與美元的兌換率,竟然從0.5美金一路漲到了13美金,上漲幅度達到2600%!

BTC是基於區塊鏈技術性衍生出來的,而區塊鏈的組成就是普通的編碼,我們可以把它理解為一個數據文件,一個不可以隨意毀壞、不能偽造、可以從網路查詢、可擺脫互聯網單獨存有、又可通過網路驗證系統其詳細水平、真假,且又可以隨意分拆的文件夾。

④ 比特幣分叉往事補遺

互聯網是有記憶的。

最近比特幣屢創新高,華爾街機構紛紛入場囤幣,連馬斯克都忍不住公開喊單,得到了主流媒體和金融機構的認可,大家都對比特幣系統的安全性沒有任何質疑。


不過,很多人可能想像不到,就在三年前,比特幣還面臨過誕生以來最大的一次危機——差點被 BCH 集團奪權篡位,甚至連「比特幣」這個名字都差點不保。


比特幣分叉都是上一個牛市的陳年舊事了,本來不想多說,但是最近又有一些無聊的人,抹黑中傷幣信,我們不說話,讓一些不明真相的朋友還真以為幣信十惡不赦,成了反派的代名詞,還是簡單說一說當年的幣信為保護比特幣網路做的一些事情吧。


這些事情都已經過去好多年,這些年來一直沒對外提,也不求什麼名利,只求大家知曉真相,去偽存真,同時也在茶餘飯後,多一些談資。


BCH 分叉黨為什麼仇視幣信?


很多人覺得當年「比特幣分叉」這件事並沒什麼大不了的,畢竟這種現象現在在加密數字貨幣社區很常見,可能一個程序員用不了幾天就能成功將一個幣種分叉。


但是在當年,分叉是一件非常嚴重的事情,牽扯到方方面面的人和事,牽扯到諸多信仰和利益,簡直和「佛道之爭」不遑多讓,簡直已經達到你死我活,兵戎相見的地步。


這並不誇張說辭,而是事實。


現實中很多關系非常好的朋友,合作夥伴,因為比特幣分叉這件事而反目成仇,老死不相往來。


很多人無法理解,為什麼 BCH 分叉集團對比特幣支持者、對幣信恨之入骨?天天懟天懟地各種造謠?而且有時候為了讓自己的謠言看上去邏輯完備,往往不惜花大量時間去搜集各種資料,然後移花接木,張冠李戴,讓眾多不明群眾看了覺得「資料詳實」,大呼過癮。


原因就在於,幣信斷了 BCH 分叉集團的財路。


正所謂「斷人財路,如殺人父母」,幣信在瓦解 BCH 集團分叉s行動的過程中,做了許多工作,甚至在關鍵時期守護了比特幣兩周時間,成功瓦解了BCH(之前叫 BCC ) 篡權奪位的陰謀。


不得不說,BCH 集團真的是知行合一,他們也有信仰,他們真的相信 BCH 肯定會成功,能夠打敗比特幣,所以他們把手頭的比特幣基本上都換成了 BCH ,要是被他們篡權成功,其回報之豐厚絕對難以想像。


結果這一切都被幣信在關鍵時刻給毀了,你說他們恨不恨?


幣信和比特大陸的恩怨


有關比特幣分叉的文章有很多,我這里就不再多說,感興趣的朋友看一下虎撲的文章《比特幣分叉往事》或者搜索其他文章了解。


這里主要說說在分叉大戰整個過程中,幣信扮演了一個什麼樣的角色,因為這個事情遭受了怎樣的損失。


可能很多朋友在 2018 年的時候,看到過比特大陸因專利的事情狀告幣信礦業公司的新聞,其中的被告還有深圳比特微(神馬礦機)和新特能源股份有限公司(礦場方)。


當時很多人看到這個新聞其實挺震驚的,因為幣信星空和比特大陸吳忌寒兩人的關系其實一向都非常好,私底下經常一起約飯。


他們怎麼突然就對簿公堂了?到底發生了什麼事情?


在那個官司中,涉及到的專利叫做串聯供電技術。


說起串聯供電技術,就不得不提到一個技術宅男——瓦西里。


瓦西里早年是俄羅斯的 Bitfury 公司(2013 年就已經開始做比特幣礦機公司)的工程師。從 Bitfury 出來之後,2014 年,瓦西里被一個名叫 Yuri 的俄羅斯人忽悠到了中國,因為 Yuri 跟他說他聯繫到了中國的烤貓,能夠拿到他們的晶元做礦機,可以發大財。


那個時候,烤貓公司剛剛宣布,他們不再自己做礦機,而是直接轉型成為晶元提供商,歡迎大家采購晶元。

Yuri 是個典型的商人,由於當時烤貓最新晶元礦機方案不成熟,在嘗試幾次做礦機方案不成功之後,他轉而向烤貓兜售他的「串聯供電」技術。


這項技術早就存在,但是瓦西里受其啟發,第一次成果將其用在礦機主板上。


有了這項技術,礦機可以不用昂貴的電源控制晶元,直接對挖礦晶元供電,這樣不但可以節省大量成本,還可以不受電源晶元貨源的制約。(當時比特大陸將市場上的電源晶元一掃而空,不但沒貨還抬升了價格)


這項技術說起來簡單,實現也簡單,但研發卻非常困難,因為沒有電源晶元控制,電流無法穩定輸出,很容易造成電流均衡而燒毀晶元。


烤貓對這項技術非常感興趣,於是和 Yuri 談了很多次,但是 Yuri 的條件太苛刻,後來烤貓得知這項技術的實際擁有者並不是 Yuri 而是瓦西里,於是直接找到瓦西里,購買了他的技術,並且還將瓦西里招到了公司當硬體開發工程師。


後來,楊作興從 RockMiner 離開,加入了烤貓礦機( ASICMiner )研發團隊,和瓦西里成為同事,一起研發礦機和晶元。


2015 年,烤貓突然人間蒸發,烤貓公司也原地解散,所有技術封存。後來道楊作興在比特大陸兼職了一段時間,順便將串聯電源技術帶到了比特大陸。


到了 2016 年 ,楊作興有了創業的想法,首先是找吳忌寒聊,得到了吳忌寒的單方面的支持,然後吳讓他去找詹聊一下,卻遭到了詹克團的當面否決,甚至詹還當面將楊作興的商業計劃書直接用碎紙機碎成碎片。


於是,楊作興創辦了神馬礦機,從此和比特大陸打擂台。


自然,神馬礦機也順理成章地用上了串聯電源技術。


值得說一下的是,楊作興創業之前曾多次找到星空聊創業的事情,在詹之後,楊再次找到星空,確認楊下決心要做礦機晶元後,星空聯合其他幾位朋友一起投了,成為了神馬礦機的大股東之一。


星空投資神馬礦機的邏輯很簡單——由於烤貓失蹤,烤貓礦機徹底退出 歷史 舞台,當時比特大陸的螞蟻礦機一家獨大,基本處於壟斷地位,這對比特幣網路並不好,很容易出大問題。(事實證明這個判斷是非常正確的)


當時一起投資神馬礦機的,還有魚池的神魚和王純,大家的想法都非常一致,不能讓比特大陸再這樣搞下去。


要知道,為了能夠成功分叉比特幣,比特大陸很早就開始布局,他們在那段時間,將大量礦機優先賣給支持分叉的人,支持比特幣的人反而很難拿到貨。


並且,大區塊的支持者甚至只需要支付 10% 的貨款,這相當於是給他們做了一個五倍杠桿,只需要支付一份算力的錢,就能獲得五份算力。


很多人因此而發家致富,因此也對比特大陸更加忠心耿耿,在支持分叉的岐途上一路走到黑。


幸運地是,神馬礦機研發順利,並且迅速成長成為能夠和比特大陸一較高下的礦機廠商。


幣信礦業當時是比特大陸的超級客戶,為了支持神馬礦機的發展,也采購了大量的神馬礦機。


在分叉大戰期間,當 BCH 集團意識到是幣信在暗中保護比特幣網路的時候,他們採用了圍魏救趙的方式,將神馬公司和幣信礦業公司,以侵犯專利為由,一起告上了法庭。


雖然最終這個官司比特大陸輸了,但是他們卻達到了預期目的——礦場場地方為了避免風險,要求幣信的礦機限時從礦場中搬離,幣信算力因此暫時消失,這場較量才告一段落。


經此一戰,幣信損失慘重。


一方面,幣信用自有算力去阻止 BCH 算力暴擊(後文有解釋),每天就有將近 100 個比特幣的損失(持續了一個難度周期,即 14 日)。


另外一方面,因為礦場被迫搬離,這其中又耽誤了很長時間無法挖礦,中間也有不小的損耗,幣信也遭受了巨大虧損。


不過,這個時候,BCH 集團針對比特幣精心策劃地採用的緊急難度調整演算法(EDA)已經失去了最佳作用時間,他們原本想用這個方式來偷襲比特幣網路的陰謀也徹底破產。


如果當時沒有幣信算力的狙擊,BCH 真的有可能已經成功篡位,不但算力超過比特幣,可能連比特幣這個名字都被其搶走,比特幣可能成長到今天的規模和地位。


因為這件事情,星空和吳忌寒這兩個原來的好兄弟,也因此反目成仇,斷了往來。幣信從此也成為了 BCH 利益相關者的肉中刺,眼中釘,欲處之而後快。


幣信為什麼不支持 BCH ?


眾所周知,其實無論是幣信也好,還是魚池也好,當年和比特大陸的關系其實都不錯,包括香港共識和紐約共識大會,大家都坐在一起談,一起討論。


目的當然是共贏,希望比特幣發展得更好。


但是,這一切在 2017 年之後事情開始有了變化,吳忌寒逐漸有了要分叉的想法,並且他在 2017 年 8 月將這個想法付諸實踐。


在這個過程中,BCH 陣營的做法一直相當具有攻擊性,一副我就要乾死你的架勢。其實分叉就分叉吧,各自好好做自己的事情就好,但是 BCH 從一開始就打算好了,要踩比特幣上位。


其實說來很諷刺,原來的比特幣佈道者,卻搖身一變成為了比特幣最堅定的反對力量,攻訐比特幣也最賣力。

他們說「BCH 才是真正的比特幣」,號召大家把比特幣賣了買 BCH。不知道多少人信了他們的謊言,將自己幸苦囤的比特幣換成了 BCH,因此而損失慘重,最終不得不徹底離開了這個行業。請問,這種行為和詐騙有什麼區別?


他們說比特幣區塊小,無法處理太多交易,鏈上非常堵。結果大家發現比特幣沒他們說的那麼堵,於是他們就發起「粉塵攻擊」,短時間內發送大量的小額垃圾交易,造成比特幣網路擁堵的假象。然後他們鼓吹大區塊,造謠說比特幣最終會因擁堵而消亡。(事實上,比特幣至今還活得很好,並且越來越健壯。)


記得當年殺毒軟體是如何作惡的嗎?為了賣出他們的軟體,有些無良公司會自己炮製病毒,等用戶中毒之後,再去兜售產品。他們的行為簡直如出一轍。


當時澳本聰站出來支持分叉,於是他們與其一拍即合,請來了澳本聰為 BCH 站台,寫文章,開發布會,一頓騷操作猛如虎,風光得不可一世。


當時他們萬萬沒想到,出來混總是要還的,澳本聰這個詐騙犯可不是易與之輩。僅僅是三個月之後,澳本聰就反手給了 BCH 致命 一刀,掀起了差點將 BCH 徹底毀滅的分叉大戰。


沒錯,BCH 分叉比特幣,澳本聰又來分叉 BCH,另外分出個 BSV,真是一出好戲!


幣信一直都是比特幣的信徒,或許 BCH 的初衷是好的,但是在後續的推進過程中,幣信自然非常不認可他們所採取的各種作惡手段。


也許這些手段在政治斗爭中非常常見,摸黑陷害競爭對手都是常用伎倆,但這是比特幣社區,寄託了無數人的期望和信仰,最初的信仰者就是一小撮理想主義者,變成這個樣子,肯定是大家所不願看到的。


並且,BCH 背後主要推手是比特大陸,無論是開發人員,還是社區中的意見領袖,大部分都是比特大陸資助的,BCH 儼然就是一個公司幣,過於中心化,想要取比特幣而代之,顯然是不合適的。


並不是說公司幣不行,例如 BNB 這樣的平台幣就做得非常好,但是如果這個公司幣想要干翻比特幣自己上位,那就有點定位不清了。


總之,BCH 集團的很多行為都透露出他們的極其不靠譜,要是將比特幣的未來寄希望在這樣一群人身上,那比特幣遲早玩完,這是所有比特幣社區的人不願看到的。


於是,在關鍵時刻,幣信決定出手干預。


幣信是如何保護比特幣網路的?


不得不承認,BCH 為了贏得這場分叉之戰,的確做了大量的工作和准備,在很久之前就開始聘請社區內的一些意見領袖開始造勢,不停地寫文章,有些文章寫得還挺有深度,看上去有理有據,邏輯完備。(後來澳本聰也採用了同樣的套路,忽悠了一大批死忠粉)


除了輿論戰,在技術和未來願景方面,BCH 集團也畫了很多大餅,看上去讓人神往,由於大區塊的特性,的確有很多比特幣無法實現的功能,這讓很多人對其充滿了期待。


如果這些還只是常規操作,那麼有一點不得不讓人驚艷,那就是—— BCH 的緊急難度調整機制(EDA)。

因為 BCH 使用和比特幣同樣的演算法,按正常的思路,BCH 要想分叉成功,並且持續保持出塊,就必須擁有龐大的算力支撐,因為分叉的時候,比特幣網路的難度已經非常大了,小算力根本爆不出塊。


所以,他們想出了一個緊急難度調整機制:如果當前區塊的前6個區塊出塊時間大於12小時,則難度自動下調20%,如果當前區塊的 MTP 時間和從當前塊往前數第6個塊的 MTP 時間相差大於12個小時,就應急降低20%難度。


簡單來說,就是如果一定時間內不出塊,就會自動下調20%難度,再不出塊就繼續下調 20%,直到出塊為止。這樣就算只有很小的算力,也能保證能夠出塊。


這個機制乍一看像是防守機制,純粹是為了自保,為了自己能夠生存下去而已,但是各位別被其表象所迷惑了,這實際上是一個極具有攻擊性的機制,因為難度只有下調,沒有上調。


設計這套機制的人,深諳人性之道,他們懂得,礦工其實是趨利的,只要哪裡有錢賺,就會用腳投票,直接把算力切到哪裡。


當 BCH 的難度降低了,擁有同樣的算力,那礦工就能夠挖到更多的幣,只要所得到的利潤大於比特幣,那麼礦工的算力就會被吸引過來。


這樣,就算 BCH 的價格比比特幣低,只要難度夠低,礦工就能賺更多錢,算力就會過來。


而 BCH 的算力和比特幣的算力是互斥的,挖 BCH 就不能挖 BTC,是一種此消彼長的關系,一旦比特幣算力都遷移到 BCH 網路,再配合拉漲幣價,在當時的環境下,還真有可能會被 BCH 篡位成功。


要知道,當時很多中立方都表示過,哪個網路的算力大就支持哪個幣是真正的比特幣。


不得不承認,緊急難度調整機制的設計的確非常天才,所以,這種機制也被人稱為針對比特幣的「算力暴擊」。


BCH 集團醞釀多時,花費了大量的人力物力籌備分叉,他們准備在分叉之後,立刻對比特幣展開「算力暴擊」,即分叉完成之後,就把自己的算力從 BCH 網路撤出,讓難度大幅下降,同時大幅度拉漲幣價,這樣就可以吸引大部分的礦工算力過來,比特幣網路的算力就會暴降,讓比特幣網路因擁堵不出塊而無法運轉,最終一舉奠定勝局。


這個計劃近乎完美。


這簡直就是針對比特幣的陽謀,大家都知道怎麼回事,但是就是沒辦法去破解,因為當時 BCH 集團控制了一半以上的比特幣算力,只要吸引 10%左右的算力過來,比特幣網路就可能運轉不了了。


當時除了 BCH 集團控制的算力和礦池,就只有三個礦池佔比比較大,分別是魚池魚池、國池(比特幣中國礦池)、和幣信礦池。


礦池就算想要支持比特幣,那也得礦工答應,礦池是無法控制用戶的算力的,不然礦工肯定會用腳投票直接走人。


所以,BCH 集團當時覺得勝券在握了,估計他們連慶祝酒會都已經准備好了。


但是,讓他們萬萬沒有想到的是,等分叉完畢,BCH 出了幾個塊,當他們將自有算力從 BCH 網路撤出,靜靜等待不出塊而難度自動下降之時,意外卻出現了——有神秘算力突然接入了 BCH 網路,爆塊繼續。


由於有持續爆塊,BCH 的緊急難度調整機制就無法生效,因為這樣難度一直降不下來(出塊間隔時間小於 12 小時)。


並且,為了防止神秘算力針對 BCH 網路發動 51%攻擊,他們又不得不很尷尬地重新將自己的算力切回來,持續挖著。


這些神秘算力隱藏了 Coinbase 和地址,一時間所有人都搞不清其來路。


突然出現的神秘算力打亂了「算力暴擊計劃」的節奏,本來等難度降低後,他們准備了大量的資金要配合拉盤,一時間拉盤計劃也無法繼續推進,生生卡住了。


這種情形,就彷彿一個刺客,針對刺殺目標發動了致命一擊,然後突然出現了一股神秘力量,將這致命一擊給擋住了,並且持續守護著目標,導致刺客後續的一系列攻擊都無法實施。


BCH集團非常費解:這股神秘力量到底從哪裡來的?


前面說過,除了 BCH 集團自己控制的算力,另外擁有比較大的算力的,就只剩下魚池、國池和幣信礦池這三方。


魚池和國池都是散戶的算力,他們根本無法動用,只有幣信礦池基本都是自己的算力,也就是說只有幣信有這個條件做這件事。


答案呼之欲出:幣信!


是的,這股神秘算力就是幣信的自有算力。


幣信在 BCH 集團准備針對比特幣發動第一次也是最強的一次算力暴擊的時候,出手了。


其他人沒辦法做這件事情,只有幣信有這個條件,只有幣信能做,那就由幣信來做!


為了比特幣的未來,舍我其誰?


要知道,當時難度沒降下來,礦工挖 BCH 肯定是不劃算的,幣信礦業頂著每天幾十甚至上百比特幣的巨額虧損,硬生生守護了比特幣一個難度周期!(即兩周時間)


BCH 集團也很快反應過來,知道這肯定是幣信乾的好事,但是沒辦法,在技術上他們是無法拒絕幣信的算力的,只能乾瞪眼。



通過這個方式,他們終於將幣信算力趕出了 BCH 網路,這才得以對比特幣實施算力暴擊。


幣信礦場剛停機,他們就迫不及待開始拉盤了,BCH 開始大漲,但那個時候已經他們無力回天了,因為最佳狙擊時機已過,他們已經失去了「天時」,效果大打折扣。


盡管後面 BCH 針對比特幣多次算力暴擊,導致比特幣網路算力經常不穩定,但勝負已定,已經無關緊要,不影響大局。


經此一役,幣信損失慘重,不但損失了十幾天的比特幣挖礦收益,礦場也不得不搬離,損失的比特幣在現在看來,簡直是個天文數字。


但是,這一切都是值得的,幣信為守護了比特幣貢獻了自己的力量,幫比特幣擋住了致命一擊,做了比特幣信仰者該做的事情。


雖然幣信因為這件事幾乎將以前所有挖礦賺到的利潤都一次性虧了出去,但長期來看,幣信肯是受益的。


後記


這些往事封存已久,很多人其實並不清楚其中的細節,也不知道幣信當年做的事情,這其實也沒什麼,幣信一直都活得很好。


但是這么多年來,幣信一直被一些別有用心者抹黑造謠,實在心累,想想還是寫點文字,將事實公布,免得無辜吃瓜群眾被其誤導。


分叉風波已經過去多年,比特幣依然還是那個比特幣,比特幣社區也比以前更加健壯,這是我們這些比特幣信仰者最大的幸福。


Long Bitcoin, Short the world!

#歐易OKEx# #比特幣[超話]# #數字貨幣#

⑤ 比特幣什麼時候會挖完

  1. 預計2140年可以挖完,總計2100萬枚

  2. 根據比特幣的相關文獻,在2140年,會產出2100個比特幣,並不再增長。根據比特幣的原理,在經歷33次減半期後,每區塊的挖礦產出將達到0.58聰,小於最小單位一聰。而每次減半的間隔是210000區塊,上述文獻給出的全部產出時間(2140年)是由每區塊產出時間10分鍾推算出來的。(210000*10/60/24/365=3.9954年*33=132年,從比特幣產生的2008年起,132年之後即是2140年)。

    但是,上述推算方法所使用的「每區塊產出時間為10分鍾」是一個理想狀態,這個假設僅在全網算力和難度不發生改變的情況下成立。查閱比特幣區塊鏈,不難發現,比特幣的全網算力長期處於增長狀態,挖礦難度也隨之增漲。於是,不難得出,上述推算不成立,有巨大誤差。


    上述方法的注意缺陷是,無法准確地預測比特幣全網算力的變化,無法准確地預測比特幣的開采速度。上述計算方法所使用的11.3天的數據,僅是從2013年5月2014年4月5日的平均值,代表性有待商榷。大家可以綜合大數據分析結果和礦機生產情況等建立更准確的數學模型。

⑥ 詳解比特幣挖礦原理

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

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

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

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

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

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

⑧ 關於POW演算法難度調整的簡單理解

POW演算法是比特幣,以太坊等區塊鏈系統使用的共識演算法,簡單來說他做的就是「工作量證明」。本文從一個非常簡單的哈希演算法的例子去解釋一下,如何把 社會必要勞動時間 全網算力這個概念量化以及難度調整。

相信使用搜索引擎查詢過和「哈希表」的同學都很清楚他們是如何映射和擴容,這里就不作贅述了。本文中假設使用的哈希演算法都能最大程度地平均分配空間

希望他的題目能保持在 3秒 鍾左右被解答出來。
想像一下我們在一個只有 9個空間 的哈希表裡面玩這個游戲。

每次碰撞成功率:1/3

回合1結束 :在問題發布1秒鍾後,有一個哥們宣布他算出了正確答案。
分析:這時候我們就可以認為, 全體勞動人民 在 一秒鍾 內進行了 N次 哈希運算,同時近似認為這個N滿足:

通過簡單的小學數學我們得知, N=3 ;又稱當次全網算力為3hash/秒

(劃重點)
回合2開始
對題目進行了必要的調整:「啊,我親愛的 奴隸 勞動人民 礦工們,想要獲得我的寶藏嗎?去找吧,我把我的一切財富都放在了那裡!只要找到一個值,通過使用 神 · 哈希 計算後等於1,就拿這個值找我兌換一點吧」;
他發現自己低估了初代礦工們的能耐後,為了控制財富被瓜分的速度,他在知道上一次全網算力為3hash/s的前提下優化了題目參數。

每次碰撞成功率:1/9

(假設礦工數沒變,也就是全網算力沒變)
回合2結束 :在問題發布3秒後,有一個哥們宣布他算出了正確答案。
分析:通過3秒計算出成功率只有1/9的題目,可看出

再次通過偉大的小學數學我們得知:N = 3;驗證了全網算力依舊是3hash/秒,同時把分配財富的速度降低到了3秒/次。 感到很滿意;

這時候我想大家就明白了, 通過調整問題中要求的哈希值的整體覆蓋率,來降低猜值成功的概率,這里可以近似認為 覆蓋率=成功率

調整的方法就是:

目的:在期望時間內,全網算力產出能算出所有覆蓋到的哈希值。

:共 產 識社會機制
財富:出塊獎勵
宣布正確答案:出塊
單位中的hash:代表進行一次哈希運算

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

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

⑩ 自學區塊鏈(六)BTC-挖礦難度

我們來看下挖礦的計算公式

H(block header) target,這個target就是 目標閾值

BTC用的哈希演算法是SHA-256,它產生的哈希值是256位,那麼就有2^256種取值,這個就是他的輸出空間,要增大挖礦難度, 就調節目標值在這個輸出空間所佔的比例 。

挖礦難度和目標閾值是成反比的, 當算力強時,調節難度,使目標閾值變小 。

不調節難度,隨著礦工數量增多,隨著算力的上升,那麼挖到區塊的時間就會變短,從10分鍾縮短到1分鍾甚至幾秒鍾,這個會帶來什麼樣的問題呢?可能很多人覺得這不是挺好嗎,交易等六個確認就會縮短時間了,交易就會變快了。其實出塊時間縮到很短,風險是很大的,因為網路延遲,出塊時間變短,不同節點很可能接到不同的區塊信息,導致會有很多分叉節點出現。礦工會根據自己認為正確的區塊接著挖。這種情況下,惡意節點發動分叉攻擊就比較容易成功,因為誠實節點的算力被分散了。

導致不需要51%的算力就能成功,所以縮短出塊時間是不利於BTC系統的穩定的。雖然10分鍾不一定是最優的時間,但是也算是比較合理的。

下面是 算力增長曲線

下面是 挖礦難度曲線

下面是 平均出礦時間

我們來看下難度公式:每2016個區塊調整一次挖礦難度,10分鍾出一個平均算下來是兩星期調整一次。

previous_difficulty是上一次的挖礦難度,分母是最近2016個區塊花費的時間

每個節點挖礦是獨立的,BTC的協議也是開源的,會不會有礦工不修改挖礦難度呢?可能性是存在的,但是不影響結果,因為廣播給其他節點需要獨立驗證block header的哈希值, 這個header裡面有難度的一個壓縮編碼,修改難度產生的結果是不會被誠實的節點認可的。

熱點內容
360宣布區塊鏈 發布:2025-09-07 05:41:51 瀏覽:664
cfx冷錢包操作教程 發布:2025-09-07 05:41:47 瀏覽:728
以太坊交易所安全嗎 發布:2025-09-07 05:24:53 瀏覽:3
礦機突然斷電 發布:2025-09-07 05:20:27 瀏覽:109
電廠挖比特幣 發布:2025-09-07 04:48:23 瀏覽:378
現在中國還有比特幣 發布:2025-09-07 04:24:59 瀏覽:1
奇客區塊鏈 發布:2025-09-07 04:24:44 瀏覽:911
usdt貨幣鏈類型 發布:2025-09-07 04:19:54 瀏覽:443
數字貨幣usdt追蹤得到嗎 發布:2025-09-07 03:59:29 瀏覽:262
區塊鏈賺錢平台軟體 發布:2025-09-07 03:50:28 瀏覽:144