當前位置:首頁 » 比特幣問答 » 比特幣多少個區塊調整一次

比特幣多少個區塊調整一次

發布時間: 2023-04-08 07:55:32

比特幣28年減半嗎

比特幣大概每4年減半一次。比特幣BTC第一次減半是在2012年11月28日,區塊獎勵從50個BTC下降到25BTC。比特幣第二次減半是在2016年7月10日,區塊獎勵從25個BTC下降到12.5BTC。比特幣的第三次減半在2020年5月12日,區塊獎勵從12.5個BTC下降到6.25BTC。
比特幣BTC減半規則:
1、2009年1月3日,中本聰挖出第一個區塊上50個幣,史稱創世區塊,比特幣網路誕生;
2、2012年11月28日,挖出到1050萬時(2100萬的50%),產量減半為每10分鍾25個;
3、2016年07月10日,當總量達到1575萬(新產出525萬,即1050的50%)時,再減半為每10分鍾12.5個;
4、2020年5月12日,當總量達到1837.5萬時,再減半為每10分鍾6.25個。
5、比特幣減半時間表明比特幣減半計劃在於塊高,而不是日期。每減少210,000塊就會發生一次減半。

㈡ 什麼是「比特幣挖礦

#比特幣觀察# #數字貨幣#

最近很多朋友私信我問我什麼叫挖礦?

今晚抽時間來舉個例子講講比特幣挖礦是什麼意思!認真看相信對於幣圈小白的你們有所幫助

幣圈裡「挖礦」是什麼意思?,首先我們自己要清楚一個概念,數字貨幣一開始是沒有的,而挖礦就能生產出數字貨幣,我們稱之為挖礦。而挖礦的機器,就是計算機,通過專業的挖礦計算機,准確優先算出答案的,以數字貨幣等形式給予礦工的獎勵,從而獲得市場上交易的數字貨幣!

挖礦是什麼,首先我們自己要清楚一個概念,數字貨幣一開始是沒有的,而挖礦就能生產出數字貨幣,我們稱之為挖礦。而挖礦的機器,就是計算機,通過專業的挖礦計算機,准確優先算出答案,以數字貨幣等形式給予礦工的獎勵,從而獲得市場上交易的數字貨幣!

挖礦是可以獲得收益的,通常情況下礦工挖礦的過程就是通過運行比特幣節點,同步 歷史 賬本,將最新交易記錄到賬本,並獲得比特幣區塊獎勵的一個過程。對比特幣網路而言,礦工通過挖礦維護比特幣網路安全。對礦工而言,通過挖礦分得比特幣獎勵.

那麼我們如何去挖礦,挖礦又應該注意些什麼。接下來聽我給你好好分析!首先我們自己要知道從最初的用電腦就能挖出幣,到如今需要專業的礦機才能挖出,這中間是經過了很多的迭代更新,這就造成了自己挖礦的難度大大的提升,那麼我們該如何選擇比較合適的挖礦方式呢?我們必須了解目前市場上的挖礦方式。從08年中本聰第一次用電腦挖出第一枚比特幣開始,就掀起了挖礦熱潮,越來越多的人開始用電腦挖礦,而人數的增多,也導致挖礦難度增大,普通的電腦也滿足不了挖礦的需求,隨著 科技 的進步,挖礦的機器也開始進步,人們開始購買專業的挖礦機,曾有一段時間居然在市面上都買不到CPU,而 科技 這幾年一直的突飛猛進,以及越來越多的人對數字貨幣的認可,難度再一次加大,開始出現了雲算力,這種技術相對前者來說,是進步很多的,挖礦變得大眾化,使得大家都可以礦。不得不說,對於這種人人能參與的挖礦方式,很快也得到了大眾認可,但對於靠挖礦為生人老礦工來說,只能被迫分一杯羹!

通常情況下算力與挖礦收益是正相關關系,算力和收益之間的關系如下所示:

1)如果在相同難度下,算力越高,收益也就會越高;

