比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

區塊鏈:技術解析如何為 Solidity 智能合約生成隨機數_以太坊

Author:

Time:1900/1/1 0:00:00

使用區塊哈希作為隨機源在很多場景下都能很好地發揮作用,但當涉及到很大利益的時候可能會讓礦工作弊。

原文標題:《隨機數與區塊鏈》撰文:MarkusWaas翻譯:登鏈翻譯小組

當我們談論隨機數和區塊鏈時,實際上是兩個問題:

如何在智能合約中生成隨機數?如何為股權證明系統產生隨機數?或者更一般地說,如何在公共分布式系統中產生可信的隨機數?當然這兩個問題也有一些重疊的地方,一些用于第一個問題的方法也可能用于第二個問題,反之亦然。但我可以告訴你,這兩個問題的最佳解決方案很可能還沒有找到。事實上,這些問題真的很重要,用著名的唐納德的話說就是:「隨機數不應該用隨機選擇的方法生成」。

為什么這么難?嗯,這是由于隨機數的性質。人們可以很容易地創造出一個看似隨機的數字流,但這個數字流遵循某種已知的邏輯,從使攻擊者能夠預測到數字。

我們可能會天真地提出,每個節點在本地計算出一個隨機數。然后在廣播出這個隨機數。由于每個節點都會做同樣的事情,所以可以用一個函數來計算最后的隨機數,這個函數將之前本地產生的所有數字作為輸入,并產生一個單一的輸出結果隨機數,例如:v1⊕v2---⊕vn。然而,最后一個廣播本地隨機數的節點可以等待,直到他從其他節點收到隨機數。然后,他可以通過選取一個本地隨機數R以滿足vx=R⊕v1⊕v2--⊕vn來產生分布式系統的任何最終隨機數。顯然,這樣一個產生隨機數的系統是有缺陷的。

Joy:鏈上ChainUP已推出了DEX系統技術解決方案:9月9日15:00,鏈上ChainUP深圳負責人Joy做客B·Talk “穿越變局”第十期專訪, 本期主題為《DeFi如日中天,老牌技術服務商ChainUP如何助力交易所布局規劃》。

?對于DeFi項目的安全和風險,Joy表示,對一般用戶來說,參與DeFi項目要看是否做過安全審計,于項目方而言,可以選擇技術實力較強的技術服務商。而交易所在確保資產安全的前提下可以快速抓住這波熱潮,吸引流量。

Joy提到,鏈上ChainUP已在第一時間推出了DEX系統技術解決方案Chainswap,并支持各種主鏈開發改造DAPP,助力客戶布局去中心化賽道。同時接入并上線了30+DeFi熱門幣種,并且可以通過WaaS及流動性為非鏈上ChainUP系交易所提供此類服務。[2020/9/9]

我們需要更好的方式。如何解決隨機數的這些問題,值得繼續關注詳細介紹。你也可以看看預測以太坊智能合約中的隨機數。本文是討論第一個問題的良好開端。而對于第二個問題,現在有一些有趣的想法,也有一些看似瘋狂的想法,比如以太坊基金會的新想法,建立成千上萬的ASIC來驗證VDF。

信通院何寶宏:區塊鏈為互聯網建立信任關系提供技術解決思路:5月2日消息,可信區塊鏈推進計劃在線開展本年度第一次全體會議,中國信通院云計算與大數據研究所所長何寶宏參加會議并表示,區塊鏈為互聯網上建立信任關系、進行價值傳遞提供了一種非常好的技術解決思路,有助于機構、企業提升透明度、可信度,構建新型產業協作范式,加速我國經濟的數字化轉型發展。當前,區塊鏈行業正在快速發展中,經歷過去幾年的市場歷練,需要從核心技術、行業應用和監管合規等多個方面尋求突破和激發創新。(新華網)[2020/5/2]

為Solidity智能合約生成隨機數

現在,大多數人都知道,當人們試圖在智能合約中生成隨機數時,會面臨一個問題。遺憾的是沒有一個萬能的解決方案,讓我來介紹一下現有的解決方案。

簡短的失敗方案回顧

我們簡單的看一下常見的方案,以及它們為什么不好。在這里我就不詳細描述,因為已經有其他的文章描述的很好了。

使用區塊變量作為隨機數

block

uint256randomNumber=uint256(blockhash(blockHashesToBeUsed));blockHashesToBeUsed=0;gameWeiValues=0;if(randomNumber!=0||randomNumber%2==0){uint256winningAmount=gameWeiValues*2;msg

聲音 | 網信將采用區塊鏈等技術解決小微企業息不對稱問題:據鳳凰網消息,近日,網信普惠風險官周龍在“2018零壹財經新金融夏季峰會”上表示,“為了解決小微企業的信息不對稱問題,網信通過采用區塊鏈、云計算技術為處于供應鏈末端的小微企業提供真實的數據管理技術,將金融科技與供應鏈相結合。通過對信息流、物流、資金流的風險把控與價值固化,實現“三流”合一。借助先進的算法與區塊鏈技術,實現高效的數據收集與處理,實現實時動態智能化監控,解決供應鏈生態圈中各節點的信任問題,從而提升供應鏈金融服務中小微企業的能力。”[2018/7/23]

}

