什麼是可驗證隨機函式VRF

2021-08-20 01:44:43 字數 1218 閱讀 9598

因為可驗證隨機函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,pk–>result

什麼是函式

從數學到程式設計,了解什麼是函式!函式 function 的定義通常分為傳統定義和近代定義,函式的兩個定義本質是相同的,只是敘述概念的出發點不同,傳統定義是從運動變化的觀點出發,而近代定義是從集合 對映的觀點出發。函式的近代定義是給定乙個數集a,假設其中的元素為x,對a中的元素x施加對應法則f,記作...

什麼是函式?

1 函式是乙個可以多次使用的功能 塊,乙個封閉的 空間 它可以在 裡隨意呼叫。利用函式的封裝可以減少重複 的開發,提高 的利用率。函式可以傳參,利用函式內預先定義的內容對傳入的不同資料引數進行處理。2 函式也是物件,也可以為值,它可以存在於變數,陣列和物件之中。3 函式可以當參傳遞給函式,並且由函式...

什麼是函式

在7.1章的學習中,作者挑戰了不引用相應的標頭檔案而呼叫函式。一開始,我自然是不知道如何運作的,只能把三個流程打出來,才慢慢認識到作者在幹什麼以及函式的本質 這個函式十分簡單,只要呼叫了標頭檔案string.h,就可以便捷的使用strcmp函式,比較大小。但如果沒有這個標頭檔案呢?在這裡插入描述 在...