Algorand協(xié)議詳解

原文鏈接:https://mp.weixin.qq.com/s/FD_zkmNcLHv440Y2oqpoag

Algorand背景介紹 (Background)

Algorand是MIT機(jī)械工程與計(jì)算機(jī)科學(xué)系SilvioMicali教授與合作者于2016年提出的一個(gè)區(qū)塊鏈協(xié)議鸦致,主要是為了解決比特幣區(qū)塊鏈采用的pow共識(shí)協(xié)議存在的算力浪費(fèi)拼窥,擴(kuò)展性弱、易分叉蹋凝、確認(rèn)時(shí)間長(zhǎng)等不足。因此SilvioMicali教授在algorand區(qū)塊鏈協(xié)議中提出了一種新的共識(shí)協(xié)議BA总棵,其目標(biāo)是:
1.能耗低鳍寂,不管系統(tǒng)中有多用戶,大約每1500名用戶中只有1名會(huì)被系統(tǒng)挑中執(zhí)行長(zhǎng)達(dá)幾秒鐘的計(jì)算情龄。
2.民主化迄汛,不會(huì)出現(xiàn)類似比特幣區(qū)塊鏈系統(tǒng)的“礦工”群體。
3.出現(xiàn)分叉的概率低于一兆分之一(即10-18)骤视。假設(shè)Algorand中平均每分鐘產(chǎn)生一個(gè)區(qū)塊鞍爱,這個(gè)概率意味著平均每190萬(wàn)年出現(xiàn)一次分叉。
4.可拓展性好专酗。

Algorand概述 (Algorand, in aNutshell)

(一) 假想環(huán)境 (Setting)
1.在無(wú)需準(zhǔn)入(permissionless)和需要準(zhǔn)入(permissioned)環(huán)境下都能正常工作睹逃,當(dāng)然在需要準(zhǔn)入的環(huán)境下能表現(xiàn)得更好。
2.敵手能力很強(qiáng)(VeryAdversary Environments)

  1. 可以立刻腐蝕(corrupt)任何他想要的用戶(user),前提條件是:在無(wú)需準(zhǔn)入的環(huán)境中沉填,需要2/3以上的金額(money)屬于誠(chéng)實(shí)(honest)用戶疗隶;而在需要準(zhǔn)入且一人一票的環(huán)境中,需要2/3以上的誠(chéng)實(shí)用戶
  2. 完全控制和完美協(xié)調(diào)已腐蝕的用戶
    3)調(diào)度已腐蝕用戶所發(fā)送的所有信息翼闹,前提條件是斑鼻,誠(chéng)實(shí)用戶發(fā)送的消息需要在一定的時(shí)間內(nèi)發(fā)送到95%以上的其他誠(chéng)實(shí)用戶,而其延遲只和消息大小有關(guān)猎荠。

(二) 主要特點(diǎn) (Main Properties)

  1. 計(jì)算量為最優(yōu)坚弱,不論系統(tǒng)中存在多少用戶,每1500個(gè)用戶的計(jì)算量之和最多僅為幾秒鐘
  2. 一個(gè)新的區(qū)塊在10分鐘內(nèi)被生成关摇,并且永遠(yuǎn)不會(huì)因分叉問題而被主鏈拋棄荒叶,事實(shí)上Algorand發(fā)生分叉的概率微乎其微
  3. 沒有礦工,所有有投票權(quán)的用戶都有機(jī)會(huì)參與新塊的產(chǎn)生過程

(三) Algorand采用的技術(shù) (Algorand’s Techniques)

  1. 一種新的拜占庭共識(shí)(BA: Byzantine Agreement)協(xié)議拒垃,即BA*停撞,這也是后文將重點(diǎn)介紹的協(xié)議
  2. 采用密碼學(xué)抽簽:BA*協(xié)議中每一輪參與投票的用戶都可以證明確實(shí)是隨機(jī)選取的
  3. 種子參數(shù):選取完全無(wú)法預(yù)測(cè)的種子參數(shù),從而保證不被敵手所影響悼瓮,上一輪的種子參數(shù)會(huì)參與下一輪投票用戶的生成
  4. 秘密抽簽和秘密資格:所有參與共識(shí)投票的用戶都是秘密地得知他們的身份戈毒,投票后他們的身份被暴露,雖然敵手可以馬上腐蝕他們横堡,但是他們發(fā)送的消息已經(jīng)無(wú)法被撤回埋市,另外在消息生成后,用于簽名的一次性臨時(shí)秘鑰(后文會(huì)提到)會(huì)立刻被丟棄命贴,使得敵手在該輪無(wú)法再次生成任何合法消息
  5. 用戶可替換(player-replacable):在拜占庭協(xié)議中道宅,每個(gè)參與共識(shí)者需要投票多輪以達(dá)成共識(shí),而在BA*中這并不可行胸蛛,因?yàn)橐坏┩镀焙笞约壕捅┞读宋垡穑瑫?huì)被敵手腐蝕。配合密碼學(xué)秘密抽簽葬项,用戶會(huì)秘密知道自己有且只有參與某特定時(shí)刻的投票的資格泞当,只要在該時(shí)刻參與投票,因?yàn)榻酉聛硗镀睓?quán)會(huì)轉(zhuǎn)移給別人民珍,這就使敵手的腐蝕失去了意義襟士。
    另外,誠(chéng)實(shí)的用戶可以是懶惰的(Lazy Honesty)嚷量。一個(gè)用戶不需要時(shí)刻在線陋桂,可以根據(jù)適當(dāng)?shù)臈l件適當(dāng)在線并參與共識(shí)即可。

