Solidity知識(shí)點(diǎn)集 — 隨機(jī)數(shù):(八)

隨機(jī)數(shù)

Solidity 中最好的隨機(jī)數(shù)生成器是 keccak256 哈希函數(shù).

// 生成一個(gè)0到100的隨機(jī)數(shù):
uint randNonce = 0;
uint random = uint(keccak256(now, msg.sender, randNonce)) % 100;
randNonce++;
uint random2 = uint(keccak256(now, msg.sender, randNonce)) % 100;

這個(gè)方法很容易被不誠(chéng)實(shí)的節(jié)點(diǎn)攻擊

在以太坊上, 當(dāng)你在和一個(gè)合約上調(diào)用函數(shù)的時(shí)候, 你會(huì)把它廣播給一個(gè)節(jié)點(diǎn)或者在網(wǎng)絡(luò)上的 transaction 節(jié)點(diǎn)們。 網(wǎng)絡(luò)上的節(jié)點(diǎn)將收集很多事務(wù), 試著成為第一個(gè)解決計(jì)算密集型數(shù)學(xué)問(wèn)題的人,作為“工作證明”咽袜,然后將“工作證明”(Proof of Work, PoW)事務(wù)一起作為一個(gè) block 發(fā)布在網(wǎng)絡(luò)上。

一旦一個(gè)節(jié)點(diǎn)解決了一個(gè)PoW, 其他節(jié)點(diǎn)就會(huì)停止嘗試解決這個(gè) PoW, 并驗(yàn)證其他節(jié)點(diǎn)的事務(wù)列表是有效的挺举,然后接受這個(gè)節(jié)點(diǎn)轉(zhuǎn)而嘗試解決下一個(gè)節(jié)點(diǎn)。

這就讓我們的隨機(jī)數(shù)函數(shù)變得可利用了

我們假設(shè)我們有一個(gè)硬幣翻轉(zhuǎn)合約——正面你贏雙倍錢(qián)烘跺,反面你輸?shù)羲械腻X(qián)湘纵。假如它使用上面的方法來(lái)決定是正面還是反面 (random >= 50 算正面, random < 50 算反面)。

如果我正運(yùn)行一個(gè)節(jié)點(diǎn)滤淳,我可以 只對(duì)我自己的節(jié)點(diǎn) 發(fā)布一個(gè)事務(wù)梧喷,且不分享它。 我可以運(yùn)行硬幣翻轉(zhuǎn)方法來(lái)偷窺我的輸贏 — 如果我輸了脖咐,我就不把這個(gè)事務(wù)包含進(jìn)我要解決的下一個(gè)區(qū)塊中去铺敌。我可以一直運(yùn)行這個(gè)方法,直到我贏得了硬幣翻轉(zhuǎn)并解決了下一個(gè)區(qū)塊屁擅,然后獲利偿凭。

所以我們?cè)撊绾卧谝蕴簧习踩厣呻S機(jī)數(shù)呢?

因?yàn)閰^(qū)塊鏈的全部?jī)?nèi)容對(duì)所有參與者來(lái)說(shuō)是透明的, 這就讓這個(gè)問(wèn)題變得很難派歌,目前沒(méi)有標(biāo)準(zhǔn)答案弯囊。

盡管這個(gè)方法在以太坊上不安全,在實(shí)際中胶果,除非我們的隨機(jī)函數(shù)有一大筆錢(qián)在上面匾嘱,你游戲的用戶一般是沒(méi)有足夠的資源去攻擊的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末早抠,一起剝皮案震驚了整個(gè)濱河市霎烙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖吼过,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咪奖,居然都是意外死亡盗忱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)羊赵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)趟佃,“玉大人,你說(shuō)我怎么就攤上這事昧捷∠姓眩” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵靡挥,是天一觀的道長(zhǎng)序矩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)跋破,這世上最難降的妖魔是什么簸淀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮毒返,結(jié)果婚禮上租幕,老公的妹妹穿的比我還像新娘。我一直安慰自己拧簸,他們只是感情好劲绪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著盆赤,像睡著了一般贾富。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弟劲,一...
    開(kāi)封第一講書(shū)人閱讀 51,258評(píng)論 1 300
  • 那天祷安,我揣著相機(jī)與錄音,去河邊找鬼兔乞。 笑死汇鞭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的庸追。 我是一名探鬼主播霍骄,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼淡溯!你這毒婦竟也來(lái)了读整?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咱娶,失蹤者是張志新(化名)和其女友劉穎米间,沒(méi)想到半個(gè)月后强品,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屈糊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年的榛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逻锐。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡夫晌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昧诱,到底是詐尸還是另有隱情晓淀,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布盏档,位于F島的核電站凶掰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜈亩。R本人自食惡果不足惜锄俄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望勺拣。 院中可真熱鬧奶赠,春花似錦、人聲如沸药有。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)愤惰。三九已至苇经,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宦言,已是汗流浹背扇单。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奠旺,地道東北人蜘澜。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像响疚,于是被迫代替她去往敵國(guó)和親鄙信。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容