當前位置:首頁 » 比特幣問答 » 拜占庭演算法比特幣

拜占庭演算法比特幣

發布時間: 2021-04-11 17:13:12

❶ 理論上區塊鏈怎麼解決拜占庭將軍問題

拜占庭將軍問題(以下簡稱「共識問題」)的正式表述是:如何在一個不基於信任的分布式網路中就信息達成共識?這個表述聽起來有些晦澀,但其本質並不復雜,下面的例子與共識問題雖然並不完全一致,但卻有助於我們的理解[9]。

想像一下在遙遠的拜占庭時代,有一個富饒的城邦,金銀珠寶綾羅綢緞應有盡有,它的領主哆啦A夢獨享著這一切奢華與榮耀。而在城邦的外圍,四位拜占庭將軍大雄、胖虎、小夫和靜香都覬覦著哆啦A夢的財富,於是他們決定聯手攻佔哆啦A夢的城邦。根據雙方的實力對比,必須有超過半數的將軍同時發起進攻方能克敵制勝,因此獲勝條件就是四人中至少三個人可以就進攻時間達成一致。那麼四位將軍的勝算有多少呢?

這個問題的答案就要取決於四個人的合作方式了,如果是集中式系統,有一個盟主,比如胖虎(相當於中央伺服器),那麼他們的勝利是毫無懸念的,因為就進攻時間達成一致非常簡單,只要胖虎召集大雄、小夫和靜香開個會討論一下就可以了,即使大家意見有分歧胖虎也可以在最後予以定奪。下面讓我們回到拜占庭將軍問題的假設里,在不基於信任的分布式網路中,四位將軍的勝算又如何呢?

?

首先由於四位將軍之間缺乏信任,因此聚到小黑屋裡開個密謀會的可能性被排除了(一旦在小黑屋裡被胖虎綁架了怎麼辦?);其次由於沒有盟主,四個人的意見都會被同等的看重。在這種情況下,四位將軍只能通過信使在各自營地之間傳遞消息,來商定進攻時間了。比如大雄覺得早上6點是發動進攻的好時機,他就會派信使將自己的意見告訴胖虎、小夫和靜香,與此同時,胖虎可能認為晚上9點發動突襲更好,小夫更喜歡下午3點出擊,而靜香希望是上午10點,他們三人也會在同一時間派出自己的信使。這樣一來,在第一輪通信結束後,四位將軍每個人都有了四個可供選擇的進攻時間,他們各自要在下一輪通信中把自己選定的時間告知另外三人。由於四個人的決策都是獨立做出的,因此最終的選擇結果就有256種可能,而只有當三人以上都恰好選擇了同一時間的時候,共識才被達成,而這樣的結果才64種,也就是說達成共識的概率僅為1/4。這還只是四位將軍的情況,如果將軍的人數是10人,100人,1000人呢?我們稍加計算就可以發現隨著人數的增加,達成共識的希望會變得越來越渺茫。

把上面例子中的將軍換成計算機網路中的節點,把信使換成節點之間的通信,把進攻時間換成需要達成共識的信息,你就可以理解共識問題所描述的困境了。達成共識的能力對於一個支付系統來說重要性不言而喻,如果你給家裡匯了一筆錢買車,第二天去銀行核實的時候櫃台告訴你「關於你匯了多少錢的問題,我們的系統里有三個版本的記錄」,這樣的銀行你顯然是不敢把錢存進去的。在比特幣出現之前共識問題是很難被完美解決的,要保證達成共識就需要採用集中式系統(除非節點滿足特定條件),要想去中心化共識就無法保證。那麼區塊鏈技術又是如何解決這一難題的呢?(關注公眾號weoption,回復「區塊鏈」,可查看全文。)

❷ 如何理解拜占庭將軍問題