Algorand的前置條件 (Preliminaries)

(一) 密碼學(xué)前置條件 (Cryptographic Primitives)

1.理想(ideal)的hash函數(shù)
給定一個(gè)hash函數(shù)H蝶溶,可以生成任意長(zhǎng)度字符串s的hash值H(s)嗜历。要求在給定H(s)的長(zhǎng)度后,能做到分布是完全均勻和獨(dú)立于s的(H as a random oracle)。在本文中秸脱,H(s)的長(zhǎng)度固定為256位比特(256-bit long)落包,事實(shí)上這個(gè)長(zhǎng)度已經(jīng)能夠抵抗碰撞(collision-resilient),即給定兩個(gè)字符串x摊唇,y咐蝇,其H(x)=H(y)的概率足夠小(根據(jù)生日悖論,發(fā)生碰撞需要的嘗試次數(shù)約為2256/2=2128)巷查。

2.數(shù)字簽名(Digital Signing)
數(shù)字簽名體系(digital digning scheme)包括三個(gè)高效函數(shù):基于概率的公私鑰生成(key generator)函數(shù)G有序,簽名算法(signing algorithm)S,以及驗(yàn)證算法(verification algorithm)V岛请。
定義用戶i對(duì)消息m的簽名如下:

image

其中pki和ski為用戶i的公鑰和私鑰旭寿。這里使用H(m)是利用了其能夠抵抗碰撞的特性。

通過V可以驗(yàn)證這個(gè)簽名:

若s = sigi(m)崇败,則V(pki,m, s) = YES

并且數(shù)字簽名很難被偽造盅称,即很難找到另外一個(gè)m使得V(pki, m, s) = YES成立。作為用戶i要做的后室,就是保管好自己的私鑰ski缩膝,并公開其對(duì)應(yīng)的公鑰pki,使得其他人能夠驗(yàn)證簽名岸霹。

一般情況下是不能從簽名sigi(m)中還原m的疾层,同時(shí)需要用戶信息而找到其對(duì)應(yīng)的公鑰,所以一般情況下的“簽名”贡避,包括用戶身份信息i痛黎,消息原文m,以及對(duì)應(yīng)的簽名刮吧,定義如下:

image

數(shù)字簽名應(yīng)該是唯一的湖饱,即通過數(shù)字簽名體系(G, S, V),很難找到兩個(gè)不同的簽名s ≠ s’杀捻,使得V(pk, m, s) =V(pk, m, s’) = 1琉历。

在Algorand里,用戶使用數(shù)字簽名來:

為交易生成簽名

生成憑證(credential)水醋,用以證明自己有投票權(quán)

為消息m生成簽名,這里需要使用一次性臨時(shí)秘鑰

(二) 理想的公開賬本 (The Idealized Public Ledger)

在Algorand中彪置,我們假設(shè)賬本的模型如下:

1.擁有一個(gè)初始狀態(tài)(Initial Status)拄踪,假設(shè)每個(gè)公鑰pk1,… 拳魁,pkj以及其對(duì)應(yīng)的金額為a1惶桐,…,aj,表示如下:

S0= (pk1, a1), …, (pkj, aj)

并且這個(gè)狀態(tài)作為系統(tǒng)公共常識(shí)(common knowledge of the system)而存在姚糊。

2.交易(Payments)贿衍,我們定義交易如下:

?= SIGpk(pk, pk’, a’, I, H(I’))

pk和pk’分別為支付方和接收方的公鑰,在這里公開的信息為I救恨,敏感信息I’被H混淆贸辈。

  1. 魔法賬本(The Magic Ledger),這是一個(gè)無(wú)法篡改的列表肠槽,定義為:

L= PAY1, PAY2, …

每個(gè)PAYr+1都包括了該塊中所有的交易擎淤,并且只在PAYr之后加入,理想狀態(tài)下秸仙,一個(gè)新的塊會(huì)在固定或有限(fixed or finite)的時(shí)間內(nèi)加入賬本嘴拢。

這個(gè)賬本模型比比特幣的賬本模型更加一般化,每個(gè)公鑰相當(dāng)于一個(gè)錢包寂纪,其金額可以通過查詢當(dāng)前的狀態(tài)Sr得到席吴,而Sr是通過S0經(jīng)過L = PAY1, …, PAYr線性變換后計(jì)算得到。

