日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Algorand 共识算法 BA* 入门

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Algorand 共识算法 BA* 入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Algorand 由圖靈獎獲得者 Micali 提出的,其共識機制被稱為 BA*,是 PBFT 算法的改進。BA* 算法分為三階段:區塊生成、GC 和 BBA*。算法的停止時間是不確定的,但大概率保證在有限步內結束。

協議里有兩種角色:Leader 和 Verifier

  • Leader:在區塊生成階段創建區塊;
  • Verifier:在之后的每一個階段里,對區塊進行共識。

下面對 BA* 協議的細節做一個具體介紹。

符號

  • :第 r 輪第 s步
  • :第 r 輪的 leader
  • :的 verifier 集合。如果 s=1,則為 potential leader 集合
  • 和:的誠實 Verifier 和惡意 Verifier 集合
  • :第 r 輪里節點 i 生成的區塊
  • :空區塊。生成空區塊的那一輪是不存在leader的。
  • :節點 i 在簽名消息所用的臨時密鑰。每個都有對應的臨時密鑰。
  • : i 的簽名,用于證明
  • :節點 i 在廣播的消息。根據不同,消息格式也不一樣
  • :在第 r 輪時已加入系統的所有節點的公鑰集合

基本概念

種子

是第 r 輪的種子,用于選舉 Leader 和 Verifier。的計算方式如下:

  • 如果是合法區塊,則
  • 如果,即空區塊,則

Leader 選舉

對于,計算如果滿足,則 i 為 potential leader。

其中最小的節點為真正的 leader。

Verifier 選舉

Verifier 選舉的方式和 Leader 選舉的方式一樣:對于,計算如果滿足,則 i 為 Verifier

區塊結構

區塊結構不是協議重點,但還是提一下。

  • 如果是合法區塊,則
  • 如果,即空區塊,則

BA*共識