拜占庭將軍問題(以下簡稱「共識問題」)的正式表述是:如何在一個不基於信任的分布式網路中就信息達成共識?這個表述聽起來有些晦澀,但其本質並不復雜,下面的例子與共識問題雖然並不完全一致,但卻有助於我們的理解[9]。 想像一下在遙遠的拜占庭時代,有一個富饒的城邦,金銀珠寶綾羅綢緞應有盡有,它的領主哆啦A夢獨享著這一切奢華與榮耀。而在城邦的外圍,四位拜占庭將軍大雄、胖虎、小夫和靜香都覬覦著哆啦A夢的財富,於是他們決定聯手攻佔哆啦A夢的城邦。根據雙方的實力對比,必須有超過半數的將軍同時發起進攻方能克敵制勝,因此獲勝條件就是四人中至少三個人可以就進攻時間達成一致。那麼四位將軍的勝算有多少呢? 這個問題的答案就要取決於四個人的合作方式了,如果是集中式系統,有一個盟主,比如胖虎(相當於中央伺服器),那麼他們的勝利是毫無懸念的,因為就進攻時間達成一致非常簡單,只要胖虎召集大雄、小夫和靜香開個會討論一下就可以了,即使大家意見有分歧胖虎也可以在最後予以定奪。下面讓我們回到拜占庭將軍問題的假設里,在不基於信任的分布式網路中,四位將軍的勝算又如何呢? ? 首先由於四位將軍之間缺乏信任,因此聚到小黑屋裡開個密謀會的可能性被排除了(一旦在小黑屋裡被胖虎綁架了怎麼辦?);其次由於沒有盟主,四個人的意見都會被同等的看重。在這種情況下,四位將軍只能通過信使在各自營地之間傳遞消息,來商定進攻時間了。比如大雄覺得早上6點是發動進攻的好時機,他就會派信使將自己的意見告訴胖虎、小夫和靜香,與此同時,胖虎可能認為晚上9點發動突襲更好,小夫更喜歡下午3點出擊,而靜香希望是上午10點,他們三人也會在同一時間派出自己的信使。這樣一來,在第一輪通信結束後,四位將軍每個人都有了四個可供選擇的進攻時間,他們各自要在下一輪通信中把自己選定的時間告知另外三人。由於四個人的決策都是獨立做出的,因此最終的選擇結果就有256種可能,而只有當三人以上都恰好選擇了同一時間的時候,共識才被達成,而這樣的結果才64種,也就是說達成共識的概率僅為1/4。這還只是四位將軍的情況,如果將軍的人數是10人,100人,1000人呢?我們稍加計算就可以發現隨著人數的增加,達成共識的希望會變得越來越渺茫。 把上面例子中的將軍換成計算機網路中的節點,把信使換成節點之間的通信,把進攻時間換成需要達成共識的信息,你就可以理解共識問題所描述的困境了。達成共識的能力對於一個支付系統來說重要性不言而喻,如果你給家裡匯了一筆錢買車,第二天去銀行核實的時候櫃台告訴你「關於你匯了多少錢的問題,我們的系統里有三個版本的記錄」,這樣的銀行你顯然是不敢把錢存進去的。在比特幣出現之前共識問題是很難被完美解決的,要保證達成共識就需要採用集中式系統(除非節點滿足特定條件),要想去中心化共識就無法保證。那麼區塊鏈技術又是如何解決這一難題的呢?

❸ 眾安區塊鏈的核心演算法是什麼有什麼特點

眾安鏈用的是帶權重的拜占庭容錯演算法,與傳統的工作量證明演算法相比,眾安鏈的演算法在出塊速度和共識效率上都有很大的提升。

❹ 區塊鏈共識機制,拜占庭將軍問題是什麼

POW完全依靠用經濟激勵的方式來大量增加記賬參與者, 從而稀釋作惡節點的比例, 或者說大幅增加作惡的成本, 做假賬者需要控制或者賄賂更多的節點。這是一種簡單粗暴的共識機制, 在演算法上沒有優化過,但是又非常可行, 現在體量最大的兩條區塊鏈, 比特幣和以太坊都是用POW挖礦的方式。
POW雖然不是最優,但是現在最最切實可行的共識演算法。例如比特幣、萊特幣、DECENT都是採用的POW證明機制。

❺ 拜占庭將軍問題的解決演算法