(三) 基本概念和符號(hào) (Basic Notions and Notations)**

  1. 公鑰捞蛋,用戶和擁有者(Keys,Users, and Owners)孝冒,一般情況下,公鑰和用戶其實(shí)是等價(jià)的襟交,而擁有者一般是表示擁有這個(gè)錢包的使用權(quán)迈倍,即擁有這個(gè)公鑰對(duì)應(yīng)的私鑰,當(dāng)一個(gè)公鑰j付款給另一個(gè)公鑰i后捣域,可以理解為用戶i加入了系統(tǒng)啼染。

  2. 無(wú)需準(zhǔn)入和需要準(zhǔn)入的系統(tǒng)(Permissionlessand Permissioned Systems),如果一個(gè)公鑰可以隨意加入系統(tǒng)焕梅,一個(gè)用戶可以擁有多個(gè)公鑰迹鹅,則這是一個(gè)無(wú)需準(zhǔn)入的系統(tǒng),否則便是一個(gè)需要準(zhǔn)入的系統(tǒng)贞言。

  3. 同速時(shí)鐘(Same-SpeedClocks)斜棚,用戶之間的時(shí)間可以不同,但是時(shí)鐘的走速必須相同该窗。

  4. 輪次(Round)弟蚀,Algorand的輪次對(duì)應(yīng)于區(qū)塊鏈的塊高度的概念,我們統(tǒng)一使用上標(biāo)表示輪次酗失。在輪次r>0開始前义钉,所有公鑰的集合為PKr,而其系統(tǒng)狀態(tài)為:

image

注意其中
image

是公鑰i對(duì)應(yīng)的金額规肴,在這里因?yàn)閍是一個(gè)數(shù)字捶闸,我們采用了(r)以區(qū)別于a的r次方夜畴。注意到PKr是能夠從Sr中獲得的,而Sr中也能包括除了公鑰和金額外的其他狀態(tài)删壮√盎妫可以理解,在輪次0央碟,PK0和S0作為初始公鑰集(initial public keys)和初始狀態(tài)(initial status)税灌,是系統(tǒng)的公共常識(shí)。而在輪次r硬耍,已經(jīng)變?yōu)镻K1垄琐,… ,PKr和S1经柴,… 狸窘,Sr。在輪次r坯认,系統(tǒng)從S1遷移到Sr+1翻擒,即:

image
  1. 正式交易集(OfficialPaysets),第r輪的交易集即PAYr是由該輪次的所有交易所組成牛哺。而通過Algorand算法選出的交易集(可能為空集)即為正式交易集陋气。用戶只有在某輪次通過正式交易集中接收了一定金額之后,才被認(rèn)為加入了系統(tǒng)引润。事實(shí)上正式交易集PAYr是狀態(tài)Sr到狀態(tài)Sr+1的映射:
image

不難理解巩趁,一個(gè)理想的系統(tǒng)中,可以從S0和PAY0淳附,… 议慰,PAYr獲取Sr+1

(四) 塊和證明塊 (Blocks and Proven Blocks)

一個(gè)塊包括輪次r奴曙,該輪的正式交易集PAYr,一個(gè)隨機(jī)種子Qr洽糟,以及上一個(gè)塊的hash炉菲,也就是說從B0之后,一個(gè)傳統(tǒng)的區(qū)塊鏈大致如下所示:

image

當(dāng)一個(gè)區(qū)塊Br附帶上憑證(certificate)坤溃,標(biāo)記為CERTr拍霜,之后得到已經(jīng)證明的塊(proven block)

image

。如此以來薪介,魔法賬本其實(shí)是一串已證明的塊:

image

(五) 敵手模型 (The Adversarial Model)

  1.  誠(chéng)實(shí)和惡意用戶(Honest and Malicious Users)沉御,誠(chéng)實(shí)用戶的行為完全符合預(yù)定規(guī)則,如執(zhí)行相應(yīng)邏輯昭灵,收發(fā)信息等等吠裆,而這里的惡意(malicious)是指任何違反預(yù)定規(guī)則的行為,即拜占庭錯(cuò)誤
    
  2.  敵手(The Adversary)烂完,敵手是一個(gè)有效的算法试疙,即可以在多項(xiàng)式時(shí)間內(nèi),可以在任何時(shí)間抠蚣,使任何用戶變?yōu)閻阂庾?酰锤?corrupt)用戶,并且可以完全控制和協(xié)調(diào)所有惡意用戶嘶窄,可以以用戶名字做出任何違反規(guī)則的行為怀跛,或是簡(jiǎn)單地選擇不收發(fā)任何消息。在用戶做出任何惡意行為前柄冲,沒人能知道他已經(jīng)被腐化了吻谋,而特定的行為能夠暴露其已經(jīng)被腐化的事實(shí)。但是這個(gè)敵手:
    