2)比特幣每2016個區塊,大概兩周就會進行一次難度調整。可能出現全網難度調整,從而導致算力增加,收益反而減少的情況發生;

3)開始挖礦必須要有一個操作方便、產出穩定的礦池,它的作用就是為各個終端細分數據包,可以通過精密的演算法將終端計算好的數據包按照比例,支付相應數量的比特幣

㈢ 自學區塊鏈(六)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裡面有難度的一個壓縮編碼,修改難度產生的結果是不會被誠實的節點認可的。

㈣ 為什麼比特幣成為了2021年最確定的事情

就目前來看,它的價格持續增長是肯定的,畢竟有著眾多金融機構在支撐幣價的穩固。

2020出現了太多的不確定事件,比如疫情、「3.12」、DeFi、Filecoin主網上線延遲、美國總統大選等,而確定性的事件有以太坊2.0上線、比特幣價格上漲等。

為什麼比特幣價格上漲會成為確定性事件呢?

這是不可否認的,因此它成為了2021年伊始最為確定的事情,就目前來看,它的價格持續增長是肯定的,畢竟有著眾多金融機構在支撐幣價的穩固。

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

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

㈦ 電腦挖礦是什麼意思

電腦挖礦是用礦機(電腦)對加密貨幣(比如比特幣Bitcoin)開採的一個過程。開采比特幣就像是求解一道數學題,最先得到答案,就獲得相應的獎勵。 所以整個求解並驗證的過程就叫做挖礦,而協助破解數字答案的設備就稱為礦機,由此,運行礦機,獲得收益的人群就被成為礦工。
一、比特幣誕生之初,普通的計算機就可以進行挖礦操作,同時很容易由個人挖出一個塊,但是隨著比特幣的發展、每10分鍾出一個塊的難度調節機制以及全網算力的不斷提高,普通的計算機的計算能力已不足以挖出區塊了,由此衍生出了算力更強的專業礦機,也就是ASIC礦機礦機越集中。但是單台ASIC礦機的算力依舊是有限的,面對不斷提高的全網算力,礦池作為集中礦工算力的運營商也逐步的出現。比如幣印礦池、viapool等等礦池。
二、如何挖礦得到收益礦機越集中? 礦工挖礦的過程就是通過運行比特幣節點,同步歷史賬本,將最新交易記錄到賬本,並獲得比特幣區塊獎勵的一個過程礦機越集中。對比特幣網路而言,礦工通過挖礦維護比特幣網路安全。對礦工而言,通過挖礦分得比特幣獎勵。當前比特幣爆塊/出塊獎勵為12.5個比特幣(編輯日期:2019年9月2日)。 挖礦即工作量證明PoW(Proof of Work)礦機越集中。工作量證明通過計算一個數值( nonce ),使得拼湊上交易數據後計算出的 Hash 值滿足規定的上限。在節點成功找到滿足的Hash值之後,會馬上對全網進行廣播,告知全網自己已打包到了新的區塊,網路的節點收到廣播打包區塊後,會立刻對其進行驗證。如果驗證通過,則表明已經有節點成功解迷,自己就不再競爭當前區塊打包,而是選擇接受這個區塊,記錄到自己的賬本中,然後進行下一個區塊的競爭猜謎。網路中只有最快解謎的區塊,才會添加的賬本中,其他的節點進行復制,這樣就保證了整個賬本的唯一性。
三、算力與挖礦收益成正比嗎礦機越集中?算力和收益之間的關系:
1)同難度的情況下礦機越集中,算力越高,收益越高;
2)比特幣每2016個區塊,約兩周的時間進行一次難度調整礦機越集中。可能會因為全網難度調整,而出現算力增加,但收益反而減少的情況
3)比特幣每4年獎勵減半一次,在獎勵減半的收益,用戶挖礦的收益也隨之減半礦機越集中。 算力和收益之間的計算公式: 您一天的挖礦收益=您的算力*一天的時間(86400秒)*塊獎勵(12.5個比特幣)/(全網難度*2^32)

