一個有點意思的三方博弈(轉)


 

可驗證隨機函數VRF的工作原理,在我的上一篇文章《對可驗證隨機函數VRF的簡明解釋》中已經做出講解了,這里不再贅述

VRF在Hash函數的功能基礎上引入私鑰SK,即使輸入值info是非常簡單、取值范圍非常有限的信息,比如0~9,在沒有獲得SK或proof的情況下,通過result也無法反推出info是什么,通過窮舉info的取值空間一樣不可行,這就給某些應用(不僅僅是區塊鏈共識算法)提供了優秀的基礎功能組件,這些應用一般都要求輸入域和輸出域是預先公開的,但是輸入域和輸出域之間的映射關系是必須在擁有私鑰的情況下才能計算推導出來的。

這里給出一個簡單的比值押注游戲設計示例:Alice和Bob通過一個隨機數系統Random押注,Alice出一個數A,Bob出一個數B,然后Random系統出一個和A、B緊密關聯的隨機數R,那么誰出的數更接近R,誰獲勝。在這個場景中,Alice和Bob必須先給出自己的數,但是又不能公開自己的數,因為要防止Random系統不公正,其可能暗中與某位參與者通信,這時就用到了VRF的特性。操作流程如下:

Alice和Bob分別存放押金到Random系統;

Alice生成自己的密鑰對SKA和PKA,並公布PKA;

Bob生成自己的密鑰對SKB和PKB,並公布PKB;

Alice出一個數A,只有自己知道;

Bob出一個數B,只有自己知道;

Alice計算resultA = VRF_Hash(SKA,A),並公布HA = sha256(resultA)到Random和Bob;

Bob計算resultB = VRF_Hash(SKB,B),並公布HB = sha256(resultB)到Random和Alice;

####不直接公布resultA或resultB,而是公布其哈希值,是為了防止Random暗中通知某一方,給予其調整A或B的機會

####哈希值給定后,Alice和Bob雙方都不可能再回退調整、修改【A、B、resultA、resultB】,接下來就是計算輸贏了

Alice公布resultA到Random和Bob,Random和Bob會校驗HA = sha256(resultA)是否成立;

Bob公布resultB到Random和Alice,Random和Alice會校驗HB = sha256(resultB)是否成立;

####若校驗失敗,則扣除作弊方的押金

Random系統計算並公布R = SHA256(resultA,resultB);

Alice和Bob驗證R = SHA256(resultA,resultB);

Bob給出VRF證明,Random和Alice都可以通過VRF驗證Bob出的數是B;

Alice給出VRF證明,Random和Bob都可以通過VRF驗證Alice出的數是A;

####若任何一方拒絕給出VRF證明,則扣除押金

現在有了A、B、R,通過比較A、B和R的差值就能得出誰更接近R,從而斷定Alice和Bob的輸贏結果。若Random系統的隨機數不公正,那么Alice或Bob必然不服,進而退出賭局,但是Random系統的隨機數是通過ResultA、resultB進行哈希后的結果,因此,其沒有作弊的可能,Alice和Bob必然會心服口服


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM