AIgorand的基本原理
生活随笔
收集整理的這篇文章主要介紹了
AIgorand的基本原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
三難問題
- 安全性(雙花交易/女巫攻擊/洪流攻擊)
- 去中心化(挖礦POW機制,以太坊/比特幣)
- 規模擴展性(Tps:每一秒交易的個數)
現狀
- POW機制(挖礦),滿足了安全性和去中心化,但是限制了擴展性。因此,每秒處理的交易的個數很少,大約每一秒僅僅可以處理7筆交易。
- POS機制(聯盟鏈的選舉機制),這個是否偏離了中心化?傳統的P2P機制,每一個節點的地位是相等的,如果采用POS機制里面的大節點的選舉機制,節點僅僅付出很少的代價,就可以進行拒絕某些交易,甚至是將虛假交易包含進入區塊等行為。
相關研究
- 分片
- 鏈下交易
- 有向無環圖
AIgorand優勢
- 分叉的概率很低
- 算力要求很低,無需挖礦
- 出塊的速度很快
AIgorand介紹
?對于字符的介紹
- r:區塊的高度?
- Pay^r:這個區塊里面包含的所有交易
- Q^r-1:前一輪產生的種子
- H:哈希
- B^r:區塊的信息
- 接收時間?:對于任意一個參數?,(這個參數是指全網收到消息的用戶占據全網的百分比),在?時間內全網n個人可以互相通信,?是指消息的大小,因為網絡傳輸的消息的大小和網絡通信的速度息息相關。即,接收時間是評估針對指定大小消息在全網所有節點中傳播達到百分之幾占比所花費的時間。
- :存在兩個應用場景:1,區塊的同步;2,簽名
第r個區塊的產生
元素符號的介紹
- .H:是指將括號內的元素進行哈希運算之后,將生成的哈希碼轉化為0到1之間的一個數
- P1:26/n n是全網的用戶,這個P1的目的是從全網中選取26個節點作為領導者
- :簽名信息
- l:是從我接收到的所有潛在領導者發給我的區塊和簽名中,選擇我支持的領導者,并且將其簽名進行哈希以及轉化
算法的流程?
- 每一個用戶進行簽名(SIG),其中1是算法的第一步,Q^r-1是第r-1輪的種子,這個種子產生一般在伴隨區塊產生之后誕生,種子具備隨機性和不可預測性。
- 用戶通過比較自身的簽名函數的哈希值判斷自己是否是Potional leader(潛在的領導者),這個驗證的過程是不需要相互通信的,因此可以保證信息不會泄露。只有確認自己是Potional leader(潛在的領導者),則創建區塊并進行全網廣播
- 全網用戶根據收到的信息,確定初始值(區塊的哈希值)
- Verifier驗證節點運行BA*算法,這個算法是AIgorand的核心
- 用戶達成共識(共識會有兩種情況:1,大家對于一個有效的區塊達成共識;2,大家對于一個無效的區塊達成共識,這個無效的區塊被廢棄。),生成該輪區塊,并生成下一輪的種子
- 在生成下一輪的種子的時候,如果有領導者,則使用?,如果沒有對上一次的種子進行哈希?
?BA*算法概覽
- BA*算法有一個核心的假設,n>3t + 1,n是總共的人數,t為壞人(壞人控制的人數)的數量,這中假設是拜占庭容錯問題中十分常見。每個用戶擁有一個初始值(任意),通過BA*算法對于輸出達成一致的意見(滿足兩條共識性質)
- BA*算法是由BBA*算法和GC算法所構成的。BBA*算法是解決二元初始值達成共識的算法
- GC算法可以看做是從二元初始數值到任意初始數值的一個橋梁
BBA*算法
符號介紹
- bi:初始默認值,{0,1}
- #i(0):計數,從個人用戶的自身來看,屬于0的個數。這個符號的用法:假設屬于0的人數超過了2t,就一直廣播0,如果不是判斷屬于1的人數的個數是否超過了2t,是的話就一直廣播1。如果都不滿足,先是等待計數0和1的個數,循環執行上述整個的流程。但是這個循環次數是有次數的限制的。
流程介紹?
?
- BBA*算法考慮的是二元的初始數值,用戶通過一系列的收集信息、更新私有值,并對新的私有數值進行廣播的操作,最后以極大的概率達成共識。達成共識的概率取決于算法的循環次數,每循環一次以1/3的概率達成共識。循環次數越多,達成共識的概率越多,AIgorand中循環的次數的上限是60次,達到循環的上限次數則輸出缺省值1。
- step3的時候是不會進行終止判斷的,終止的用戶通過一直廣播自己的輸出值來引導其他用戶對于自己的輸出數值達成共識。
- 算法的直觀含義是:BBA*算法的目的就是為了對于寫入區塊鏈的數據區塊好人的個數大于壞人的個數,但是這個區塊是誠實的,不包含虛假交易的。
- GC算法是由Micali在1997年提出的,這個算法由兩個部分組成:1,共識輸出;2,?對于輸出的確信程度的評價。其中2表示完全肯定;1表示比較確定;0表示完全的不確定。所以在0的時候輸出的是default,也就是后文的區塊鏈中的空的區塊。
- GC算法的用戶策略比較簡單,就是看收到相同信息的條數是否足夠多,從而廣播與輸出不同的數值。直觀上講,如果用戶收到足夠多的相同的信息,則表明有許多的誠實用戶的初始值是一致的。
AIgorand(將BA*算法應用于區塊鏈)
- 注意事項:每一個環節都要選取不同的Verifier節點(驗證節點),因為如果每次選取的都是固定的驗證節點,那么很可能會遭到壞人的攻擊,導致安全性問題。
符號的介紹
- ??:區塊
- :用戶i對于step s的簽名
- :初始值
- 和?:延遲的時間
注意事項
- 用戶在第r輪一開始的時候,就會計算自己每一個step的哈希值,來確定自己是否是Potional leader或者是整個流程的其中一步的Verifier。
- 用戶每一次廣播都需要發布自己的簽名,下面是對于整個的流程的介紹
- 因為誠實用戶之間所差的時間不會超過一個?,因此等待時間一般為2個(1個用于消息的傳播,一個用于等待誤差)
流程的介紹
- step1:Potional Leader廣播區塊和自己的簽名
- step2:Verifier選擇初始值,并將選擇的結果和自己的簽名一起廣播,對應GC算法的step1
- step3:對應GC算法的step2,只有滿足條件的用戶才進行廣播
- step4:對應GC算法的step3,計算(vi,gi)和對(vi,gi)進行轉換
- step3K+2,3,4......:對應了BBA*算法的1,2,3步驟,終止條件類似于BBA的終止條件,這里的CERT^r為上一步中廣播的0(1)的用戶的集合(只有在終止的條件時才會出現),最終輸出的時候需要按照先前提到的方法進行轉換。如果達到了3m+4步依舊沒有終止,輸出缺省值為空的區塊。
時間線
- 存在一個定理:保證了對于任意一個區塊,所有的用戶的開始時間和結束時間都幾乎是相同的,存在誤差,這也保障了AIgorand算法的同步性。這個定理的證明十分的復雜,核心思想是采用了歸納法,對于不同的輸出進行分情況討論。
應對女巫攻擊
- 用戶的資產是作為用戶被選取為Verifer的概率的指標,這個概率的指標和資產數量是成正比的,圖中的w是指用戶的資產數量。通過確定哈希數值所屬的區間(區間長度為二項分布)來確定用戶的權重。
- 使用二項分布作為區間的好處是用戶是無法通過拆分資產來達到提高自身權重的目的,這個方法的本質是隨機化的POS。?
參考鏈接
- BFTF第一期知享會——張季恒:Algorand的基本原理
- 對應的ppt講義
總結
以上是生活随笔為你收集整理的AIgorand的基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五个经济特区(我国的5个经济特区)
- 下一篇: 农行信用卡分期付款买手机流程?这些事项要