被約束在算力和密碼學(xué)的范圍內(nèi)现横,即基本不能偽造誠(chéng)實(shí)用戶的數(shù)字簽名
無(wú)法干擾誠(chéng)實(shí)節(jié)點(diǎn)之間的消息傳送漓拾。

  1. 好人掌錢(HMM: Honesty Majority of Money),我們假定一個(gè)連續(xù)的好人掌錢模型戒祠,對(duì)于一個(gè)非負(fù)整數(shù)k和一個(gè)實(shí)數(shù)h > 1/2骇两,我們認(rèn)為好人在第r-k輪掌握的錢的比例是大于h的。Algorand采用“向前看”的策略姜盈,即在第r輪參與投票的候選人低千,是從r-k輪選出來的,所以即使整個(gè)網(wǎng)絡(luò)在r-k被腐化了馏颂,其真正掌權(quán)也需要等到地r輪示血。
    

(六) 通信模型(The Communication Model)

同比特幣一樣,Algorand采用點(diǎn)對(duì)點(diǎn)緋聞通信協(xié)議來完成消息的傳播饱亮。

如果把消息的到達(dá)率(reachability)表示為ρ矾芙。模型認(rèn)為一條消息被誠(chéng)實(shí)用戶發(fā)出到超過ρ的人接收到的時(shí)間只和消息長(zhǎng)度μ ∈ Z+有關(guān),定義該函數(shù)為λρ,μ近上。即從時(shí)間t發(fā)出的一條大小為μ的消息剔宪,一定能在t+λρ,μ之前到達(dá)比例為ρ的誠(chéng)實(shí)用戶。

Algorand面臨的是多個(gè)用戶同時(shí)發(fā)送各自消息壹无,并且還要幫助其他用戶傳遞合法消息的模型葱绒。所以函數(shù)λ被認(rèn)為和三個(gè)變量相關(guān),到達(dá)率ρ斗锭,消息長(zhǎng)度μ ∈ Z+以及用戶數(shù)n地淀。模型修改為對(duì)所有的誠(chéng)實(shí)用戶n,在t時(shí)刻同時(shí)發(fā)送了各自的長(zhǎng)度為μ ∈ Z+的消息m1岖是,… 帮毁,mn实苞,則所有這些消息一定能在t+λn,ρ,μ之前到達(dá)比例為ρ的誠(chéng)實(shí)用戶。為了簡(jiǎn)化烈疚,后文一般情況下會(huì)使ρ=1黔牵,并且不再提及到達(dá)率的問題。另外爷肝,敵手是可以控制任何用戶猾浦,以加速某些消息的到達(dá)時(shí)間。

Algorand實(shí)例化 (Embodiments of Algorand)
Algorand能夠在同步和異步網(wǎng)絡(luò)中工作灯抛。為了方便理解金赦,可以將其網(wǎng)絡(luò)環(huán)境假想為一個(gè)同步完全網(wǎng)絡(luò) (SC networks: synchronous complete networks)。在這樣的網(wǎng)絡(luò)環(huán)境下对嚼,假設(shè)存在一個(gè)全局時(shí)鐘夹抗,每次計(jì)時(shí)都是在整數(shù)點(diǎn)上r=1,2猪半,…兔朦。在每個(gè)偶數(shù)點(diǎn)r,網(wǎng)絡(luò)中的用戶i獨(dú)立并發(fā)地發(fā)送一個(gè)消息!](http://upload-images.jianshu.io/upload_images/3959874-1fe79fd6208bc00d?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

(消息可以為空)磨确,而在r+1的時(shí)刻沽甥,j就可以收到這個(gè)消息,j知道消息是從i處發(fā)送的乏奥。敵手可以在任何奇數(shù)時(shí)間點(diǎn)上發(fā)動(dòng)攻擊摆舟,腐化誠(chéng)實(shí)用戶拥峦,聯(lián)合惡意用戶隙轻,控制其邏輯和消息發(fā)送等行為。

(一) 目標(biāo) (Objectives)

在理想情況下粘优,共識(shí)協(xié)議的最終目的為:

  1. 完全正確性(Perfect Correctness)骗炉,即所有的誠(chéng)實(shí)用戶都共識(shí)在Br上照宝。

  2. 完整性為1(Completeness 1):以1的概率,Br包含的交易集PAYr句葵,是最大化的(maximal)厕鹃,也就是包含盡可能多的有效交易。

而Algorand的目標(biāo)更加現(xiàn)實(shí)乍丈,因?yàn)橛袗阂庥脩舻拇嬖诩敛辏绻僭O(shè)誠(chéng)實(shí)用戶的占比h>2/3,非正式地描述轻专,Algorand的目標(biāo)是:

  • 保證以壓倒性的概率做到完全正確忆矛,并且完整性接近h。

犧牲完整性帶來的壞處是降低交易效率请垛,但正確性得以保證催训,排除了分叉的風(fēng)險(xiǎn)洽议。

(二) 出塊者和驗(yàn)證者(Leader and Verifiers)**

Algorand采用了抽簽的方式來獲知自己的身份。

對(duì)于出塊者而言漫拭,其出塊權(quán)的計(jì)算公式為:

.H(SIGi(r,1, Qr-1)) ≤ p

