AIgorand区块链中VRF随机函数的应用
VRF(Verifiable Random Function)
- 可驗證隨機函數(shù)可以看作是一個隨機預(yù)言機,即可以通過任意的一個輸入,獲得一個隨機數(shù)輸出:
- 輸出的結(jié)果(Output)是一個隨機數(shù),其數(shù)值會均勻分布在值域范圍內(nèi)
- 對于相同的Input,輸出的結(jié)果Output必須是一致的
- 可驗證隨機函數(shù)比隨機預(yù)言機多了一個非交互的零知識證明,可以用零知識證明來驗證該隨機數(shù)輸出的正確性,表明這個隨機數(shù)的確是由特定的某個人生成的,而不是偽造的。
可驗證隨機函數(shù)組成
- VRF GEN:生成秘鑰,生成一個公私秘鑰對
- VRF VAL:生成隨機數(shù)進行輸出
- VRF PROVE:計算零知識證明
- VRF VER:驗證隨機數(shù)輸出
生成隨機數(shù)和其證明的過程在本機執(zhí)行,輸入是私鑰和一個值。輸出隨機數(shù)以及它的零知識證明。其他節(jié)點收到我發(fā)出的隨機數(shù)和證明之后,結(jié)合生成該隨機數(shù)的節(jié)點的公鑰,即可對該隨機數(shù)處進行驗證
簡單的方法:通過VRF生成了這個隨機數(shù)value之后,可以通過設(shè)置一個全網(wǎng)公認閾值來判斷是否被抽中,比如都認同了一個值100為閾值,假設(shè)某輪我隨機到101那么,我就被允許進行下一步的操作
然而這種簡單的方法,沒有辦法防止女巫攻擊,女巫攻擊可以生成很多的賬號,每個賬號都進行隨機,進行干擾。所以現(xiàn)在大部分的VRF抽簽方案都采用基于權(quán)益來進行票數(shù)分配,也就是每個人都有投票的機會,但是因為個人的權(quán)益不同,每個人的票的權(quán)重也是不一樣的,然后進行抽簽算法的設(shè)計。這樣的話,如果將一個權(quán)重很高的賬戶拆分成權(quán)重很低的很多個賬戶,每一個的賬戶的投票的權(quán)重很低,因此對于系統(tǒng)的進行投票的干擾性很小。
?
無交互抽簽
?
最普遍的一種方案,通過二項分布來進行抽簽結(jié)果的計算。
- 首先通過私鑰生成了value,這個value實際上可以看作是大的正整數(shù),假設(shè)是256bit的,那么它的取值范圍應(yīng)該處于0到2的256次方之間。相應(yīng)的它與2的256次方相除,可以得到一個0到1之間的值。
- 將這個值放到二項分布的累積分布中進行比對,可以得到相應(yīng)的值
- 如果這個值大于零,就相當于抽到了可以進行下一步的簽。
二項分布
驗證
- 將這個值和之前VRF生成的和一起,廣播給其他人,其他任何收到的用戶結(jié)合廣播者的公鑰以及全網(wǎng)都知道的值,則可以驗證以下兩個條件是否成立:
- 利用驗證是否正確
- 利用通過二項分布函數(shù)得到j(luò)'是否與j相等
假設(shè)兩個條件均成立,那么就證明這個抽簽結(jié)果是正確的,是可信的。到此為止,從抽簽生成到驗證的過程就完成了。
優(yōu)點
1、首先它的抽簽過程不需要與其他通信,直接在本機就能夠的到這個抽簽結(jié)果,而且這個x輸入是大家公認的,針對同一個x的輸出value是固定的,因此無法通過多次嘗試來改變抽簽結(jié)果
2、某個節(jié)點收到其他節(jié)點的抽簽信息之后,可以用附帶的證明,來證明這個隨機數(shù)的正確性,保證它的確是由私鑰的擁有者計算出來的。因此這個抽簽結(jié)果是無法被偽造的。
3、VRF主要用來的得出一個偽隨機數(shù),抽簽的部分主要是由一個二項分布函數(shù)負責(zé),而通過構(gòu)建二項分布的參數(shù),我們可以很方便的控制需要被得出的中簽權(quán)益的個數(shù),適配不同的需要抽簽的場景。
參考鏈接
- 區(qū)塊鏈中VRF的應(yīng)用及原理解析
總結(jié)
以上是生活随笔為你收集整理的AIgorand区块链中VRF随机函数的应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【超实用】各种单位换算表大全
- 下一篇: 数据治理与企业数字化转型