㈧ 中本聰幣總量是2100萬枚還是21億枚

比特幣的概念最初由中本聰在2008年11月1日提出,於2009年1月3日正式誕生。

同年9月,以雷曼兄弟的倒閉為開端,金融危機在美國爆發並向全世界蔓延。為應對危機,各國政府採取量化寬松等措施,救助 …

比特幣的概念最初由中本聰在2008年11月1日提出,於2009年1月3日正式誕生。同年9月,以雷曼兄弟的倒閉為開端,金融危機在美國爆發並向全世界蔓延。為應對危機,各國政府採取量化寬松等措施,救助由於自身過失、陷入危機的大金融機構。

比特幣被中本聰設計上限為2100萬個。通過限制其最大供應量,並減慢新比特幣的出產出速度,中本聰希望每個比特幣單位(目前稱為「聰」)隨著時間的推移而升值。

截止目前為止,已挖礦18535406.25BTC,未挖礦總數2464593.7269BTC。並且每4年比特幣「長」出來是需要遵守出產協議,遵循以下兩個規則:

1、最開始每10分鍾生成50個比特幣(每次10分鍾的區間由演算法來保證穩定不變);

2、每21萬次後,比特幣的單次產量減半,從50、25、12.5……依此類推,直至總量達到2100萬。

根據以上規則,我們只需列出算式,便能得出每次減半(21萬次)需要的時間:210000÷(365*24*6)

註:因為每10分鍾產出一次,所以每年的次數是365*24*6答案正是4(年),這便是「四年減半」之說的由來。

比特幣挖礦難度每2016個區塊之後會調整一次。按平均每10分鍾挖礦一個區塊時間計算,2016個區塊對應的時間是14天。

繼2020.11.3比特幣挖礦難度歷史性下調16%之後,因枯水期到來,老舊礦機被淘汰,11.17挖礦難度預計再次下調11%。

㈨ 比特幣一個UTXO交易為什麼要經過6個區塊確認才被認為更改不可逆(或者說幾乎不可逆)

你說的是對的,的確會回滾, 如果的交易不幸被打包到分叉上面了,這個交易很有可能會在主鏈被同步後被取消掉。

至於為什麼要6個確認是因為加大蒙出最優解難度(防止單節點造假)。 一個塊可能還能蒙出一個最優解,6個塊一起蒙出基本上不可能。 跟分叉關系不大

㈩ 知鏈區塊鏈金融應用實踐平台成績怎麼算