這里Qr-1是隨機(jī)表示種子绞铃,后文會(huì)介紹其公式。.H函數(shù)表示把H函數(shù)的輸出字符串均勻地匹配到[0,1]區(qū)間之中去嫂侍。這樣以來,可以直接和概率作比較計(jì)算荚坞。在出塊時(shí)挑宠,如果誠(chéng)實(shí)用戶發(fā)現(xiàn)自己有出塊權(quán)(.H≤p),會(huì)選擇按照最大化的原則出塊颓影,同時(shí)可能有多個(gè)用戶滿足.H≤p各淀。

驗(yàn)證者具有投票權(quán),其計(jì)算公式為:

.H(SIGi(r, s, Qr-1)) ≤ p’

其中s既是步驟(step)诡挂,從第二步開始碎浇,所有的驗(yàn)證者都采用這個(gè)公式。且每一步的p’都是一樣的璃俗。如果誠(chéng)實(shí)的用戶發(fā)現(xiàn)自己有驗(yàn)證權(quán)(.H≤p’)奴璃,會(huì)在對(duì)應(yīng)的步驟投票。

(三) 塊的生成 (Glock Generation)**

輪次r的出塊者lr不一定是誠(chéng)實(shí)的城豁,若為誠(chéng)實(shí)苟穆,則出塊形式應(yīng)為:

image

若出塊者為惡意,其出塊形式會(huì)是以下兩種之一:

image

要注意唱星,若PAYr確實(shí)為空集雳旅,其

image

,要注意這和空集是不同的间聊,前者表示一切正常攒盈,但是后者表示出錯(cuò)了,因此輸出了默認(rèn)值哎榴。

不論那種表示形式型豁,其隨機(jī)數(shù)種子保存在第三項(xiàng)中,供用戶計(jì)算憑證所用叹话。

(四) 隨機(jī)數(shù)種子Qr和向后看參數(shù)k (The Seed Q r and the Look-Back Parameter k)**

Algorand的隨機(jī)數(shù)種子可以從上一輪的塊的第三項(xiàng)中獲取偷遗,計(jì)算公式為:

image

另外為了防止敵手控制,Algorand引入了向后看參數(shù)k驼壶,第r輪的共識(shí)參與者氏豌,需要在第r-k輪加入系統(tǒng)。

隨機(jī)數(shù)種子和向后看參數(shù)的引入都是為了增加敵手根據(jù)當(dāng)前的狀態(tài)預(yù)測(cè)將來的難度热凹,從而無(wú)法準(zhǔn)確選擇腐蝕目標(biāo)泵喘。

(五) 概念(Notations)

r ≥ 0:當(dāng)前輪次

s ≥ 1:當(dāng)前步驟泪电,其中第一步出塊,后面步全部是投票

Br:輪次r的出塊

PKr:在第r-1輪結(jié)束以及第r輪開始時(shí)的公鑰集合

Sr:在第r-1輪結(jié)束以及第r輪開始時(shí)的系統(tǒng)狀態(tài)

PAYr:Br中的交易集

lr:輪次r的出塊者(leader)纪铺,出塊者可以選擇輪次r的交易集PAYr

SVr,s:輪次r相速,步驟s的驗(yàn)證者集

SVr:輪次r的驗(yàn)證者集,SVr = ∪s≥1SVr,s

MSVr,s和MSVr,s:誠(chéng)實(shí)用戶和惡意用戶集合鲜锚,易知MSVr,s∪HSVr,s= SVr,s 以及 MSVr,s∩HSVr,s=?

n1 ∈ Z和n ∈ Z+:出塊者集和驗(yàn)證者集的成員個(gè)數(shù)的期望值突诬,注意到n1<<n,因?yàn)橹灰诟怕噬媳WC出塊者集中至少有一個(gè)誠(chéng)實(shí)用戶芜繁,而驗(yàn)證者集中誠(chéng)實(shí)用戶要占多數(shù)

h ∈ (0, 1):一個(gè)大于2/3的常數(shù)旺隙,代表誠(chéng)實(shí)用戶在系統(tǒng)中的比例,表示誠(chéng)實(shí)用戶或者在誠(chéng)實(shí)用戶手中的金額在每個(gè)PKr中的比例至少為h

H:密碼學(xué)隨機(jī)函數(shù)

⊥:一個(gè)特殊字符串骏令,表示默認(rèn)值蔬捷,其長(zhǎng)度等于H的輸出

F ∈ (0, 1):一個(gè)參數(shù),用來表示允許的錯(cuò)誤概率榔袋,當(dāng)≤F時(shí)可以認(rèn)為不可能發(fā)生周拐,概率≥1-F可以認(rèn)為幾乎必然發(fā)生

ph ∈ (0, 1):出塊者是誠(chéng)實(shí)的概率,理想情況下等于h凰兑,在有敵手的情況下妥粟,需要分情況討論分析

k∈ Z:向后看參數(shù),第r輪的出塊者和驗(yàn)證者在第r-k輪產(chǎn)生(嚴(yán)格說來聪黎,應(yīng)為max{0, r-k}輪產(chǎn)生)罕容,即SVr? PKr?k

