自從以太坊將可驗證延遲函數列入研究計劃并打算在以太坊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次的計算,即使保留一些中間結果,驗證的工作量和計算的工作量也是常數級別的差距。從這個例子我們可以看出,在這樣的定義下,可驗證延遲函數的構造并沒有想象中的那么簡單。
事實上,對于上面并不嚴謹的定義,去掉任何一個性質都會導致我們能夠非常輕易地構造出可驗證延遲函數:
如果不要求驗證結果是高效的,也就是說沒有顯著地比計算結果更快,那么我們可以通過剛才提到的連續哈希的方案進行構造。
聯想集團 CES 2023 發布 Chronos 設備加碼元宇宙:金色財經報道,聯想集團在CES2023發布了一款可稱為元宇宙“傳送門”,代號為Project Chronos的概念動作捕捉設備,無須通過可穿戴設備便可完成實時動作捕捉,并復制到虛擬人物上,以實現虛擬現實的全沉浸。據悉,Project Chronos可以為消費者進入元宇宙世界提供一個操作更為簡單的入口,同時可以進一步完善聯想的元宇宙生態布局。目前,Project Chronos還處于概念階段,正式的產品名稱將在此后推出完整硬件和功能后揭曉。[2023/1/6 10:58:37]
如果我們不需要它保證唯一性,那么早在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個塊之后才能知道隨機數的結果是什么,那個時候想要再改變結果已經很難了。
MetaMask與NFTBank合作推出新的NFT投資組合工具:11月2日消息,Web3 錢包提供商 MetaMask 與 NFTBank 合作推出了一種新的 NFT 投資組合工具,該工具使用 NFTBank 的估值引擎通知用戶其 NFT 價格價值的變化。這種合作伙伴關系的目標是幫助用戶對其 NFT 投資組合做出更好的決策。NFTBank 是一家構建 NFT 價格跟蹤工具的公司。[2022/11/2 12:09:57]
此外,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保證了一段時間的流逝,使礦工大量分叉需要消耗大量的時間。
F1車手Daniel Ricciardo:加密貨幣投資與賽車有很多相似之處,有耐心是關鍵:金色財經聯合Coinlive現場報道,新加坡“Token2049”峰會活動今日舉辦,F1車手以及OKX的大使Daniel Ricciardo與OKX首席營銷官Haider Rafique進行了交流。Haider向這位F1運動員請教,投資者如何能像他一樣在F1比賽中處理波動的情緒。Daniel 分享說,上升和下降都會發生,重要的是要教會自己不要太高或太低,始終保持平衡。如果你知道你已經付出了努力,勝利很快就會到來。Daniel建議投資者不要做出情緒化的決定,如果心態不對,可以休息一下。
由于Daniel去年進入了加密貨幣領域,并參與了市場的波動(比特幣3萬到6萬,現在是1萬9千),Haider問他是否像在賽道上比賽一樣使用任何戰術,以及他在看自己的投資組合和當前市場時的看法。Daniel認為,加密貨幣投資與賽車有很多相似之處。有耐心是關鍵。當有人在第三圈超車時,如果你感到非常沮喪,從而做出一個愚蠢的舉動,這可能會毀掉你的比賽。但現在還剩下50圈,方格旗(終點)還遠在前方。憑借策略和耐心,就可以慢慢奪回屬于自己位置,擁有長遠的眼光是非常關鍵的。[2022/9/28 22:37:24]
減輕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鏈是不可接受的。
數據:比特幣礦工余額達到4年高點:金色財經消息,據Glassnode數據,比特幣礦工余額達到4年高點1,845,303.361。[2022/7/29 2:45:35]
10倍的加速對于隨機數生成的場景無所謂,因為該場景下,不需要保證“攻擊者算得沒有誠實節點快”,只需要保證攻擊者無法在某個時間點之前無法計算出結果即可。從而在隨機數生成的場景,我們可以選取一個足夠長的時間參數,使得攻擊者即使加速也無法操縱隨機數。副本證明
副本證明所需要解決的問題是,服務器如何向客戶端證明自己在某一專門的存儲介質上存儲了指定的數據,即使這樣的數據是可以從別的存儲來源輕易獲得的。注意副本證明是為了證明服務器擁有一份數據的副本,而不是證明它有這樣的數據。舉個例子,云存儲服務提供商聲稱自己為客戶的數據做了額外的兩份冗余備份來保證用戶數據的availability,因此客戶需要為這樣的冗余備份交更多的錢。但是怎么證明云服務提供商有一共三份副本而不是兩份或者只有一份呢?這就需要用到副本證明。一種思路是利用在時間上不對稱的編碼方案,VDF可以做到這一點。身份為id的服務器首先將文件分成b-bit大小的文件塊Bi,1?i?n,然后計算Bi⊕H(id||i)并將結果作為輸入放進VDF計算得到yi,1?i?n,其中H是輸出長度為b-bit的防碰撞哈希函數。服務器存儲所有的yi,客戶端不斷隨機挑選ii進行輪詢要求服務器返回yi,服務器在規定時間內需要響應給客戶端相應的結果,而客戶端可以在很短的時間內通過解碼yi得到Bi完成驗證。如果服務器沒有存儲yi,那么想要正確響應客戶端必須計算yi,然而這樣的計算無法在規定的時間內完成。服務器也可以只存儲一部分yi,由于客戶端是隨機輪詢,每一次服務器成功欺騙客戶端的概率為ρ。只要客戶端重復k次這樣的輪詢,就可以將服務器欺騙成功的概率降到ρk。需要補充的一點是,服務器可以不存儲Bi,由于yi解碼很快,即使只存儲yi也不會太影響性能。
基本原理
既然VDF是一個函數,那么它就必然具有這樣的形式:f:X→Y。為了實現前文所述的功能,即“抵抗并行計算的延遲”以及“可驗證的結果”,VDF中必然包含一個用于計算結果的算法以及一個用于驗證結果的算法。同時,這樣的密碼學工具通常還包含一個配置階段,用來確定后續需要使用的參數。因此,VDF被描述為三個算法的一個三元組(Setup(Setup,EvalEval,Verify)Verify)。
每個算法的定義如下:
Setup(λ,t)→pp=(ek,vk)接受安全參數λ以及時間參數t,生成一個公共參數pp,這個參數是所有人都可以看到的。公共參數pp包含了一個用于計算的參數ek和一個用于驗證的參數vk。
金融穩定理事會:加密資產和市場必須受到與其構成的風險相稱的有效監管:7月11日消息,金融穩定理事會(Financial Stability Board)發布關于關于加密資產活動國際監管的聲明,聲明表示,加密貨幣市場的動蕩顯示出內在的波動和結構性漏洞,加密資產和市場必須受到與其構成的風險相稱的有效監管。聲明還指出,穩定幣如果要被廣泛采用為一種支付手段,就應該受到強有力的監管。加密資產服務提供商必須遵守其運營轄區的現有法律。(FSB)[2022/7/11 2:05:05]
Eval(ek,x)→(y,π)接受計算參數ek和輸入x∈X,計算出輸出y∈Y和證明π
Verify(vk,x,y,π)→{accept,reject}接受vk,x,y以及π,輸出accept或者reject。
如圖1所示我們可以看到VDF通常的運行流程。
圖1:可驗證延遲函數
以上幾個算法有一些需要補充說明的地方:
關于SetupSetup
SetupSetup的運行時間不能太久,它被安全參數λ所限制。
Setup這個階段通常會需要隨機數作為參數以保證安全性,如果隨機數是私下選擇的,也就是不可公開的,那么這個階段就會需要一個可被信任的一方來進行隨機數的選擇,稱之為trustedsetup。相反,如果隨機數可以是公共隨機數,那么這個階段就不需要這樣的trustedsetup。顯然,我們希望盡量避免trustedsetup。
關于Eval
證明π不是必須的,如果僅僅通過y就能驗證的話。
在y的計算中,不允許有隨機數的引入,但是在π的生成過程中可以引入。
為了保證串行性,Eval在擁有不超過關于t的多項式對數(Poly-log)個并行處理器時,運行時間必須為t。
為什么Eval要允許一定程度的并行計算達到時間t呢?因為可能并沒有構造能夠完美地讓并行和串行計算時間完全相同,所以我們需要容忍一定量的不太顯著的并行加速。
關于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=X2
取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需要非常大以至于這樣的方法非常不現實。第二種方法解決了第一種方法的問題,但是由于第二種方法解釋起來涉及概念較多,本篇文章不會涉及。同時,對于結果yy的快速驗證需要用到證明系統,有興趣的讀者可以參考Boneh的一篇綜述。
研究與應用現狀
學術界第一次正式提出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
Tags:ETUSETTPSHTTcetus幣圈子quantum-assetshttps://etherscan.ioHTT價格
今天是6月7號,既是端午節也是一年一度的高考第一日,在這里祝朋友們端午節安康,也祝愿高考考生能取得好成績.
1900/1/1 0:00:00“如果在競爭中,你輸了,那么你輸在時間;反之,你贏了,也贏在時間。” 文章導讀: 1.投資前要有明確的規劃和策略2.不要試圖猜測短期行情走勢3.避免韭菜思維解決方案昨天有讀者咨詢,EOS在58元.
1900/1/1 0:00:00火星財經APP一線報道,泛城資本創始人陳偉星今日就外界對孫宇晨的諸多爭議發表評論,表示自己依然支持孫宇晨.
1900/1/1 0:00:00據Cointelegraph報道,澳大利亞證券和投資委員會于2019年5月30日發布了最新的代幣發行和加密貨幣交易指南.
1900/1/1 0:00:006月6日,據FT公鏈官網公告消息,FT公鏈測試網絡已正式上線。據公告顯示,FT公鏈測試網絡是一條FT公鏈的備用鏈,將長期存在,主要用于開發測試.
1900/1/1 0:00:00近期行情大幅回落市場氛圍較差,尤其是比特幣走勢,動輒大幾百個點,就目前行情來看,快速下跌后維持震蕩,整體趨勢依舊偏若,但價格中部出現真空區域,故一方面需要留意價格反彈動能.
1900/1/1 0:00:00