BA*由三個部分組成

  • 生成區塊(s=1,即第一步):所有節點檢查自己是不是potential leader,如果是,則生成區塊并廣播
  • GC協議(2≤s≤3):有點像PBFT的后兩個階段,verifier 會生成1個二進制值
  • BBA(s≥4):BBA共識的修改版。每次 BBA都由3步組成,會不斷地循環。什么時候結束是不確定的,依概率結束。
  • BA*將 leader 所生成的區塊映射成二進制值,分別表示區塊合法與否。

    • 合法:共識結束后生成一個正常區塊
    • 不合法:共識結束后生成空區塊()

    約定

    假設

  • 每一步中,都有,即誠實Verifier比例大于Verifier集合的2/3。(P31.Parameters第1點)
  • 對于發的消息,最多經過時間能被誠實節點收到。(P45第6行)
  • 執行前提

    :節點 i 根據「Leader選舉規則」檢查自己是不是 potential leader。如果不是,結束該 step,否則執行相應規則。

    :節點 i 根據「Verifier選舉規則」檢查自己是不是 vefier。如果不是,結束該 step,否則執行相應規則。

    下文協議細節描述里,默認有這些檢查。

    簽名

    和都表示用當前的臨時密鑰來簽名消息。

    Step 的開始和結束

    開始時間:一個節點在達成共識后,會同時進入每個Step(論文 P44.Lemma 5.5(a))。但并不是所有節點同時開始。

    • 設第一個誠實節點達成共識的時間是,則在時間內,所有的誠實節點都會達成共識。
    • 為什么是,見分析的 2.1.a 和 2.1.b(論文 p50-52)

    結束時間:Step 結束的條件有兩種

    • 達成 Ending Condition 條件
    • 耗盡等待時間:第s步的等待時間為,表示的廣播時間上限,表示的廣播時間上限?!镜珵槭裁词?】
      • 時沒有等待時間,因為不需要接收消息。
      • 論文中默認等待后,能收到所有誠實節點在小于的step里發送的消息。

    Step 1 生成區塊

    這一步生成區塊并廣播

  • 生成區塊
  • 生成。其中表示用進行簽名的,簽名完后銷毀。
  • 廣播和
  • 備注

    • 其他節點通過驗證是否有,以檢查 i 是否有資格進行該步。
    • 敵手收到所有的后,就能知道誰是leader,并立即控制它廣播新的,阻止它原來的廣播出去。這樣敵手就可以控制每一輪的 leader。廣播后銷毀就是為了避免這種情況發生,因為即使敵手控制了leader,也無法讓他發送新的。

    GC

    Step 2:GC第一步

  • 從收到的多個里找到,即最小的節點。
  • 檢查發來的區塊的合法性:若合法,令;若不合法,令。
  • 廣播
  • 備注

    • 是協議要共識的值,在協議中不會用到。
    • 整個協議里只有這一步檢查 Leader 和區塊的合法性

    Step 3:GC第二步

  • 在收到的中,如果有超過 2/3 的(他們的全部相同),則令;否則,則令
  • 廣播
  • Step 4:GC輸出

  • 收到的中,有 3 種可能出現的情況
  • 如果有超過的,則令
  • 如果有超過的,且,則令。這里可以保證只有唯一的超過1/3的值。
  • 否則令
  • 廣播
  • 備注:表示區塊合法,表示區塊不合法

    【思考】:在誠實節點中,似乎不會出現部分,部分的場景,而是會全部共識到合法區塊或空區塊。惡意的和Verifier不能對下一步的誠實節點進行單播,因為他們不知道下一步的誠實節點是誰。

    BBA*

    在BBA*中,會不斷對收到的歷史進行檢查,查看是否觸發Ending Condition

    以下兩個結束條件是互斥的

    【Ending Condition 0】

    • 條件:收到超過的,且有;同時在中對應的區塊是合法的(注意是區塊的哈希)
    • 滿足條件則達成共識,將相應的集合作為,停止該輪。

    【Ending Condition 1】

    • 條件:收到超過的,且有
    • 滿足條件則達成共識, 將相應的集合作為,停止該輪。

    Step 5:Coin-Fixed-To-0

    當時進行這一步時,如果觸發Ending Condition 0 或 1,則停止。否則等待后

    • 在收到的中,有超過2/3比例的,則令,否則另
    • 廣播
    • 【為什么要令和0】

    Step 6:Coin-Fixed-To-1

    和 Coin-Fixed-To-0 類似,當時進行這一步時,如果觸發 Ending Condition 0 或 1,則停止。否則等待后

    • 在收到的中,有超過2/3的,則令,否則令
    • 廣播

    Step 7:Coin-Genuinely-Flipped

    當時進行這一步,如果觸發 Ending Condition 0 或 1,則停止。否則等待后

    • 可能出現三種互斥的情況:
      • 在收到的中,有超過2/3的,則令
      • 在收到的中,有超過2/3的,則令
      • 否則令
    • 廣播

    Step m+3:最后一步

    這一步比較特殊,不用檢查自己是不是Verifier,所有節點都要參與。

    如果觸發Ending Condition 0 或 1,則停止。否則等待后

    • 令和
    • 廣播

    達成共識,收集集合作為。

    總結

    【達成共識的情況】:有三種,分別是 Ending Condition 0、Ending Condition 1 和 Step m+3。

    【Ending Condition】

  • 若因為收到超過 2n/3 的而觸發 Ending Condition,則在的 step 里,肯定是因為耗盡等待時間而結束step。
  • 觸發 Ending Condition 0,則一定是 Coin-Fixed-To-0;如果觸發 Ending Condition 1,則一定是 Coin-Fixed-To-1。
  • Ending Condition 要求收到的個數要超過確定值,而其他的都只要求收到的中有2/3滿足條件即可。
  • 拜占庭共識要保證參與共識的誠實節點大于2/3,但隨機選出的集合不能保證該條件。于是

  • 進行多次的隨機選取(循環),只要有一次參與共識的誠實節點大于 2/3,就能達成共識。
  • 如果不進行多次隨機選取(循環),則惡意節點每次把合法區塊變成空區塊的概率就會大大增加。
  • 臨時密鑰

    在每一個里,節點 i 所用的使用臨時密鑰簽名消息。一旦消息廣播出去,立即銷毀簽名所用的私鑰。

    這么做的理由:節點 i 發送消息的瞬間,敵手可以立即知道,就可以collud它,用它的重新簽名消息并廣播。比如敵手可以這么攻擊

    • 時:則每一輪敵手都可以控制 leader
    • 時,敵手可以有策略地控制verifier,使得每一輪都共識成空區塊

    節點 i 每次會生成100萬輪*180步的臨時密鑰(在加入系統或臨時密鑰用完時生成)。下面簡單介紹兩種生成方案(論文 p32)

    第一種方案

  • i 生成 PMK 和 SMK
  • 廣播 PMK
  • 通過 SMK 和計算出100萬輪*180步的。計算完后銷毀 SMK
  • 任何人可以通過 PMK 和計算出(這一步論文里沒有寫,是我猜的)
  • 第二種方案

    • i 生成100萬輪*180步的公私鑰對
    • 利用全部的私鑰生成 Merkle Tree,廣播 Root。
    • i 廣播時,附帶公鑰和 Merkle Tree的驗證路徑

    https://zhuanlan.zhihu.com/p/32282367

    總結

    以上是生活随笔為你收集整理的Algorand 共识算法 BA* 入门的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。