1. 工作量證明(PoW)
中本聰在2009年提出的比特幣(Bitcoin)是區塊鏈技術最早的應用,其採用PoW作為共識演算法,其核心思想是節點間通過哈希算力的競爭來獲取記賬權和比特幣獎勵。PoW中,不同節點根據特定信息競爭計算一個數學問題的解,這個數學問題很難求解,但卻容易對結果進行驗證,最先解決這個數學問題的節點可以創建下一個區塊並獲得一定數量的幣獎勵。中本聰在比特幣中採用了HashCash[4]機制設計這一數學問題。本節將以比特幣採用的PoW演算法為例進行說明,PoW的共識步驟如下:
節點收集上一個區塊產生後全網待確認的交易,將符合條件的交易記入交易內存池,然後更新並計算內存池中交易的Merkle根的值,並將其寫入區塊頭部;
在區塊頭部填寫如表1.1所示的區塊版本號、前一區塊的哈希值、時間戳、當前目標哈希值和隨機數等信息;
表1.1 區塊頭部信息
隨機數nonce在0到232之間取值,對區塊頭部信息進行哈希計算,當哈希值小於或等於目標值時,打包並廣播該區塊,待其他節點驗證後完成記賬;
一定時間內如果無法計算出符合要求的哈希值,則重復步驟2。如果計算過程中有其他節點完成了計算,則從步驟1重新開始。
比特幣產生區塊的平均時間為10分鍾,想要維持這一速度,就需要根據當前全網的計算能力對目標值(難度)進行調整[5]。難度是對計算產生符合要求的區塊困難程度的描述,在計算同一高度區塊時,所有節點的難度都是相同的,這也保證了挖礦的公平性。難度與目標值的關系為:
難度值=最大目標值/當前目標值 (1.1)
其中最大目標值和當前目標值都是256位長度,最大目標值是難度為1時的目標值,即2224。假設當前難度為,算力為,當前目標值為,發現新區塊的平均計算時間為,則
根據比特幣的設計,每產生2016個區塊後(約2周)系統會調整一次當前目標值。節點根據前2016個區塊的實際生產時間,由公式(1.4)計算出調整後的難度值,如果實際時間生產小於2周,增大難度值;如果實際時間生產大於2周,則減小難度值。根據最長鏈原則,在不需要節點同步難度信息的情況下,所有節點在一定時間後會得到相同的難度值。
在使用PoW的區塊鏈中,因為網路延遲等原因,當同一高度的兩個區塊產生的時間接近時,可能會產生分叉。即不同的礦工都計算出了符合要求的某一高度的區塊,並得到與其相近節點的確認,全網節點會根據收到區塊的時間,在先收到的區塊基礎上繼續挖礦。這種情況下,哪個區塊的後續區塊先出現,其長度會變得更長,這個區塊就被包括進主鏈,在非主鏈上挖礦的節點會切換到主鏈繼續挖礦。
PoW共識演算法以算力作為競爭記賬權的基礎,以工作量作為安全性的保障,所有礦工都遵循最長鏈原則。新產生的區塊包含前一個區塊的哈希值,現存的所有區塊的形成了一條鏈,鏈的長度與工作量成正比,所有的節點均信任最長的區塊鏈。如果當某一組織掌握了足夠的算力,就可以針對比特幣網路發起攻擊。當攻擊者擁有足夠的算力時,能夠最先計算出最新的區塊,從而掌握最長鏈。此時比特幣主鏈上的區塊大部分由其生成,他可以故意拒絕某些交易的確認和進行雙花攻擊,這會對比特幣網路的可信性造成影響,但這一行為同樣會給攻擊者帶來損失。通過求解一維隨機遊走問題,可以獲得惡意節點攻擊成功的概率和算力之間的關系:
圖1.1 攻擊者算力與攻擊成功概率
2. 權益證明(PoS)
隨著參與比特幣挖礦的人越來越多,PoW的許多問題逐漸顯現,例如隨著算力競爭迅速加劇,獲取代幣需要消耗的能源大量增加,記賬權也逐漸向聚集了大量算力的「礦池」集中[6-9]。為此,研究者嘗試採用新的機製取代工作量證明。PoS的概念在最早的比特幣項目中曾被提及,但由於穩健性等原因沒被使用。PoS最早的應用是點點幣(PPCoin),PoS提出了幣齡的概念,幣齡是持有的代幣與持有時間乘積的累加,計算如公式(1.4)所示。利用幣齡競爭取代算力競爭,使區塊鏈的證明不再僅僅依靠工作量,有效地解決了PoW的資源浪費問題。
其中持有時間為某個幣距離最近一次在網路上交易的時間,每個節點持有的幣齡越長,則其在網路中權益越多,同時幣的持有人還會根據幣齡來獲得一定的收益。點點幣的設計中,沒有完全脫離工作量證明,PoS機制的記賬權的獲得同樣需要進行簡單的哈希計算:
其中proofhash是由權重因子、未消費的產出值和當前時間的模糊和得到的哈希值,同時對每個節點的算力進行了限制,可見幣齡與計算的難度成反比。在PoS中,區塊鏈的安全性隨著區塊鏈的價值增加而增加,對區塊鏈的攻擊需要攻擊者積攢大量的幣齡,也就是需要對大量數字貨幣持有足夠長的時間,這也大大增加了攻擊的難度。與PoW相比,採用PoS的區塊鏈系統可能會面對長程攻擊(Long Range Attack)和無利害攻擊(Nothing at Stake)。
除了點點幣,有許多幣也使用了PoS,但在記賬權的分配上有著不同的方法。例如,未來幣(Nxt)和黑幣(BlackCion)結合節點所擁有的權益,使用隨機演算法分配記賬權。以太坊也在逐步採用PoS代替PoW。
3. 委託權益證明(DPoS)
比特幣設計之初,希望所有挖礦的參與者使用CPU進行計算,算力與節點匹配,每一個節點都有足夠的機會參與到區塊鏈的決策當中。隨著技術的發展,使用GPU、FPGA、ASIC等技術的礦機大量出現,算力集中於擁有大量礦機的參與者手中,而普通礦工參與的機會大大減小。
採用DPoS的區塊鏈中,每一個節點都可以根據其擁有的股份權益投票選取代表,整個網路中參與競選並獲得選票最多的n個節點獲得記賬權,按照預先決定的順序依次生產區塊並因此獲得一定的獎勵。競選成功的代表節點需要繳納一定數量的保證金,而且必須保證在線的時間,如果某時刻應該產生區塊的節點沒有履行職責,他將會被取消代表資格,系統將繼續投票選出一個新的代表來取代他。
DPoS中的所有節點都可以自主選擇投票的對象,選舉產生的代表按順序記賬,與PoW及PoS相比節省了計算資源,而且共識節點只有確定的有限個,效率也得到了提升。而且每個參與節點都擁有投票的權利,當網路中的節點足夠多時,DPoS的安全性和去中心化也得到了保證。
4. 實用拜占庭容錯演算法(PBFT)
在PBFT演算法中,所有節點都在相同的配置下運行,且有一個主節點,其他節點作為備份節點。主節點負責對客戶端的請求進行排序,按順序發送給備份節點。存在視圖(View)的概念,在每個視圖中,所有節點正常按照處理消息。但當備份節點檢查到主節點出現異常,就會觸發視圖變換(View Change)機制更換下一編號的節點為主節點,進入新的視圖。PBFT中客戶端發出請求到收到答復的主要流程如圖4.1所示[10] [11],伺服器之間交換信息3次,整個過程包含以下五個階段:
圖4.1 PBFT執行流程
目前以PBFT為代表的拜占庭容錯演算法被許多區塊鏈項目所使用。在聯盟鏈中,PBFT演算法最早是被Hyper ledger Fabric項目採用。Hyperledger Fabric在0.6版本中採用了PBFT共識演算法,授權和背書的功能集成到了共識節點之中,所有節點都是共識節點,這樣的設計導致了節點的負擔過於沉重,對TPS和擴展性有很大的影響。1.0之後的版本都對節點的功能進行了分離,節點分成了三個背書節點(Endorser)、排序節點(Orderer)和出塊節點(Committer),對節點的功能進行了分離,一定程度上提高了共識的效率。
Cosmos項目使用的Tendermint[12]演算法結合了PBFT和PoS演算法,通過代幣抵押的方式選出部分共識節點進行BFT的共識,其減弱了非同步假設並在PBFT的基礎上融入了鎖的概念,在部分同步的網路中共識節點能夠通過兩階段通信達成共識。系統能夠容忍1/3的故障節點,且不會產生分叉。在Tendermint的基礎上,Hotstuff[13]將區塊鏈的塊鏈式結構和BFT的每一階段融合,每階段節點間對前一區塊簽名確認與新區塊的構建同時進行,使演算法在實現上更為簡單,Hotstuff還使用了門限簽名[14]降低演算法的消息復雜度。
5. Paxos與Raft
共識演算法是為了保障所存儲信息的准確性與一致性而設計的一套機制。在傳統的分布式系統中,最常使用的共識演算法是基於Paxos的演算法。在拜占庭將軍問題[3]提出後,Lamport在1990年提出了Paxos演算法用於解決特定條件下的系統一致性問題,Lamport於1998年重新整理並發表Paxos的論文[15]並於2001對Paxos進行了重新簡述[16]。隨後Paxos在一致性演算法領域占據統治地位並被許多公司所採用,例如騰訊的Phxpaxos、阿里巴巴的X-Paxos、亞馬遜的AWS的DynamoDB和谷歌MegaStore[17]等。這一類演算法能夠在節點數量有限且相對可信任的情況下,快速完成分布式系統的數據同步,同時能夠容忍宕機錯誤(Crash Fault)。即在傳統分布式系統不需要考慮參與節點惡意篡改數據等行為,只需要能夠容忍部分節點發生宕機錯誤即可。但Paxos演算法過於理論化,在理解和工程實現上都有著很大的難度。Ongaro等人在2013年發表論文提出Raft演算法[18],Raft與Paxos同樣的效果並且更便於工程實現。
Raft中領導者占據絕對主導地位,必須保證伺服器節點的絕對安全性,領導者一旦被惡意控制將造成巨大損失。而且交易量受到節點最大吞吐量的限制。目前許多聯盟鏈在不考慮拜占庭容錯的情況下,會使用Raft演算法來提高共識效率。
6. 結合VRF的共識演算法
在現有聯盟鏈共識演算法中,如果參與共識的節點數量增加,節點間的通信也會增加,系統的性能也會受到影響。如果從眾多候選節點中選取部分節點組成共識組進行共識,減少共識節點的數量,則可以提高系統的性能。但這會降低安全性,而且候選節點中惡意節點的比例越高,選出來的共識組無法正常運行的概率也越高。為了實現從候選節點選出能夠正常運行的共識組,並保證系統的高可用性,一方面需要設計合適的隨機選舉演算法,保證選擇的隨機性,防止惡意節點對系統的攻擊。另一方面需要提高候選節點中的誠實節點的比例,增加誠實節點被選進共識組的概率。
當前在公有鏈往往基於PoS類演算法,抵押代幣增加共識節點的准入門檻,通過經濟學博弈增加惡意節點的作惡成本,然後再在部分通過篩選的節點中通過隨機選舉演算法,從符合條件的候選節點中隨機選舉部分節點進行共識。
Dodis等人於1999年提出了可驗證隨機函數(Verifiable Random Functions,VRF)[19]。可驗證隨機函數是零知識證明的一種應用,即在公私鑰體系中,持有私鑰的人可以使用私鑰和一條已知信息按照特定的規則生成一個隨機數,在不泄露私鑰的前提下,持有私鑰的人能夠向其他人證明隨機數生成的正確性。VRF可以使用RSA或者橢圓曲線構建,Dodis等人在2002年又提出了基於Diffie-Hellman 困難性問題的可驗證隨機函數構造方法[20],目前可驗證隨機函數在密鑰傳輸領域和區塊鏈領域都有了應用[21]。可驗證隨機函數的具體流程如下:
在公有鏈中,VRF已經在一些項目中得到應用,其中VRF多與PoS演算法結合,所有想要參與共識的節點質押一定的代幣成為候選節點,然後通過VRF從眾多候選節點中隨機選出部分共識節點。Zilliqa網路的新節點都必須先執行PoW,網路中的現有節點驗證新節點的PoW並授權其加入網路。區塊鏈項目Ontology設計的共識演算法VBFT將VRF、PoS和BFT演算法相結合,通過VRF在眾多候選節點中隨機選出共識節點並確定共識節點的排列順序,可以降低惡意分叉對區塊鏈系統的影響,保障了演算法的公平性和隨機性。圖靈獎獲得者Micali等人提出的Algorand[22]將PoS和VRF結合,節點可以採用代幣質押的方式成為候選節點,然後通過非互動式的VRF演算法選擇部分節點組成共識委員會,然後由這部分節點執行類似PBFT共識演算法,負責交易的快速驗證,Algorand可以在節點為誠實節點的情況下保證系統正常運行。Kiayias等人提出的Ouroboros[23]在第二個版本Praos[24]引入了VRF代替偽隨機數,進行分片中主節點的選擇。以Algorand等演算法使用的VRF演算法為例,主要的流程如下:
公有鏈中設計使用的VRF中,節點被選為記賬節點的概率往往和其持有的代幣正相關。公有鏈的共識節點范圍是無法預先確定的,所有滿足代幣持有條件的節點都可能成為共識節點,系統需要在數量和參與度都隨機的節點中選擇部分節點進行共識。而與公有鏈相比,聯盟鏈參與共識的節點數量有限、節點已知,這種情況下聯盟鏈節點之間可以通過已知的節點列表進行交互,這能有效防止公有鏈VRF設計時可能遇到的女巫攻擊問題。
7. 結合分片技術的公式演算法
分片技術是資料庫中的一種技術,是將資料庫中的數據切成多個部分,然後分別存儲在多個伺服器中。通過數據的分布式存儲,提高伺服器的搜索性能。區塊鏈中,分片技術是將交易分配到多個由節點子集組成的共識組中進行確認,最後再將所有結果匯總確認的機制。分片技術在區塊鏈中已經有一些應用,許多區塊鏈設計了自己的分片方案。
Luu等人於2017年提出了Elastico協議,最先將分片技術應用於區塊鏈中[25]。Elastico首先通過PoW演算法競爭成為網路中的記賬節點。然後按照預先確定的規則,這些節點被分配到不同的分片委員會中。每個分片委員會內部執行PBFT等傳統拜占庭容錯的共識演算法,打包生成交易集合。在超過的節點對該交易集合進行了簽名之後,交易集合被提交給共識委員會,共識委員會在驗證簽名後,最終將所有的交易集合打包成區塊並記錄在區塊鏈上。
Elastico驗證了分片技術在區塊鏈中的可用性。在一定規模內,分片技術可以近乎線性地拓展吞吐量。但Elastico使用了PoW用於選舉共識節點,這也導致隨機數產生過程及PoW競爭共識節點的時間過長,使得交易延遲很高。而且每個分片內部採用的PBFT演算法通訊復雜度較高。當單個分片中節點數量較多時,延遲也很高。
在Elastico的基礎上,Kokoris-Kogias等人提出OmniLedger[26],用加密抽簽協議替代了PoW選擇驗證者分組,然後通過RandHound協議[27]將驗證者歸入不同分片。OmniLedger。OmniLedger在分片中仍然採用基於PBFT的共識演算法作為分片中的共識演算法[28],並引入了Atomix協議處理跨分片的交易,共識過程中節點之間通信復雜度較高。當分片中節點數量增多、跨分片交易增多時,系統TPS會顯著下降。
Wang等人在2019年提出了Monoxide[29]。在PoW區塊鏈系統中引入了分片技術,提出了連弩挖礦演算法(Chu ko-nu mining algorithm),解決了分片造成的算力分散分散問題,使得每個礦工可以同時在不同的分片進行分片,在不降低安全性的情況下提高了PoW的TPS。

熱點內容
買入USDT時訂單被取消怎麼辦 發布:2025-09-17 19:52:49 瀏覽:329
trx在家怎麼用 發布:2025-09-17 19:49:46 瀏覽:83
以太坊如何實現批量轉賬 發布:2025-09-17 19:20:03 瀏覽:634
588挖礦算力為0 發布:2025-09-17 19:17:18 瀏覽:809
用普通電腦挖比特幣 發布:2025-09-17 19:03:36 瀏覽:207
obb數字貨幣是比特幣嗎 發布:2025-09-17 18:53:30 瀏覽:849
16日數字貨幣大跌 發布:2025-09-17 18:26:44 瀏覽:573
購買力平價算人均gdp 發布:2025-09-17 18:26:35 瀏覽:808
btc達州 發布:2025-09-17 18:15:43 瀏覽:539
貨幣做usdt賺差價 發布:2025-09-17 18:00:23 瀏覽:403