p1 ∈ (0, 1):在輪次r的第一輪,在r-k輪的用戶被選入出塊者集SVr,1的概率

image

p∈ (0, 1):在輪次r的第s輪稿饰,在r-k輪的用戶被選入出塊者集SVr,s的概率

image

CERTr:Br的憑證集合锦秒,集合的憑證(即對(duì)H(Br)的簽名)數(shù)應(yīng)該大于tH

image
:被證明的塊
image
:用戶i知道B<sup>r</sup>的本地時(shí)間喉镰,Algorand允許每個(gè)用戶有自己的獨(dú)立時(shí)間旅择,只要其時(shí)鐘走速相同即可
image
:每個(gè)用戶i在第r輪第s步的開始和結(jié)束時(shí)間

Λ和λ:表示執(zhí)行第一步和其他步的時(shí)間上限

(六) 參數(shù) (Parameters)**

  1. 參數(shù)間的關(guān)系
    

在輪次r,投票者和候選的出塊者從集合PKr-k中選出侣姆。選擇k使得敵手無(wú)法在輪次r-k-1以高于F的概率預(yù)測(cè)Qr-1生真,否則的話敵手可以在r-k輪引入惡意用戶,他們可能成為第r輪的出塊者或候選者

在每輪的第一步捺宗,選取n1使得SVr,1不為空集

  1. 重要參數(shù)的選取
    

H的輸出為256比特長(zhǎng)

h=80%柱蟀,n1=35

Λ=1分鐘,λ=10秒鐘

  1.  協(xié)議初始化蚜厉,協(xié)議在時(shí)間0长已,輪次0開始,因?yàn)闆]有B<sup>-1</sup>或CERT<sup>-1</sup>,規(guī)定B<sup>-1</sup>是一個(gè)公開的參數(shù)术瓮,在其中包括Q<sup>-1</sup>康聂,所有的用戶都在時(shí)間0知道B<sup>-1</sup>
    

BA共識(shí)*

Algorand的拜占庭共識(shí)協(xié)議BA,按順序包括出塊者(Leader)選舉胞四,分級(jí)共識(shí)(GC:Graded Consensus)協(xié)議和二元拜占庭(BBA)協(xié)議幾個(gè)步驟恬汁。這里涉及到額外幾個(gè)概念和參數(shù)。

(一) 概念 (Notations)**

  1.  m∈ Z<sup>+</sup>:BBA*中的步數(shù)辜伟,是3的倍數(shù)
    
  2.  L<sup>r </sup>≤ m/3:一個(gè)隨機(jī)變量氓侧,是伯努利試驗(yàn)?zāi)芸吹剑钡膰L試次數(shù),每次嘗試的概率為P<sub>h</sub>/2导狡,最多嘗試m/3次甘苍,所有嘗試都失敗時(shí),L<sup>r</sup> = m/3烘豌,L<sup>r</sup>決定了需要生成B<sup>r</sup>的時(shí)間上限
    
  3.  t<sub>H</sub> = 2n/3 + 1:協(xié)議需要的簽名個(gè)數(shù)
    
  4.  CERT<sup>r</sup>:B<sup>r</sup>的憑證集,包含t<sub>H</sub>個(gè)第r輪的驗(yàn)證者對(duì)于H(B<sup>r</sup>)的合法簽名
    

(二) 參數(shù) (Parameters)**

  1. 參數(shù)間的關(guān)系
  • 對(duì)輪次r的每一步s > 1看彼,選擇n廊佩,使得以下條件必然成立

|HSVr,s| > 2|MSVr,s | 以及 |HSVr,s | +4|MSVr,s | < 2n

  h越接近1,n可以越小
  • 選取m靖榕,使得Lr < m/3必然成立
  1.  重要參數(shù)的選取
    
  • F = 10-12

  • n ≈ 1500标锄,k = 40,m = 180

(三) 臨時(shí)秘鑰的生成 (Implementing Ephemeral Keys)**

權(quán)威機(jī)構(gòu)可以為用戶U生成秘鑰茁计,將主公鑰(PMK: public master key)公開料皇,將主私鑰私(SMK: secret master key)下交給用戶。假定共識(shí)上線為180步星压,用戶需要參與共識(shí)100萬(wàn)輪共識(shí)践剂,則用戶可以利用主私鑰生成106*180個(gè)臨時(shí)私鑰,并將主私鑰銷毀娜膘。而其他人通過主公鑰以及輪次和步數(shù)信息逊脯,可以生成對(duì)應(yīng)的公鑰,以驗(yàn)證簽名竣贪。

當(dāng)然另外也可以通過公鑰默克爾樹的方式來管理秘鑰军洼,用戶提前將樹根公開,每次發(fā)消息時(shí)將公鑰和對(duì)應(yīng)路徑同時(shí)發(fā)出演怎,其他人可以確認(rèn)公鑰的真實(shí)性匕争,再用公鑰驗(yàn)證簽名。

(四) 算法實(shí)質(zhì) (Actual Protocol)**

(因公式較多爷耀,以下以圖片展示甘桑,可點(diǎn)擊圖片查閱)

