自從以太坊將可驗證延遲函數列入研究計劃并打算在以太坊2.0使用之后,VDF得到了廣泛的關注。VDF這個概念最初由斯坦福大學密碼學教授DanBoneh等人在其論文VerifiableDelayFunction中給出。該篇文章于2018年發表在密碼學頂級會議之一的CRYPTO上。
目前網絡上有一些英文和中文的文章介紹了VDF的概念和原理,但是它們要么無法給出全面直觀的解釋,要么只是粗淺地談論應用。本文試圖通過淺顯的語言和具體的例子來讓對密碼學和群論不夠了解的讀者能夠全面而直觀地理解它的定義和原理。同時,本文還給出了它的可能的應用場景以及目前的研究和應用狀況。
簡介
VDF是一類數學函數,能夠使得該函數的計算需要至少一段已知的時間,即使是在同時使用少量CPU進行并行計算的情況下。
對于未精心設計過的算法,并行計算有可能極大地縮減其計算時間。以比特幣的挖礦算法為例,設0?nonce?232?10?nonce?232?1,如果只有一個運算單元,那么可能需要耗費多達232次SHA-256計算的時間。如果有兩個運算單元,就可以將任務對半分攤,讓他們并行地計算哈希值。最多只需要耗費231次SHA-256計算的時間。同時滿足以下性質:
VDF的結果的檢驗應當是非常有效率的。
唯一性:對于任意一個VDF的輸入,應當有唯一的輸出結果能夠通過檢驗。也就是說,不存在兩個不同的輸出,他們有相同的輸入。如果輸出結果包含“結果”和關于結果的“證明”兩部分,那么證明部分可以不具有唯一性,但需要保證“驗證者因為證明而驗證通過,但是輸出結果卻不是正確的結果”這件事發生的概率小到可以忽略不計。
串行性:攻擊者即使能夠提前計算很長時間,并且擁有很多并行處理器,利用各種計算方法,能夠以少于t的時間計算出VDF結果的概率可以小到忽略不計。
VDF能夠抵抗并行計算加速,這意味著為了計算VDF,應當完成一系列串行才能完成的任務,后一個任務必須依賴于前一個任務。這時,對哈希函數有所了解的讀者可能會想到一種方案:連續將一個輸入哈希tt次。這樣的方案的確是無法通過并行算法顯著地加速的,但是這樣得到的結果,其驗證將會非常沒有效率:驗證者需要重復哈希T次的計算,即使保留一些中間結果,驗證的工作量和計算的工作量也是常數級別的差距。從這個例子我們可以看出,在這樣的定義下,可驗證延遲函數的構造并沒有想象中的那么簡單。
事實上,對于上面并不嚴謹的定義,去掉任何一個性質都會導致我們能夠非常輕易地構造出可驗證延遲函數:
美國財政部一般賬戶余額已不足500億美元,創2017年以來最低值:金色財經報道,據macromicro數據顯示,美國財政部一般賬戶余額(TGA)已不足500億美元,截至5月24日只剩下約490億美元,創下自2017年以來的最低值。美國財政部一般賬戶是美國政府處理日常開支的主要運營賬戶,目前美國眾議院正在就債務上限問題進行談判,一旦達成協議,美國財政部一般賬戶余額將會獲得流動性并發行新債券以補充賬戶。(cryptoslate)[2023/5/26 9:44:54]
如果不要求驗證結果是高效的,也就是說沒有顯著地比計算結果更快,那么我們可以通過剛才提到的連續哈希的方案進行構造。
如果我們不需要它保證唯一性,那么早在2013年Mahmoody等人的工作PubliclyVerifiableProofsofSequentialWork就已經實現了這一點。
如果它不保證串行性,那么顯然構造方法就更多了。
PoW或許有讀者會感覺VDF和PoW是一類東西,實際上,雖然他們計算起來都不是很容易,但是他們之間有很多關鍵的區別。PoW不抵抗并行計算加速而VDF抵抗。實際上,PoW不抵抗并行計算加速是符合中本聰的“一CPU一票”的設想的,而抗并行加速的性質只會與這個目的背道而馳。VDF會使得多CPU的計算者和單CPU的計算者相比幾乎沒有什么優勢。
對于固定的難度設定d,PoW可以有很多合法的解,這也是保證PoW共識網絡擁有穩定的吞吐量以及刺激礦工進行競爭的前提。而對于給定輸入x,VDF擁有唯一的輸出。
上述兩條性質決定了PoW直接作為隨機數的來源是有缺陷的,同時,VDF也無法直接替代PoW。但是這并不能說明VDF不可以被用到共識協議里,這一點會在下一個章節詳談。
用途
上一章節我們介紹了VDF是什么,以及它具有怎樣的性質,這一章節我們關注它的用途。
增強公共可驗證隨機數的安全性
區塊鏈上的隨機數一直是一個熱門話題。無論是在一些權益證明共識協議的設計里,還是在智能合約平臺,譬如Ethereum和EOS,上一些非常火爆的游戲類應用,隨機數都占據了核心的地位。同時,很多這些應用中,實際設計的隨機數獲取方案還非常不成熟,以至經常會有應用因為不安全的隨機數而被黑客攻擊的新聞出現。
VDF對于一些從公共來源獲取隨機數的方法非常有用。比如從股票市場或者是從PoW區塊鏈上獲取。這些隨機源擁有足夠的隨機性。但是高頻交易者可以影響股價,同時,PoW區塊鏈的礦工也可以通過不廣播自己挖出的區塊來降低自己不想要的隨機數結果的出現概率。但是這樣的攻擊方式成立的前提條件是攻擊者有時間在其他誠實參與者之前預測出隨機數結果。VDF恰好能阻止這一點。如果將VDF的時間參數tt設置到足夠長,將最新的區塊頭作為輸入扔進VDF中,輸出作為隨機數結果。那么攻擊者只能在10個塊之后才能知道隨機數的結果是什么,那個時候想要再改變結果已經很難了。
區塊鏈碳信用平臺The Zero Fund完成40萬歐元pre-seed輪融資:金色財經報道,區塊鏈碳信用平臺 The Zero Fund 宣布完成 40 萬歐元 pre-seed 輪融資,Rock Capital 領投。The Zero Fund 總部位于法國波城,通過高安全性區塊鏈平臺以實現透明且可驗證的高質量碳信用交易。(finsmes)[2023/2/7 11:52:27]
此外,VDF也可以增強一些多方參與的隨機數方案。比如Commit-and-Reveal方案中,攻擊者可以拖到Reveal階段的最后再決定是否揭示自己的承諾。如果我們去掉Commit階段,并且協議的最后整合所有人的輸入之后不直接作為隨機數結果,而是放入VDF中,并且將VDF的時間參數tt設置到足夠長,那么即使是最后一刻提交的人也無法知道隨機數的結果,操縱結果也就無從談起。與之相比較,其他的多方參與方案通常最多容忍小于一半的惡意節點,并且交互的開銷要比上述方案更大。
Nothing-at-stakeAttack
正如上一節所述,VDF可以用于增強隨機數生成方案的安全性,因此,在一些使用了隨機數來選取Leader的共識協議中也可以使用VDF在增強其安全性。一些節約能源的共識協議,例如PoS,空間證明以及存儲證明,為了防止Nothing-at-stakeattack,需要使用隨機選舉每隔一段時間選舉出一個Leader。這些協議使用的隨機數方案大多只在誠實參與者占據大多數時保持安全。利用VDF可以降低這樣的限制到至少存在一個誠實參與者。
什么是Nothing-at-stakeAttack?PoS區塊鏈發生分叉時,共識參與者為了自己的利益會選擇在不同的分叉鏈上同時進行抵押資產參與出塊,這樣分叉鏈有可能會一直存在并且分叉越來越多,嚴重危害系統的一致性,這樣的攻擊被叫做Nothing-at-stakeattack。在PoW鏈上進行這樣的攻擊需要分散算力,因此這樣的攻擊只適用于“節約能源”的共識協議。除了隨機選舉之外,還有一種叫做ProofsofSpaceandTime的方案可以防止這種攻擊。實際上該方案模擬了PoW的挖礦過程:挖出區塊的時間是不確定的,并且每個礦工都在互相競爭成為最早挖出區塊的人。不一樣的地方在于,模擬挖礦過程實際上并不需要消耗大量的并行計算資源,只有在進入挖礦時有一定的門檻。具體來講,整個挖礦過程按照時間順序被分成不同的區間,每一個區間都有一個公共隨機的挑戰c。假設某個礦工擁有的空間單位為N,他需要生成一個證明π來證明他擁有這N單位的空間,并且專門用于該區塊鏈的挖礦,這一點由Proof-of-Space保證。礦工的目標為找到最小的τ=H(c,π,i),1?i?N,然后將c作為輸入計算一個VDF,該VDF的時間參數與τ正相關。這樣的設計中,擁有空間越多的礦工找到更小的τ的可能性更大,同時,VDF保證了一段時間的流逝,使礦工大量分叉需要消耗大量的時間。
美聯儲政策聲明:持續加息是適當的:金色財經報道,美聯儲政策聲明稱,持續加息是適當的;通脹有所緩解,但仍處于高位;將考慮累計緊縮政策的滯后效應;就業增長勢頭強勁,失業率保持低位;將按計劃繼續縮減資產負債表。
此外,美國聯邦基金利率期貨表明美聯儲在3月加息25個基點的可能性約為85%,此前為40%左右。[2023/2/2 11:41:52]
Long-rangeAttack
幾乎所有的PoS方案都面臨Long-rangeattack的問題。目前PoS協議依賴于外部的時間戳服務來幫助他們解決這個問題——只要能判斷哪一條鏈更老,就能阻止這樣的攻擊發生。VDF能夠幫助PoS解決這樣的問題。VDF相當于一種時間流逝的證明,對于給定的VDF,該VDF至少需要多久才能得出結果是一個公共知識。因此,只需要在PoS鏈上包含VDF的輸入與輸出即可證明給定區塊的歷史。
什么是Long-rangeAttack?在PoS協議中,任意時刻都有一組權益相關者擁有按照權益多少分配的投票權。PoS假設大多數權益相關者并沒有理由對系統造成破壞,因為這樣反而會損害自己的權益。但是如果這些權益相關者在某一個時間點出售了自己的權益,這樣的激勵對他們來講是無效的。這些已經出售了自己權益的曾經的權益相關者仍然可以在曾經某一個時間點輕易對PoS鏈分叉達到原有鏈的的長度,從中攫取額外的利益,這樣的攻擊被稱作Long-rangeattack。它在PoW上不太可能發生,因為對于PoW來講,無論從哪一個時間點進行分叉,都必須要付出相應的算力才能追上原有的鏈,想要分叉的區塊越多,付出的算力也就越多。但是必須要指出的是,這樣的方法并不是完美的,因為VDF仍然是可以被特殊硬件加速的。如果攻擊者獲得了誠實節點10倍的計算速度,那么這樣的加速對于使用VDF作證明的PoS鏈是不可接受的。
10倍的加速對于隨機數生成的場景無所謂,因為該場景下,不需要保證“攻擊者算得沒有誠實節點快”,只需要保證攻擊者無法在某個時間點之前無法計算出結果即可。從而在隨機數生成的場景,我們可以選取一個足夠長的時間參數,使得攻擊者即使加速也無法操縱隨機數。ProofofReplication副本證明所需要解決的問題是,服務器如何向客戶端證明自己在某一專門的存儲介質上存儲了指定的數據,即使這樣的數據是可以從別的存儲來源輕易獲得的。注意副本證明是為了證明服務器擁有一份數據的副本,而不是證明它有這樣的數據。舉個例子,云存儲服務提供商聲稱自己為客戶的數據做了額外的兩份冗余備份來保證用戶數據的availability,因此客戶需要為這樣的冗余備份交更多的錢。但是怎么證明云服務提供商有一共三份副本而不是兩份或者只有一份呢?這就需要用到副本證明。一種思路是利用在時間上不對稱的編碼方案,VDF可以做到這一點。身份為id的服務器首先將文件分成b-bit大小的文件塊Bi,1?i?n,然后計算Bi⊕H(id||i)并將結果作為輸入放進VDF計算得到yi,1?i?n,其中H是輸出長度為b-bit的防碰撞哈希函數。服務器存儲所有的yi,客戶端不斷隨機挑選iyi,服務器在規定時間內需要響應給客戶端相應的結果,而客戶端可以在很短的時間內通過解碼yi得到Bi完成驗證。如果服務器沒有存儲yi,那么想要正確響應客戶端必須計算yi,然而這樣的計算無法在規定的時間內完成。服務器也可以只存儲一部分yi,由于客戶端是隨機輪詢,每一次服務器成功欺騙客戶端的概率為ρ。只要客戶端重復k次這樣的輪詢,就可以將服務器欺騙成功的概率降到ρk。需要補充的一點是,服務器可以不存儲Bi,由于yi解碼很快,即使只存儲yi也不會太影響性能。基本原理
Web3游戲公司MetaBlaze完成320萬美元預售輪融資:金色財經報道,印度Web3游戲公司MetaBlaze宣布完成基于其原生Token MBLZ的320萬美元預售輪融資,MetaBlaze將利用這筆最新融資加密構建加密游戲Galaxia Blue,該游戲主題是讓玩家從世界末日核戰爭廢墟中重建星際文明,玩家可以使用BTC、ETH、BNB和SOL來獲取游戲NFT來建設虛擬世界并贏取獎勵。(oneindia)[2022/9/26 22:31:06]
既然VDF是一個函數,那么它就必然具有這樣的形式:f:X→Y。為了實現前文所述的功能,即“抵抗并行計算的延遲”以及“可驗證的結果”,VDF中必然包含一個用于計算結果的算法以及一個用于驗證結果的算法。同時,這樣的密碼學工具通常還包含一個配置階段,用來確定后續需要使用的參數。因此,VDF被描述為三個算法的一個三元組(SetupEvalVerify)每個算法的定義如下:
Setup(λ,t)→pp=(ek,vk)接受安全參數λ以及時間參數t,生成一個公共參數pp,這個參數是所有人都可以看到的。公共參數pp包含了一個用于計算的參數ek和一個用于驗證的參數vk。
Eval(ek,x)→(y,π)接受計算參數ek和輸入x∈X,計算出輸出y∈Y和證明π
Verify(vk,x,y,π)→{accept,reject}接受vk,x,y以及π,輸出accept或者reject。
如圖1所示我們可以看到VDF通常的運行流程。
1以上幾個算法有一些需要補充說明的地方:關于SetupSetupλ所限制。
Setup這個階段通常會需要隨機數作為參數以保證安全性,如果隨機數是私下選擇的,也就是不可公開的,那么這個階段就會需要一個可被信任的一方來進行隨機數的選擇,稱之為trustedsetup。相反,如果隨機數可以是公共隨機數,那么這個階段就不需要這樣的trustedsetup。顯然,我們希望盡量避免trustedsetup。
關于Eval
證明π不是必須的,如果僅僅通過y就能驗證的話。在y的計算中,不允許有隨機數的引入,但是在π的生成過程中可以引入。
為了保證串行性,Eval在擁有不超過關于t的多項式對數(Poly-log)個并行處理器時,運行時間必須為t。
為什么Eval要允許一定程度的并行計算達到時間t呢?因為可能并沒有構造能夠完美地讓并行和串行計算時間完全相同,所以我們需要容忍一定量的不太顯著的并行加速。
Multichain發布跨鏈橋資費調整:據官方推特稱,Multichain發布跨鏈橋資費調整,如下:
DAI/WBTC/ETH橋接Polygon/ Avalanche/BNB費用從0%調整為0.01%;
DAI橋接到Polygon/Avalanche/BNB最小費用為0.5 DAI,最大費用為1,000 DAI;
WBTC橋接到Polygon/Avalanche/ BNB最小費用為0.000025 WBTC,最大費用為0.05 WBTC。[2022/9/9 13:19:52]
關于Verify
Verify中不引入隨機數,也就是說,它是確定性算法。Verify的運行時間要比t小得多,具體來講,他們在運行時間上擁有指數級別的差距。
基于上述定義,VDF還有一些擁有特殊性質的變種:
可解碼VDF:如果對于一個VDF方案,存在一個算法對于任意x∈X能夠從y∈Y反向計算出x,那么這個VDF就是可解碼VDF。在這樣的情況下,證明π是不需要的。當然,一個平凡的構造是,將π放進y里面。
增量VDF:如果在Setup算法中,參數t沒有被唯一確定,而是允許在Eval的輸出之一π中指定,這樣的VDF被稱作增量VDF。一種效果類似的構造是,在Setup中設定t為一個單位的時間,如果想要在計算階段達到不同的延遲時間,例如T=nt,只需要串行n次Eval即可。但是這樣的構造會導致n倍的證明長度,增量VDF不會產生額外的證明。
陷門VDF:如果某個VDF方案存在一個算法,使得知道某一秘密值sk的人能夠通過這個算法迅速由Eval的輸入得到Eval的輸出,那么這個VDF是陷門VDF。更直觀的理解是,陷門VDF有一個后門可以讓人繞過延遲限制迅速算出結果。
弱VDF:如果我們放寬限制,允許“即使在Eval中使用多項式個并行處理器才能在t時間算出結果”這樣的情況出現,這樣的VDF被稱作弱VDF。弱VDF在實際應用中會更加消耗誠實參與者的算力。但如果將VDF用于生成公共可驗證的隨機數,可以將計算任務交給一個誠實參與者,其他參與者等著驗證。這時,這樣的唯一計算者是可能擁有足夠多的處理器的。
一種簡單的構造方式
上文提到了使用連續的哈希操作是一種防止并行的計算加速的手段,但是這樣的手段非常低效,不符合VDF的定義。我們希望能夠找到一種驗證更加迅速的防并行的構造方式。考慮這樣的一個例子:
首先選擇一個數λ=161,然后然后對于任意的輸入x,我們執行下面的操作t次:
計算k=2
取k除以λ的余數得到l
令k取l,返回第一步,如果是最后一次操作,輸出結果y
假設我們的輸入x=11,t=8那么結果為95,事實上,如果我們讓t取不同的值,把結果都記錄下來,可以得到下述表格:
更一般地講,如果a≡bmodm代表a和b分別除以m的余數相同的話,那么上述操作實際上就是計算:
如果我們知道λ的因式分解,例如161=7×23,那么我們可以通過兩次指數運算來快速計算出y的值。首先計算函數?(161)=(7?1)×(23?1)=132,然后計算2t除以?(161)的余數:
然后計算x124除以λ的余數:
上述過程比起連續平方8次看似沒有減輕多少工作量,但實際上當t和λ非常大時,遠比連續平方快得多。一般地,函數
如果
這個函數被稱之為歐拉函數。上述例子可以一般化為:
因此,如果沒有任何人知道λλ的因式分解,也就無法快速計算出?(λ),從而只能重復t次平方操作使用
計算出y。
事實上,這個構造可以使用群論得到更加本質的解釋。我們發現,由于模運算y的值是小于λ的,而所有小于λ且與λ互素的數一起組成了一個群,這個群被稱作整數模λ乘法群,記作(Z/λZ)*。這個群的階,也就是元素個數就等于歐拉函數?(λ)的值。因此,關鍵問題落在了如何生成這樣的知道階的群。
目前主要有兩種方法:
使用RSA群
使用虛二次域的類群
RSA群的生成與RSA加密算法類似,選取大素數p和q,其中p=2m1,q=2n1且m,n均為素數。令N=pq,則(Z/NZ)*即為所需群。然而一個很顯然的問題是,這其中涉及到了trustedsetup,我們必須相信生成N的參與者不會泄露p和q。我們也可以使得群生成算法使用公共隨機數來直接選取足夠大的N使得因式分解N非常困難,但是這樣的N需要非常大以至于這樣的方法非常不現實。第二種方法解決了第一種方法的問題,但是由于第二種方法解釋起來涉及概念較多,本篇文章不會涉及。同時,對于結果y綜述。
研究與應用現狀
學術界第一次正式提出VDF的概念是在Boneh的論文中,他在論文中給出了VDF的應用場景以及形式化的模型,安全分析和一般構造方法。之后出現了分別出現了兩篇VDF的構造論文,分別是Wesolowski的EfficientVDF以及Pietrzak的SimpleVDF。兩者都利用在不知道階的群中連續做平方運算的方法來構造VDF,不同的是,他們生成證明的構造有所區別。簡單來講,Wesolowski的證明更短,驗證更快;但是Pietrzak的構造中,生成證明的速度更快,同時證明系統依賴的安全假設更弱。2019年Feo等人使用超奇異同源(SupersingularIsogenies)以及雙線性對構造VDF。相比于Wesolowski和Pietrzak的工作,他們的構造本身就是非交互的,不需要經過轉換,同時不需要證明π即可完成驗證,但是他們的構造中Setup耗費的時間更長,更為主要的是,目前還只能進行trustedsetup。
在應用領域,ChiaNetwork計劃使用VDF來支持他們的Proof-of-Space;以太坊研究團隊也打算在以太坊2.0中引入VDF,以期在以太坊2.0信標鏈中使用RANDAOVDF隨機選取出塊人。最初以太坊計劃使用RANDAOVDF的方案。但由于以太坊2.0的計劃瞬息萬變,截至文章最后修改前,以太坊信標鏈計劃將區塊間隔限制到6秒,64個區塊為一個epoch,因此一個epoch為6.4分鐘,每一個epoch需要進行一次出塊人切換,因此VDF的時間參數最少應設置為6.4分鐘,但是目前以太坊計劃將其設置為102.4分鐘,目的是防止潛在的攻擊者利用特殊硬件加速VDF。
附錄
https://vdfresearch.org/
https://eprint.iacr.org/2018/601
https://blog.trailofbits.com/2018/10/12/introduction-to-verifiable-delay-functions-vdfs/
https://ethfans.org/posts/vdf-faq-part-1
https://eprint.iacr.org/2011/553
https://www.huoxing24.com/newsdetail/20181122150016435403.html
[7https://cyber.stanford.edu/sites/g/files/sbiybj9936/f/bramcohen.pdf
https://zh.wikipedia.org/wiki/群
https://zh.wikipedia.org/wiki/整數模n乘法群
https://eprint.iacr.org/2018/712
https://eprint.iacr.org/2018/623
https://eprint.iacr.org/2018/627
https://eprint.iacr.org/2019/166
https://www.chia.net/
https://ethresear.ch/t/minimal-vdf-randomness-beacon/3566
作者:PRIEWIENV
本文首發于公眾號NPC源計劃,EthFans經授權轉載。
Mcoin交易所,瓜分BTC0.1888枚重磅活動開啟!Mcoin交易所的用戶們:感謝您長期以來對Mcoin交易所的持續關注與支持!前2期活動剛剛落下帷幕,應廣大用戶的強烈要求.
1900/1/1 0:00:00編譯:ElaineW 根據彭博社6月17日報道,面對核心經紀業務發展放緩,全球最大經紀商TPICAPPlc跟隨少數傳統金融公司,計劃交易比特幣衍生品.
1900/1/1 0:00:00無論是幣價的浮動,還是一些項目每年增發帶來的自動“通脹”,幣價的下跌,數字貨幣收益的下跌應該是所有持幣人不愿看到的一個事實.
1900/1/1 0:00:002019年6月14日下午,由可信區塊鏈推進計劃主辦的《區塊鏈司法存證應用白皮書》發布會在中國信息通信研究院3G樓召開.
1900/1/1 0:00:00導讀:周末BTC又走出獨立行情,創下今年的新高,然而大部分主流幣并沒有跟漲,或者跟漲的幅度非常有限,很多散戶投資者手足無措.
1900/1/1 0:00:00普通ATM機使用起來非常方便:插入銀行卡后,就可以取出現金。比特幣ATM機也應該遵循同樣的設計理念。科技會讓人們的生活變得更加便捷,但技術本身并不簡單.
1900/1/1 0:00:00