拜占庭問題的最初描述是:n 個將軍被分隔在不同的地方,忠誠的將軍希望通過某種協議達成某個命令的一致(比如一起進攻或者一起後退)。但其中一些背叛的將軍會通過發送錯誤的消息阻撓忠誠的將軍達成命令上的一致。Lamport 證明了在將軍總數大於3m ,背叛者為m 或者更少時,忠誠的將軍可以達成命令上的一致。
為了保證上面的需求,必須滿足下面兩個條件:
1. 每兩個忠誠的將軍必須收到相同的值 v(i)(v(i)是第i 個將軍的命令)
2. 如果第i 個將軍是忠誠的,那麼他發送的命令和每個忠誠將軍收到的v(i)相同
為了簡化以上模型,我們使用一個將軍發送命令給多個副官的形式來證明,發送命令的將軍稱為發令者,接收命令的將軍為副官,那麼上面的兩個條件可以表述為:
IC1. 所有忠誠的副官遵守相同的命令
IC2. 如果發出命令的將軍是忠誠的,那麼所有忠誠的副官遵守司令(發出命令的將軍)的命令
特別提示:發送命令的每次只有一個將軍,將其命令發送給n-1 個副官。m 代表叛國者的個數,因為將軍總數為n,所以副官總數為n-1 個。IC2 中副官遵守實際上是指忠誠的將軍能夠正確收到忠誠將軍的命令消息。 通過口頭消息傳遞達到一致,如果有m 個叛國將軍,則將軍們的總數必須為3m+1 個以上。下面是口頭消息傳遞過程中默認的一些條件:
A1. 每個被發送的消息都能夠被正確的投遞
A2. 信息接收者知道是誰發送的消息
A3. 能夠知道缺少的消息
A1 和A2 假設了兩個將軍之間通信沒有干擾,既不會有背叛者阻礙消息的發送(截斷)也不會有背叛者偽造消息的情況(偽造)。即是每個將軍都可以無誤地將自己的消息發送給其他每個將軍。(下一節中可以不需要這個必要條件)
我們定義口頭消息演算法OM(m) 。對於所有的非負整數m ,每個發令者通過OM(M) 演算法發送命令給n-1 個副官。下面將說明OM(m) 演算法在最多有m 個背叛者且總將軍數為3m+1 或者更多的情況下可以解決拜占庭將軍問題。(考慮到網路應用實際環境,原文使用了收到值代替收到命令,本文不做修改)
演算法定義一個函數:majority(com1,com2,…,comn)等於多數派命令。
OM(0)演算法
(1)發令者將他的命令發送給每個副官。
(2)每個副官採用他從發令者得到的命令,或者默認使用撤退命令,如果沒有收到任何命令。
OM(m)演算法
(1)發令者將他的命令發送給每個副官。
(2)對於每個i ,vi 是每個副官i 從發令者收到的命令,如果沒有收到命令則為撤退命令。副官i 在OM(m-1) 中作為發令者將vi 發送給另外n-2 個副官。
(3)對於每個i,並且j eq i,vj 是副官i 從第(2)步中的副官j 發送過來的命令(使用OM(m-1)演算法),如果沒有收到第(2)步中的副官j 的命令則默認為撤退命令。最後副官i 使用majority(v1,…,vn-1)得到命令。
接下來實際的考慮一個n=4,m=1 的情況:
1. 當副官D是背叛者
第一步發令者A執行演算法OM(1)將自己的命令發送給三個副官B,C,D,三個副官都正確地收到了命令。
第二步每個收到命令的副官都作為發令者執行演算法OM(0),將自己收到的命令轉發給其餘副官,因為副官D是背叛者,所以他給副官B和C傳遞的消息可能會是假消息。副官B和C分別根據majority 函數來決定命令。
這樣背叛的副官D 同理也干擾不了發令者的決定。下面看看如果發令者是背叛者。
2. 發令者是背叛者,其餘副官為忠誠的
第一步:發令者A向副官B,C,D發送了不同的命令,實際情況中是一個攻擊者向不同方發送了不一致的值(例如,0或1)企圖擾亂副官做出一致決定。
第二步:副官收到命令後,搖身一變為發令者執行OM(0) 向所有的副官發送命令,每個副官通過多數表決演算法仍可以達成一致的命令。
文章接著就證明了OM(m)演算法對任意m 都是可以滿足,首先引入一個引理(歸納法證明):
引理1:對於任意m 和k ,如果有超過2k+m 個將軍和最多k 個背叛者,那麼演算法OM(m) 滿足IC2 (回顧下IC2 指的是,如果將軍是忠誠的,所有的副官遵守將軍命令)。
證明:當m=0 的時候,OM(0) 在將軍是忠誠的時候滿足IC2。當m>0 時,首先將軍將命令傳遞給 n-1 個副官,然後每個副官對n-1 個將軍執行OM(m-1) 演算法。因為假設了n>2k+m(引理中有將軍數大於2k+m),所以 n-1 > 2k+(m-1) >= 2k(即每一輪中副官總數不小於背叛者的兩倍),這樣每輪OM(m-k) 演算法中忠誠的副官收到的命令都是majority(v1,v2,...,v(n-1)),其中忠誠副官發送的命令大於或者等於一半。
接著解決拜占庭將軍問題。
定理1:對於任意m,如果有超過3m 個將軍和最多m 個背叛者,演算法OM(m) 滿足條件IC1 和條件IC2。
證明:通過m 的歸納法證明,我們通過假設OM(m-1) 成立來證明OM(m) m>0。首先考慮發送命令的將軍是忠誠的。那麼將引理中k 設為m 則OM(m) 滿足IC2 ,IC1 在發令將軍是忠誠的情況下也滿足。
接著考慮m 個背叛者中有一個是發令者,那最多就只有m-1 個副官是背叛者了,又因為有3m 個將軍,所以副官的總數超過3m-1,且有3m-1>3(m-1) 。因此通過歸納法假設 OM(m-1) 滿足IC1 和IC2(最多3(m-1) 個將軍和最多m-1 個背叛者)。那麼任意兩個忠誠的副官j 在OM(m-1) 獲得相同命令vj,那麼在OM(m) 演算法中每個忠誠的副官都會收到(v1,v2,...,v(n-1)),可知滿足條件IC1 和IC2。
看完這段證明其實我也挺糊塗的~~~~,畫了張圖來看看lamport 是怎麼證明的:
簽名消息在除了滿足口頭消息A1-A3 三點要求外還應該滿足下面A4:
A4 (a)簽名不可被偽造,一旦被篡改即可發現
(b)任何人都可以驗證將軍簽名的可靠性
下面定義一個類似於上面majority() 函數的choice() 來決定副官的選擇:1.當集合V 只包含了一個元素v ,那麼choice(V)=v ;2. choice(o)=RETREAT。
有了上面A4 和choice() 基礎我們給出SM(m) 方法:
SM(m) 演算法
初始化Vi=空集合
(1)將軍簽署命令並發給每個副官
(2)對於每個副官i :
(A)如果副官i 從發令者收到v:0 的消息,且還沒有收到其他命令序列,那麼:
(i)使Vi 為{v}
(ii)發送v:0:i 給其他所有副官
(B)如果副官i 收到消息v:0:j1:...:jk 且v 不在集合Vi 中則
(i)添加v 到Vi
(ii)如果k<m ,那麼發送v:0:j1:...:jk:i 給每個不在j1,..,jk 中的副官
(3)對於每個副官i ,當不再收到消息,則遵守命令choive(Vi)
演算法的幾點說明:
演算法第三步並沒有說明副官如何判斷沒有新的消息,可以通過兩個解決方法:一是要求每個副官收到消息後要麼簽名轉發該消息,要麼發送一個通知他將不發送這個消息;二是設置一個超時時間,如果在該時間段還沒有收到消息,則認為不再收到消息。
演算法SM(m) 中,讓副官簽名是確認其收到了該消息(有點像來了份文件給每個領導批閱)。在SM(1) 中副官收到消息就不用簽字了,因為不用轉發給其他副官。
定理2:對於任意m,最多隻有m 個背叛者情況下,演算法SM(m) 解決拜占庭將軍問題
Proof:首先證明IC2,如果發令者是忠誠的,那麼所有的副官一定收到相同的命令,因為簽名無法篡改,且IC1 也就滿足了。證明IC1 只用考慮發令者是背叛者的情況(重新回顧下IC1 是指所有忠誠的副官執行相同的命令),IC1 要求兩個忠誠的副官(i,j)必須收到相同的命令集合Vi、Vj,也就是Vi 中每個v 都在Vj 中。會存在兩種情況,其一當副官i 收到v 命令的序列後,加入到Vi,並將其發送給副官j ,j 將命令v 保存;其二副官i 收到命令v:0:j1:...:jk:i,其中有jr=j,所以 由A4 可知副官j 也收到了該命令。如果沒有,則有:
k<m。這種情況下,i 發送信息v:0:j1:...:jk:i 給副官j ,那麼j 一定收到v 。(這點感覺和上面有重復)
k=m。發令者是背叛者,最多隻有m-1 個副官是背叛者。因此,最少有一個序列j1,...,jm是忠誠的。那麼j 一定收到這個忠誠的副官序列發來的值v ,所以副官j 收到v 。
證明完畢。