image
image

[圖片上傳中...(image-89950c-1521609358967-1)]

image

(五) 協(xié)議分析 (Analysis of Algorand)**

  1. 分級(jí)共識(shí)協(xié)議(GC: Graded Consensus Protocol)

其GC協(xié)議的定義如下:

若協(xié)議P中的所有用戶為公共常識(shí),每個(gè)用戶i各自都知道任意的初始值v’i

我們稱P是一個(gè)(n-t)分級(jí)共識(shí)協(xié)議扇住,若n個(gè)用戶的每次行動(dòng)中春缕,至多只有t個(gè)惡意用戶,其中n ≥ 3t + 1每個(gè)誠(chéng)實(shí)用戶i停機(jī)輸出一個(gè)(值-級(jí))對(duì)(a value-gradepair)(vi, gi)艘蹋,其中g(shù)i ∈ {0, 1, 2}锄贼,他們滿足如下條件:

  • 對(duì)于所有的誠(chéng)實(shí)用戶i和j,|gi –gj| ≤ 1

  • 對(duì)于所有的誠(chéng)實(shí)用戶i和i女阀,gi,gj> 0 ? vi = vj

  • 若對(duì)某一v宅荤,所有的輸入v’1= … = v’n = v,則對(duì)所有誠(chéng)實(shí)用戶i浸策,都有vi = v以及gi = 2

GC協(xié)議的二階段對(duì)應(yīng)于BA*的Step2和Step3冯键,以及拜占庭協(xié)議的prepare和commit部分,而輸出(vi, gi)可以理解為commit票。若存在用戶i庸汗,使得gi = 2惫确,則其必然收到了2t + 1個(gè)對(duì)特定v的prepare票,即使其中有t個(gè)惡意用戶蚯舱,也就是說其他誠(chéng)實(shí)用戶改化,是少收到了對(duì)這個(gè)特定v的t + 1張prepare票,因此條件1成立枉昏。另外陈肛,在出票時(shí)間內(nèi),如果發(fā)現(xiàn)上一輪的用戶給出不一致的票兄裂,則該用戶的所有投票都會(huì)被視為作廢句旱,如此以來,每個(gè)用戶只能給出一次有效票晰奖,如果兩個(gè)vi和vj都有g(shù)i,gj > 0谈撒,那在一定commit輪發(fā)出了t+1張vi和t + 1張vj的票,則commit用戶中有t + 1個(gè)用戶收到了2t + 1張v1的prepare票匾南,另有t + 1個(gè)收到了2t + 1張v2的prepare票港华,因?yàn)樽疃啻嬖趖個(gè)惡意用戶,這需要每個(gè)惡意用戶投兩張prepare票午衰,而如前述立宜,惡意用戶不能這么做,否則自己所有的票都會(huì)被視為作廢臊岸,所以2成立橙数。3顯然成立,事實(shí)上帅戒,這相當(dāng)于出塊者為誠(chéng)實(shí)的情況灯帮,由拜占庭協(xié)議可以保證所有誠(chéng)實(shí)節(jié)點(diǎn)對(duì)v達(dá)成共識(shí)崖技,而誠(chéng)實(shí)節(jié)點(diǎn)的額數(shù)量為2t + 1,則對(duì)于任何用戶i钟哥,gi = 2迎献。

  1. 二元拜占庭共識(shí)協(xié)議 (The Binary BA Protocol BBA*)

所謂二元既是共識(shí)結(jié)果為{0,1},在BA協(xié)議中腻贰,是用戶i的證明消息的第一個(gè)參數(shù)ESIGi(bi)吁恍。當(dāng)BBA結(jié)束時(shí),它是一個(gè)可靠的(n-t)-拜占庭共識(shí)協(xié)議播演,其中n ≥ 3t + 1冀瓦。事實(shí)上應(yīng)該理解為沒有共識(shí)的情況下,協(xié)議會(huì)永遠(yuǎn)循環(huán)下去写烤,雖然存在概率翼闽,但是要是永遠(yuǎn)不發(fā)生共識(shí),在現(xiàn)實(shí)中是不可能發(fā)生的事情洲炊。

而對(duì)應(yīng)于BA*在共識(shí)過程感局,惡意節(jié)點(diǎn)會(huì)不斷搗亂,阻止誠(chéng)實(shí)節(jié)點(diǎn)在第s步達(dá)成共識(shí)(5 ≤ s ≤ m + 2)暂衡,但是每次在s – 2 ≡ 2 mod 3階段蓝厌,會(huì)有一次機(jī)會(huì)通過抽簽的方式有概率,讓誠(chéng)實(shí)用戶i對(duì)bi達(dá)成共識(shí)古徒。而在最后的m+3階段,會(huì)選擇強(qiáng)制出空塊的方式結(jié)束此輪读恃。

  1. BA

BA協(xié)議就是將出塊流程隧膘,GC協(xié)議和BBA協(xié)議串聯(lián)在一起,最后完成出塊流程寺惫。它是一個(gè)可靠的(n-t)-拜占庭共識(shí)協(xié)議疹吃,其中n ≥ 3t + 1。當(dāng)每一輪結(jié)束時(shí)西雀,都滿足:

