對可驗證隨機函數 VRF 的簡明解釋

因爲可驗證隨機函 VRF 對設計區塊鏈共識算法有很大幫助,最近就研究了一下 VRF,接下來 分享我對 VRF 和共識算法的最新理解

要理解 VRF 的工作原理,首先要理解哈希函數,這是基礎知識,比如 SHA256,SHA3 等等,不必詳細討論。先理解一下這裏說的“隨機”是什麼意思:

一個理想的哈希函數,其值域應該是離散的、均勻分佈的,給定不同的輸入值,其輸出值應該沒有規律,隨機的灑落、分佈在值域區間內。

再看一個簡單的哈希函數變種,即 結合了密鑰 secret 的哈希函數 ,比如 result = SHA256 (secret,info),那麼要得到結果 result,僅僅擁有 info 是不夠的,必須要知道 secret 才能計算出來,或者說我們已經擁有了結果 result 和 info,但是必須知道 secret 才能驗證 info 和 result 是否是對應匹配的,這就是帶密鑰的哈希函數。

然而這裏引申出了一個問題:有沒有可能在不出示密鑰 secret 的情況下,驗證 result 和 info 是對應匹配的?於是就有了 可驗證隨機函數 Verifiable Random Function (VRF)

簡單來說,也就是結合了非對稱密鑰技術的哈希函數,比如 result = VRF_Hash (SK,info),SK 是私鑰,不公開,祕密保存,和 SK 配對的 PK 是公鑰,需公開給驗證者。

具體的操作流程如下:

1、證明者生成一對密鑰,PK、SK;

2、證明者計算 result = VRF_Hash (SK,info);

3、證明者計算 proof = VRF_Proof (SK,info);

4、證明者把 result 和 proof 遞交給驗證者;

5、 驗證者計算 result = VRF_P2H (proof)是否成立,若成立,繼續下面的步驟,否則中止;

6、 證明者把 PK,info 遞交給驗證者;

7、 驗證者計算 True/False = VRF_Verify(PK, info, proof) ,True 表示驗證通過,False 表示驗證未通過。

所謂的 驗證通過 ,就是指 proof 是否是通過 info 生成的,通過 proof 是否可以計算出 result,從而推導出 info 和 result 是否對應匹配、證明者給出的材料是否有問題。在整個操作流程中,證明者始終沒有出示自己的私鑰 SK,驗證者卻可以推導出 info 和 result 是否對應匹配,這就是 VRF 的妙用。

也可以從哈希函數的演化歷史角度做個總結:

原始的哈希函數:info –> result

帶密鑰的哈希函數:(info, secret)–> result

公鑰版本的哈希函數(即 VRF):(info,SK)–>(proof,verified by PK)–> result

作者:Karl 嘉楠區塊鏈研究院高級研究員

嘉楠區塊鏈:嘉楠耘智(Canaan Inc.)旗下區塊鏈板塊。

對可驗證隨機函數 VRF 的簡明解釋