randomNumber!=0的檢查是必不可少的,因為Solidity只能回溯256個塊。因此,如果玩家等待的時間超過256個區塊,會強制為0。例如,這已經被用于黑客SmartBillions。

所以,使用未來的區塊哈希,就很好嗎?

這要看情況!你是否允許中獎金額高于區塊獎勵的賭注?那么就要注意礦工的操作。如果我們假設區塊獎勵為3個ETH,任何超過6個ETH的賭注實際上都會給礦工提供作弊的動機。雖然礦工不能自由選擇區塊的哈希值,但他可以選擇不發布新發現的區塊哈希值來影響隨機數。

衛寧健康:未來將嘗試用區塊鏈技術解決電子簽名與電子病歷集成:衛寧健康(300253.SZ)4月27日在互動平臺表示,在電子病歷系統中,醫生和患者的簽名電子化目前是使用CA證書集成到我們的產品中,供用戶使用。未來,公司將嘗試用區塊鏈技術去解決電子簽名與電子病歷的集成。[2018/4/28]

承諾模式

自1981年以來,承諾模式的第一個版本已經存在。看一下MichaelBlum的電話里翻硬幣。這是一個有趣的閱讀。我們可以簡單地在Solidity中使用哈希來實現,這是怎樣的呢?

我們用開頭所說的天真想法:

每個節點在本地計算一個隨機數。它進一步廣播這個隨機數。由于每個節點都會做同樣的事情,所以可以使用一個函數計算最終的隨機數,該函數將之前本地產生的數字作為輸入,并產生一個單一的輸出,例如,v?⊕v?---⊕v?。

現在,在承諾模式下,一個節點將不廣播隨機數,而是先計算該數的哈希值。這個哈希將是隨機數值的承諾。然后它就會廣播承諾哈希。這有什么用?

承諾,顧名思義,一個節點之后再提交原始隨機數值,因為不可能找到碰撞。因此,在揭示階段,一個節點不能再改變其秘密原始隨機數值。當然,每個節點只有在收到所有其他節點的承諾后,才開始揭示階段。程序是這樣的:

網絡安全公司WISeKey利用區塊鏈技術解決非洲土地登記糾紛:網絡安全公司WISeKey在盧旺達的土地登記處使用區塊鏈技術。非洲部分地區經常缺乏文件,導致土地糾紛,因為不清楚誰擁有土地。即使有記錄,有時也會被篡改。無法刪除的記錄,使用區塊鏈可以用來防止這些爭議。區塊鏈是一種分布式分類賬。最大的不同之處在于,這個分類賬沒有存儲在一個地方,它分布在世界各地的數百,甚至數千臺計算機上。網絡中的每個人都可以訪問分布式分類賬的最新版本。所以它是開放的、透明的、可審計和可核實的記錄。[2018/1/5]

所有參與者,P1...Pn,每人產生一個秘密隨機值Vi。Pi計算其秘密隨機值的承諾哈希值:Ci=H(Vi)。每個Pi先發送Ci。在收到所有的Ci后,每個Pi發送Vi。所有參與者可以通過檢查Ci==H(Vi)來驗證接收的秘密隨機值。當所有的Vi都被揭示和驗證后,隨機數生成的結果將是R=V1⊕V2⊕...⊕Vn。(XOR)如果有一個參與者沒有透露他的Vi,他就自動輸了。

聽起來好得不像真的?你是對的。這只適用于兩個節點,例如,在一個有銀行和單個玩家的賭場中。我已經在Solidity和AWSLambda中實現了一個概念驗證的原型。

讓我們看看為什么這只對兩個節點有效。

我們面臨最后一個節點Pi揭示隨機數值的問題,因為它可以比其他人更早地用它秘密值計算最后的R,這就是最后揭示者問題。它揭示的Vi可能無法再影響R,然而,它可能選擇不揭示該值,使所有其他各方除了中止隨機數生成外沒有其他選擇。如在兩個用戶的情況下,不揭示的節點可能會輸掉這場賭局。不過,在東方參與情況下是不夠的。由于多個用戶參與,只有一個不暴露方會有損失,所以攻擊者可能會做以下事情:

創建很多數量的實體,并與所有實體一起參與賭注。在揭示階段,保留他最后一個實體的秘密隨機值。等到其他每個實體都揭示出它們的隨機值,然后計算出最終結果。如果計算出一個積極的結果,則選擇揭示最后一個實體的秘密值。否則,就不透露最后的數值。賭博必須中止,玩家將獲得退款。攻擊者只輸了一個實體的賭注。多方參與承諾模式

多方環境的修改相當簡單,但也有一些重大的缺點。