一致性(Consisteny):所有誠(chéng)實(shí)用戶i都在同一個(gè)v上達(dá)成共識(shí)萨驶,即vi = v

共識(shí)性(Agreement):所有誠(chéng)實(shí)用戶i要不都發(fā)生共識(shí),要不都不發(fā)生共識(shí)

  1. 定理 (The Theorem)

算法作者通過歸納法證明了如下結(jié)論:

在任何輪次r > 0艇肴,如下屬性必然成立:

所有的誠(chéng)實(shí)用戶共識(shí)與同一個(gè)塊Br

出塊者為誠(chéng)實(shí)的腔呜,則Br包含了交易的最大集,其達(dá)成共識(shí)的時(shí)間上限為Tr+1 ≤ Tr+ 8λ + Λ再悼。

出塊者為惡意的核畴,其對(duì)Br達(dá)成共識(shí)的時(shí)間上限為Tr+1 ≤ Tr + (6Lr + 10)λ + Λ

對(duì)于Lr,ph = h2(1 + h – h2)冲九,出塊者為誠(chéng)實(shí)的概率至少為 ph

事實(shí)上谤草,絕大多數(shù)情況下,BA*協(xié)議都可以快速達(dá)成共識(shí)。敵手需要掌握惡意出塊者丑孩,還要不斷調(diào)整每一輪投票者的行為冀宴,最后需要不錯(cuò)的運(yùn)氣,才能使該輪以最長(zhǎng)的時(shí)間結(jié)束出塊温学÷灾可以算得,其達(dá)到共識(shí)的期望時(shí)間為12.7λ + Λ

結(jié)論 (Conclusion)

Algorand基本解決了pow遇到的很多問題枫浙。根據(jù)論文給出的數(shù)據(jù)刨肃,其交易效率也很高,并且不會(huì)因?yàn)橛脩魯?shù)的增加和區(qū)塊的增大而增加共識(shí)時(shí)間箩帚,事實(shí)上真友,其最消耗時(shí)間的地方是在區(qū)塊的傳播上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末紧帕,一起剝皮案震驚了整個(gè)濱河市盔然,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌是嗜,老刑警劉巖愈案,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鹅搪,居然都是意外死亡站绪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門丽柿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恢准,“玉大人,你說我怎么就攤上這事甫题∧倏穑” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵坠非,是天一觀的道長(zhǎng)敏沉。 經(jīng)常有香客問我,道長(zhǎng)炎码,這世上最難降的妖魔是什么盟迟? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮潦闲,結(jié)果婚禮上队萤,老公的妹妹穿的比我還像新娘。我一直安慰自己矫钓,他們只是感情好要尔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布舍杜。 她就那樣靜靜地躺著,像睡著了一般赵辕。 火紅的嫁衣襯著肌膚如雪既绩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天还惠,我揣著相機(jī)與錄音饲握,去河邊找鬼。 笑死蚕键,一個(gè)胖子當(dāng)著我的面吹牛救欧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锣光,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼笆怠,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了誊爹?” 一聲冷哼從身側(cè)響起蹬刷,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎频丘,沒想到半個(gè)月后办成,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搂漠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年迂卢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桐汤。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡而克,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出惊科,到底是詐尸還是另有隱情,我是刑警寧澤亮钦,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布馆截,位于F島的核電站,受9級(jí)特大地震影響蜂莉,放射性物質(zhì)發(fā)生泄漏蜡娶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一映穗、第九天 我趴在偏房一處隱蔽的房頂上張望窖张。 院中可真熱鬧,春花似錦蚁滋、人聲如沸宿接。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)睦霎。三九已至梢卸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間副女,已是汗流浹背蛤高。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碑幅,地道東北人戴陡。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像沟涨,于是被迫代替她去往敵國(guó)和親恤批。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 以太坊(Ethereum ):下一代智能合約和去中心化應(yīng)用平臺(tái) 翻譯:巨蟹 拷窜、少平 譯者注:中文讀者可以到以太坊愛...
    車圣閱讀 3,760評(píng)論 1 7
  • 以太坊白皮書地址:https://github.com/ethereum/wiki/wiki/White-Pape...
    rectinajh閱讀 17,823評(píng)論 0 46
  • 【中文版】以太坊白皮書 翻譯:少平开皿、 Seven當(dāng)中本聰在 2009 年 1 月啟動(dòng)比特幣區(qū)塊鏈時(shí),他同時(shí)向世界引...
    __Seven__閱讀 4,209評(píng)論 0 10
  • 阿吉7閱讀 181評(píng)論 0 0
  • 有一天 一首詩(shī)篮昧,硬梆梆地患上了癡呆癥 一堆口水淋濕了粉色的圍兜 一根白發(fā)將它絆倒在溝渠里 一張嘴吐出塊敲響的白皮 ...
    風(fēng)為誰(shuí)艷閱讀 215評(píng)論 0 0