據(jù) IMEOS 報道剪芥,EOSBet 電報消息稱垄开, EOSBet 再次遭到黑客攻擊,資金被盜近14萬税肪,目前已被交易所鎖定溉躲,從今日下午兩點開始榜田,EOSBet 合約服務(wù)暫停。攻擊者利用EOSBet 合約在檢驗收款方時存在的漏洞锻梳,偽造轉(zhuǎn)賬通知箭券,給自己的智能合約賬號(eosbethack)轉(zhuǎn)真EOS〕簦總計從EOSBet 獲利約14萬個EOS邦鲫。黑客曾使用 whoiswinner1 賬號進行攻擊嘗試。
EOSBet 是運用區(qū)塊鏈技術(shù)基于EOS 公鏈開發(fā)的一款菠菜游戲神汹。
上線僅兩個月,盈利近百萬的 EOSBet 昨日又因營銷活動推向了一個小高潮庆捺,日活突破千人, 穩(wěn)坐 EOS DAPP 當日榜首。
不過好日子才興奮了一天, EOSBet卻因代碼漏洞屁魏,再次被黑客攻擊了滔以。
這是 EOSBet 上線以來第三次被攻擊了!
EOSBet是投機客的天堂,卻更是黑客的溫床氓拼。我們來看看EOSBet存在的問題你画。
?EOSBet工作流程圖
ABI
"actions": [{
????? "name":"initcontract",
????? "type":"initcontract",
?????"ricardian_contract": ""
??? },{
????? "name":"newrandkey",
????? "type":"newrandkey",
?????"ricardian_contract": ""
??? },{
????? "name":"suspendbet",
????? "type":"suspendbet",
?????"ricardian_contract": ""
??? },{
????? "name":"resolvebet",
????? "type":"resolvebet",
?????"ricardian_contract": ""
??? },{
????? "name":"betreceipt",
????? "type":"betreceipt",
?????"ricardian_contract": ""
??? },{
????? "name":"refundbet",
????? "type":"refundbet",
??? ??"ricardian_contract": ""
??? }
? ]
流程與代碼的解釋
用戶發(fā)送EOS Token到合約eosbetdice11
eosbetcasino@random調(diào)用合約函數(shù) resolvebet 觸發(fā)合約決定輸贏,
繞了一圈, 最終輸贏完全由莊家后臺程序用賬戶eosbetcasino@random決定.
混淆耳目的技術(shù):
以上為官網(wǎng)的故弄玄虛, 事實上, eos與ethereum一樣, 并不能在鏈上產(chǎn)生不可預(yù)知的隨機數(shù)合約代碼量不大(見下面命令行工具), 即便不開源, 也不難看懂, 為何還要裝神弄鬼, 糊弄用戶?
命令行工具
#獲取合約ABI和wast
cleos get code? -a dice.abi -cdice.wast eosbetdice11
正確且唯一的對賭方式
https://developers.eos.io/eosio-cpp/docs/random-number-generation
必須經(jīng)過以下步驟:
雙方使用各自的<秘鑰>將 <原始數(shù)據(jù)> 加密后發(fā)送到區(qū)塊鏈.
雙方數(shù)據(jù)都送達, 則鎖定數(shù)據(jù), 并進入決定階段.
決定階段, 雙方各發(fā)送自己的 <秘鑰>到區(qū)塊鏈
區(qū)塊鏈使用雙方的<秘鑰>, 解密出各自<原始數(shù)據(jù)>, 決定最終結(jié)果, 并執(zhí)行結(jié)果
BM在這里討論過:
關(guān)于隨機數(shù)
我們程序員往往把區(qū)塊鏈上隨機數(shù)的產(chǎn)生看作技術(shù)問題, 其實能否產(chǎn)生它, 是個數(shù)學(xué)問題:
y=f(x) 不管方程f多復(fù)雜, 給定一個x都最多只有一個確定的y. 所以y=random(seed),你必須讓seed具有不可預(yù)見性. 而我們知道計算機世界是沒有隨機數(shù)的(通常用系統(tǒng)時鐘作seed), 對于區(qū)塊鏈, 在沒有任何輸入?yún)?shù)的情況下, 鏈上一切都是注定的, 你若想自己不被預(yù)知, 在條件固定之前,必須至少保留一項只有你知道的參數(shù)
而對于賭博方程, 用戶的seed在開牌之前, 只能用戶自己知道.
如果你不想思考數(shù)學(xué)問題
試想, 如果有那么簡單優(yōu)雅的方法(像EOSBet聲稱的并且也是這么做的, 不需要用戶兩次參與的), 那么像github/EOSIO/dice這樣做, 是多么的丑陋和多此一舉!
最后
無論你用什么技術(shù), 都改變不了簡單的數(shù)學(xué)邏輯, 即: 你必須讓用戶在開點之前, 保留seed(或seed的參數(shù): 秘鑰), 然后鎖定后再提交.
?以上邏輯說明,EOSBet 是玩家們的絞肉機,黑客的溫床