修改:除承諾外,每個參與者還附上抵押品。揭曉階段結束后,將向每一個揭曉實體退還抵押款。如果參與者不披露自己的秘密值,他們不僅輸掉了賭局,還輸掉了自己的抵押品。在這種情況下,所有不披露實體的質押物被所有披露的實體瓜分,或者選擇銷毀。

影響:不幸的是,所需的抵押規模可能高得離譜。給定1萬名參與者的抽獎,每人票費4美元,參與者在退還參與者的抵押金總額近4億美元。

另外,也可以將質押物燒掉。對于我們的彩票例子來說,燃燒抵押品將必要的抵押規模降低到39992美元,這對于大多數實際使用案例來說還是太高了。

有一個類似的實現,但迄今尚未在實踐中使用。在ETH2.0中,Randao也將作為基礎隨機信標,上面有VDF。我們可以在后面的文章中詳細討論ETH2.0中的用法。

結論

我們已經研究了Solidity中多方隨機數的兩種方法。雖然blockhash如果使用得當,在很多場景下都能很好地發揮作用,但當涉及到很大利益的時候,它的表現就不盡如人意了,這會讓礦工作弊。其次,承諾模式對于雙人方案非常有用。不幸的是,對于大多數現實世界使用案例的多人情況來說,承諾模式是不夠的。那我們能做什么?一種選擇可能是使用預言機,我們可以在后面相關博文中討論。

參考鏈接

預測以太坊智能合約中的隨機數:https://blog.positive.com/predicting-random-numbers-in-ethereum-smart-contracts-e5358c6b8620

黑客SmartBillions:https://www.reddit.com/r/ethereum/comments/74d3dc/smartbillions_lottery_contract_just_got_hacked/

電話里翻硬幣:https://www.cs.cmu.edu/~mblum/research/pdf/coin/

類似的實現:https://github.com/randao/randao

來源鏈接:soliditydeveloper.com

免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。

以太坊

以太坊

開放的分布式區塊鏈應用平臺,通過其專屬加密貨幣Ether以太幣提供去中心化的虛擬機,處理點對點合約。允許任何人建立和使用通過區塊鏈技術運行的去中心化應用,沒有任何欺詐、審查、第三方監管。以太坊的概念首次在2013至2014年由維塔利克·布特林VitalikButerin受比特幣啟發后提出,旨在共同構建一個更全球化、更自由、更可靠的互聯網。以太坊EthereumETHERC20ERC-20ERC20ERC721ERC-721以太坊2.0查看更多

Tags:區塊鏈ETHAND以太坊區塊鏈存證是什么意思eth錢包地址在哪里Oceanland以太坊最新價格行情價

芝麻開門交易所下載
TARA:朋友借錢沒寫欠條?Taraxa幫你“文明追賬”_Taraxa

整理|秦曉峰 編輯|郝方舟 出品|Odaily星球日報想象這樣一個場景:朋友在微信上跟你聊天,找你借錢,并且沒寫欠條,最終爽約欠賬,你該怎么辦?類似這樣的「口頭協議」,在日常生活中隨處可見.

1900/1/1 0:00:00
以太坊:CellETF:以太坊價格回調才是眾望所歸?_SIU

以太坊gas費用再創新高?以太坊價格回調才是眾望所歸?該如何使用CellETF參與后市投資?以太坊gas費用再創新高據歐科云鏈OKLink數據顯示,昨晚11時左右.

1900/1/1 0:00:00
區塊鏈:傳統茶業的改變與創新:“有信任”的鏈接_區塊鏈域名如何注冊

2020年開局,由于疫情茶行業陷入停擺狀態。茶產業鏈自上而下多方面自救,利用直播和短視頻營銷破局,實現全產業的平穩發展。特別是茶葉出口,在全球疫情的情況下實現了量減價增,打出漂亮的“突圍戰”.

1900/1/1 0:00:00
比特幣:閃崩10000美元后暴漲 比特幣巨震 一天37萬人爆倉 245億灰飛煙滅_GER

剛剛過去的一天,比特幣坐上“過山車”。先是周一凌晨一路猛漲至58332美元的歷史新高,后突然下跌,日內最低下跌10000美元,至47780美元.

1900/1/1 0:00:00
ADAX:關于警惕不法分子冒充、濫用“霍比特”名義詐騙的嚴正聲明及風險提示_Joincoin

尊敬的用戶: 近期市場上出現某些第三方擅自利用“霍比特”名義進行仿冒客服私下拉群、誘客帶單、不實宣傳、惡意關聯等形式的詐騙行為,給霍比特的用戶權益及其品牌聲譽造成了不同程度的影響.

1900/1/1 0:00:00
GATE:Gate.io已發交易WOO贏$20,000活動獎勵公告_gate.io手機版下載蘋果id

Gate.io交易WOO贏$20,000活動已圓滿結束,根據活動規則,我們已為獲獎用戶發放了活動獎勵。用戶可進入“賬戶管理—我的資金—賬單明細”查詢獎勵發放情況。活動詳情及規則請點擊查看.

1900/1/1 0:00:00
ads