如果現在有一群極其富有但極其無聊的的 BTC 巨鯨,決定每年共同拿出 1000 個 BTC 舉辦一次俄羅斯輪盤。他們會準備一把左輪手槍,在可裝 6 發子彈的彈夾中只裝入一顆子彈,然后對準你的腦袋扣動扳機。 每次扣動扳機所產生的結果可以視為一種平行宇宙,由此在這個單一事件下,總共有對應著 6 種不同結局的平行宇宙,而每種平行宇宙產生的概率相同。這其中的 5 個平行宇宙會使你一夜暴富,甚至榮登《Forbes》封面,而剩下的唯一一個平行宇宙則會讓你死相難看,貽笑大方。
你愿意參與這個賭局嗎?愿意參與一屆?兩屆?還是每年都來碰碰運氣?
玩這個游戲需要勇氣,當然也需要動一些腦筋。83% 是一個很高的勝率,確定性達到 83% 的事情在生活中也并不多見。但如果有些貪婪的傻瓜選擇一直玩下去,那 20 年后他們中的絕大多數應該都可以在報紙的訃聞一欄找到。在這個假設的俄羅斯輪盤游戲里,規則制定得非常清楚,賠率可以計算,風險也可以衡量,所有條件信息都已提前披露,但在現實世界中,我們往往面臨的都是非對稱信息的動態博弈 (Asymmetric Information Game Theory)。左右我們命運的并不是一把左輪手槍,或是一副撲克牌。我們不知道有多少彈夾中有多少枚子彈,也不知道這副牌有多少花色。在無限多重平行宇宙和無窮大的風險條件下,我們的命運不可預知。
而這正昭示著我們生活在一個充滿隨機的世界中。
如費曼所言,自然界允許我們計算的只是概率。一旦我們具備了計算「概率振幅」的超能力,我們就可以成為先知,預測甚至改變未來。換句話說,誰掌握了隨機性,誰就拿到了命運的骰子,成為了上帝。
API3推出智能合約隨機數生成器,可在Avalanche、Moonbeam等區塊鏈上使用:5月3日消息,一種依賴量子力學來生成由區塊鏈技術支持的智能合約驅動數據集的隨機數生成器已經在十幾個加密貨幣協議上推出。
API3與澳大利亞國立大學量子光學組的一組研究人員合作,將其新產品ANU GRNG稱為第一個“真正的”智能合約隨機數生成器。
API3表示,公司正在啟動的13個區塊鏈中,有10個還沒有可用的隨機數生成器。其中一些協議使用不使用量子技術的隨機數生成器,這意味著它們的數據集是有限的,或者用行業術語來說是“偽隨機數”。
新服務可在包括Avalanche、Fantom、Moonbeam、Polygon和RSK在內的區塊鏈上使用,并計劃在未來進行更多集成。
該公司并不靠隨機數生成器盈利,而是將其引入其他產品線,比如預言機解決方案和數據集成服務,包括一個依賴于質押原生代幣運行的驗證池。(Blockworks)[2022/5/4 2:48:24]
將這種思維平移至加密世界中,生成隨機數的機器就可以被視為是傳達上帝神諭的使者。也正是因為扮演著這樣的角色,預言機 (oracle) 才由此得名。在過去關于預言機的文章中,我們已經指出由于區塊鏈系統的透明性,其鏈上生成的一切算法、輸入、輸出都會被暴露給系統參與者。因此在鏈上直接生成的隨機序列實際是可以被預測的。
一些典型的鏈上隨機數生成方法,比如未來區塊哈希,都存在很大的作弊空間和安全漏洞。舉一個簡單的例子,如果礦工在玩一個游戲,這個游戲的中獎金額是 10ETH,而區塊獎勵的金額卻只有 3ETH,那么礦工當然有明顯動機去作弊。他可以通過丟棄和不發布區塊來影響隨機序列的生成 (Block Withholding Attacks),從而為自己贏得在游戲中優勢。這相當于是你和礦工打同樣一局撲克,但人家可以換底牌。而如果將這種可以被篡改和預測的偽隨機序列應用到 Web3 各個場景中,我們不難想象其背后的巨大安全風險和不公平性:一旦黑客或攻擊者找到隨機算法,并測算出了隨機序列的初始輸入值,那么無論是 NFT 的空投發放,GameFi 中的極品裝備爆出,還是用戶個人錢包的私鑰地址生成,都有可能被操縱和篡改。
動態 | EOS競猜游戲HiGold Game遭隨機數攻擊:今天中午,11:57至12:01之間,PeckShield安全盾風控平臺DAppShield監測到黑客向EOS競猜類游戲HiGold Game發起連續攻擊,已實現獲利。針對異常獲利情況,PeckShield安全人員隨即和項目方取得聯系,及時暫停了游戲合約,避免了進一步資產損失。PeckShield安全人員在此提醒,開發者應在合約上線前做好安全測試,特別是要排除已知攻擊手段的威脅,必要時可尋求第三方安全公司協助,幫助其完成合約上線前攻擊測試及基礎安全防御部署。[2019/7/3]
那究竟怎樣的隨機數才是真正可信和安全的呢?這里我們就需要先對隨機數的分類做一個簡單了解。
一般地,我們將隨機數分成兩種:真隨機數(True Random Number, 后簡稱 TRN) 和偽隨機數(Pseudo-Random Number,后簡稱 PRN)
其中,偽隨機數又可以被細分為:弱偽隨機數和強偽隨機數。?
正如 「偽」這個詞所暗示的那樣,偽隨機數不是真正的隨機。所有在區塊鏈上生成的隨機數也都是「偽」的。本質上,PRN 是計算機軟件根據既定的數學公式和算法指令所輸出的看似隨機的數字序列,需要外部輸入一個初始值來充當 seed。并且和許多人天然的認知相反,計算機其實很難被用來生成一些偶然的條件,因為它本身就是可預測的設備。元器件是確定的,線路是預設的,代碼和算法命令是明確的,在種種固定的外界條件下,我們完全可以通過某些途徑(如上文提到的作弊方式)定位出序列結果。而能夠被算出的結果,emm 怎么不算…… 偽隨機呢?
動態 | EOS競猜游戲SKR EOS遭隨機數破解:今天凌晨2:25-3:42之間,PeckShield安全盾風控平臺DAppShield監測到黑客向EOS競猜類游戲SKR EOS發起連續攻擊,獲利上千個EOS,目前該游戲的Dice玩法已經暫停。PeckShield安全人員初步研究發現,此次是因游戲合約的Dice玩法隨機數問題被攻破。[2019/6/14]
真正的 TRN,是從噪音,混亂現象,量子隨機過程等物理現象中提取出來隨機性,引入計算機才得以生成的。直白一點講,就是把鏈下的一個大骰子接到了計算機。
在性質上,TRN 需要同時具備隨機性,不可預測性和不可重現性三重特質:
隨機性:數列完全雜亂無章,不存在統計學偏差,但不代表不會被看穿
不可預測性:在知道過去數列的前提下,依然無法預測接下來生成的數列
不可重現性:無法重現完全相同的數列,除非將原本的數列保存下來
強 PRN 只具備前兩者,而弱 PRN 只具備隨機性這一個性質,很容易被看穿。
我們說一個隨機數可信,安全,最起碼的就是指它不會被看穿。因此具有不可預測性的 TRN 和強 PRN 都可以被用作可信隨機數引入智能合約。弱 PRN 是不能被應用到比如生成密鑰,生成口令密碼等等密碼學相關的場景中的。
動態 | EOS競猜游戲LuckBet遭隨機數攻擊:據 PeckShield 態勢感知平臺12月22日數據顯示:今天凌晨02:10-04:03之間, 黑客(snowredgreen)向LuckBet游戲合約(luckbetadmin)發起攻擊,并將大部分不當EOS獲利轉向火幣交易所賬號(huobideposit)。PeckShield 安全人員跟蹤數據發現,此次攻擊因游戲合約隨機數問題被攻破。[2018/12/22]
至于如何生成可信安全的隨機數,目前來看最直接高效的方法就是通過預言機鏈接外部 API 并生成加密認證。比如 Chainlink 的可驗證隨機函數(VRF)服務,就是通過在測試網絡中接入外部 API,再用公鑰和智能合約的 seed 來驗證生成的強 PRN,然后將其傳輸至智能合約 (具體工作流程見下圖)。Chainlink 的 VRF 服務主要采取訂閱賬號的收費方式,用戶在將足夠的 LINK 代幣存入賬戶后即可通過發送訂閱請求來獲取其提供的隨機數。
再比如,API3 最近選擇通過和澳大利亞國立大學(ANU)量子光學團隊合作,為 dApp 和 Web3 各類產品提供量子隨機數生成(QRNG)服務,將其基于量子現象的生成 TRN 驗證上鏈交付給請求者(具體工作流程見下圖)。QRNG 也是目前唯一一個生成 TRN 的服務機制,根據其白皮書的相關論述,QRNG 能在最大程度上防止女巫攻擊,并且這一功能完全免費使用。
BM解答EOS區塊鏈中隨機數的問題:據金色財經合作媒體IMEOS報道:今天,BM在EOS開發者群回答了EOS區塊鏈的安全性問題,因為有人對基于生成隨機數的智能合約是否安全可靠,節點是否容易作弊提出了質疑。他回答道,保證安全性最簡單的方法是讓參與雙方共同承擔責任。如果用戶信任區塊生產者,那么他就可以獲取區塊生產者在記錄交易的特定時機獲取某些信息的哈希值,這些哈希值將作為“隨機數”以確保安全性。[2018/4/25]
在理解了可信隨機數的定義與來源后,我們來談談一個更實際的問題:隨機數在 Web3 到底有什么用?
事實上,隨機數在幾乎所有的 Web3 場景和用例中都不可或缺。
1. GameFi??
在游戲中需要用到概率分配的情況比比皆是,RPG 游戲便是一個典型的例子。有些角色非常稀有,具有罕見的屬性,而有些角色就極為平常。通常越是稀有的角色,就價值越高,越能幫助用戶獲得高額的經濟回報。比如 Axie,每個精靈角色都有六個組成部分,每個部分都有不同的屬性和能力。游戲廠商想要為用戶創造個性化的游戲體驗,就必須把角色的分配機制做好,把分配概率設置得盡量公平。
在 PVP 對戰中,玩家獲勝的幾率和贏得獎賞的多少都取決于他們在對戰中被分配到的對手。如果游戲配對機制不公平,很有可能直接導致玩家的流失。而在世界探索類游戲中,玩家在探索地圖過程中獲得稀有物品和裝備的幾率也需要一個保證公平的概率模型。在卡牌類游戲中,玩家使用卡牌的順序很大程度上充當著比賽的勝負手。在射擊類游戲中,射擊的命中率,角色復活地點的選擇都會對玩家的游戲體驗造成一定影響。
上述提到的種種游戲歸根結底,本質都是需要通過注入一定的不可預測性來增強游戲的可玩度。而不可預測性的產生,就必然需要引入可信的隨機數。
2. NFT
和 GameFi 中角色屬性具有不同構成一樣,NFT 的細節也由不同的屬性組成。比如 BAYC 的 NFT,就包括背景、衣著、耳飾、眼睛、毛發、帽子和嘴七個不同的屬性,而屬性的稀有度實際就決定了該 NFT 的價值。對于稀有度分配和屬性總量上限的制定,都可以通過利用可信隨機數來解決。
此外,隨著越來越多 NFT 社區的建立和成長,項目方也經常會在特殊節日里或是達成某些里程碑時,通過發放隨機的 NFT 空投獎勵來激發成員的忠誠和活躍度。而空投哪些地址,怎樣保證空投的公平性,都是需要項目方謹慎地根據一定發放機制來執行。可信隨機數在這類情景下就可以被視為一種良好的解決方案。事實上如今大部分 NFT 的空投激勵活動也都是集成 Chainlink VRF 等服務開展的。
3. DeFi
類似 Olympus 這樣的 DeFi 協議和算法穩定幣協議中,其質押機制通常會設有變基質押(rebase)流程來解決份額稀釋問題,或是激勵特定的市場行為,比如保持算穩的價格錨定。而 rebase 機制的一個「敏感性」強變量就是其周期時間。
設定的 rebase 周期時間如果長期不變,就很可能會被短期套利者利用。因此 rebase 機制設計可以應用可信隨機數,來決定一個變更調整的大致周期。
在一些創新型的 Yield Farming 協議中,其獎勵機制也會引入一定的波動性來提高用戶的參與度。參與度高貢獻大的用戶的年化收益率會區別于普通或是參與度較低的用戶。因而資金池中獎勵大小的分配和收益幅度的增減,都會需要使用隨機數來調節和建立模式。
4. DAO
在 DAO 的治理中經常需要成員為組織做出一些關鍵決策,一個龐大的 DAO 社區往往可能通過設立董事會等核心管理層來更高效地執行日常決策。這些董事會和管理人員的選擇和增補需要一個公平透明的機制來進行,而引入可信隨機數對于這類機制的設立可以被認為是一個最優及最便捷的選擇。
此外,在一些涉及到大量資金管理或是專門進行投資的 DAO 中,隨機數也可被用以提高成員身份認證系統的安全性,防止黑客或惡意攻擊者逆向工程身份認證的過程,保證 DAO 內資金庫的安全。
5. L1 共識機制中 VRF 的運用
新型公鏈需要面對的一個很大問題就是分片(shard)后安全性的降低。在未分片前,網絡中所有的驗證者共同驗證所有交易;但在分片后,這些驗證者被平均分配到每個分片上的進行驗證,這就使得每個分片被 fork(51% 攻擊)的幾率大大提升。解決這個安全性問題的一個良好方案就是讓攻擊者無法提前預知每個分片的驗證者,而這就需要引入一定的隨機性和不可預測性。NEAR 就是通過 VRF 服務對驗證者進行隨機分配,從而隱藏驗證者具體驗證的分片信息。
寫在最后
隨機性之所以令人著迷,是因為它意味著不確定,意味著一種可能性。可能性能為我們帶來希望,也會為我們帶來恐懼,所以決定論與非決定論的爭執綿延至今。而上帝究竟擲不擲骰子其實也沒有那么重要。也許世間萬物都在無可挽回地走向大數定律,也許所有宿命般的相識都不過是概率上的偶然,也許你、我、他都只是在 Web3 隨機漫步的傻瓜。
但不知道答案,總是比得到一個錯誤的答案有意思得多。正如卡洛?羅威利在書中提到的那樣:「What’s nonapparent is much vaster than what’s apparent (看不清的比看得清的更廣闊)」。
保持愚蠢,敬畏隨機。
金色周刊是金色財經推出的一檔每周區塊鏈行業總結欄目,內容涵蓋一周重點新聞、礦業信息、項目動態、技術進展等行業動態。本文是其中的新聞周刊,帶您一覽本周區塊鏈行業大事.
1900/1/1 0:00:00Gaby Goldberg 在她的精彩文章《社交代幣悖論》?中寫道,如果你打算用代幣的價格來衡量一個社區的價值,那么你就會減少對那些有價值的貢獻者的接觸.
1900/1/1 0:00:00前言:已故哲學家約翰·羅爾斯 (John Rawls) 的思想在我的世界觀中占據了重要位置.
1900/1/1 0:00:00在元宇宙熱潮當下,世人皆知是尼爾·斯蒂芬森在自己的小說《雪崩》(Snow Crash)中創造并詳細描述了元宇宙(Metaverse)這一概念.
1900/1/1 0:00:00加密貨幣投資者和交易員從穩定幣Tether (USDT)中兌現了77億美元,導致其市值在過去7天內下降了7.8%,至760億美元.
1900/1/1 0:00:00眼下,數字化轉型可謂如火如荼,數字化轉型最終帶來的一個樂觀的結果就是充分釋放數據要素生產力,然而,知易行難,真正要做起來,卻沒有那么容易,試想.
1900/1/1 0:00:00