❻ 區塊鏈幣就是虛擬幣嗎還是虛擬幣就是區塊鏈幣

區塊鏈技術的發展有目共睹的,但是區塊鏈幣和虛擬幣還是有本質的區別的,可以認為以實體痛點開發的區塊鏈項目,有具體的落地應用和實體支撐,來發行的區塊鏈代幣還是有一定的價值支撐的;而虛擬幣如果沒有具體的實體和應用來支撐,只是空氣幣,沒有任何的價值,那風險就比較大了。

❼ 共識演算法都包括了什麼演算法

下面列出30種共識演算法。
1. 工作量證明(PoW,Proof of Work)
2. 權益證明(PoS,Proof of Stake)
3. 延遲工作量證明(dPoW,Delayed Proof-of-Work)
4. 授權 PoS(DPoS,Delegated Proof-of-Stake)
5. 權威證明(PoA,Proof-of-Authority)
6. 權重證明(PoWeight,Proof-of-Weight)
7. 聲譽證明(PoR,Proof of Reputation)
8. 所用時間證明(PoET,Proof of Elapsed Time)
9. 容量證明(PoC,Proof of Capacity),也稱為空間證明(PoSpace,Proof of Space)
10. 歷史證明(PoHistory,Proof of History)
11. 權益流通證明(PoSV,Proof of Stake Velocity)
12. 重要性證明(PoImportance,Proof of Importance)
13. 燒毀證明(PoBurn,Proof of Burn)
14. 身份證明(PoI,Proof of Identity)
15. 活動證明(PoActivity,Proof Of Activity)
16. 時間證明(PoTime,Proof of Time)
17. 存在證明(PoExistence,Proof of Existence)
18. Ouroboros
19. 可收回證明(PoR,Proof of Retrievability)
20. 拜占庭容錯(Byzantine Fault Tolerance)
21. 授權拜占庭容錯演算法(dBFT,Delegated Byzantine Fault Tolerance)
22. RAFT
23. 恆星共識(Stellar Consensus)
24. 置信度證明(PoB,Proof of Believability)
25. 有向無環圖(DAG,Directed Acyclic Graphs)
26. Tangle(IOTA)
27. Hashgraph
28.Holochain
29. Block-Lattice(Nano)
30.SPECTRE

❽ 拜占庭將軍問題 口頭協議演算法是怎麼推導出來的

我也是額,老是卡,而且不止第一集,後面兩集也是,放一會時間就會卡一下,就像定格了一樣

❾ 拜占庭容錯演算法中的視圖v是什麼意思

POW完全依靠用經濟激勵的方式來大量增加記賬參與者,從而稀釋作惡節點的比例,或者說大幅增加作惡的成本,做假賬者需要控制或者賄賂的節點。這是一種簡單粗暴的共識機制,在演算法上沒有優化過,但是又非常可行,現在體量最大的兩條區塊

數字貨幣雙花 拜占庭將軍是什麼意思

拜占庭將軍問題在我看來是提出了一個錯誤模型。即錯誤節點可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來干壞事等等。總之就是說,沒有節點會出現比這更嚴重的錯誤。

很顯然,拜占庭錯誤是overly pessimistic的模型,因為這種錯誤實際環境中比較少見。那麼為什麼要研究這個模型呢看其中最簡單的一個原因是,如果某個一致性演算法能夠保證在系統出現f個拜占庭錯誤時保持系統一致,那麼這個演算法也就能夠保證在出現f個任意其他錯誤的時候也保持系統一致。

錯誤模型有上限,肯定也就有一個下限(overly optimistic,沒有比它還要弱的模型)。這個下限就是『fail-stop』模型。這個模型的假設是:當一個節點出錯,這個節點會停止運行,並且其他所有節點都知道這個節點發生了錯誤。用同樣的邏輯,如果某個一致性演算法不能保證在系統出現f個錯誤的時候保持一致,那麼這個演算法也就沒法處理其他f個任意其他問題。

應用這些錯誤模型,可以對不同演算法進行比較,也可以對具體演算法的cost進行討論。

熱點內容
華陽到銀泰中心怎麼去 發布:2025-09-13 00:13:23 瀏覽:148
比特幣區塊鏈什麼關系 發布:2025-09-13 00:08:47 瀏覽:38
比特幣現金2018年潛力 發布:2025-09-12 23:58:46 瀏覽:716
比特幣大陸螞蟻s7 發布:2025-09-12 23:49:30 瀏覽:157
幣圈哪個媒體可以查持幣地址 發布:2025-09-12 23:42:33 瀏覽:421
比特幣跌黃金會漲么 發布:2025-09-12 23:33:32 瀏覽:802
區塊鏈市場下旅遊如何生存 發布:2025-09-12 23:28:16 瀏覽:115
區塊鏈彩票和互聯網彩票 發布:2025-09-12 23:26:34 瀏覽:460
什麼是幣圈的交易入市金 發布:2025-09-12 23:12:46 瀏覽:21
ethtrunk介面down 發布:2025-09-12 23:11:40 瀏覽:227