[EpicDice] 內心不夠亂,暫時停止營業

avatar

昨天開始,EpicDice暫時停止營業,官方discord宣布如下


@everyone, we have good news and bad news for you.

The bad news is, after some in-depth investigation we concluded our game is exploited due to we are using the simplest provably-fair mechanism. All the game result is solely relying on the blockchain transaction ID. We thought it was random and hard enough for bad actors to game the system but apparently, it wasn’t. We will have to halt the platform until a new mechanism is being implemented, and this is going to be the team’s top priority now.

The good news is, the house fund wasn’t completely drained so we are ready to come back strong as soon as the system is patched. And for those who previously suspect EpicDice is not playing fair, this is the best(or worst) example to prove our claim: Absolute fairness. Even in such event where the randomness of transaction ID is exploited, house is on the vulnerable side. We were truly running the best ever gambling service in term of everything we can.

This is not the end. We will come back stronger and better. Thanks for the support.


簡而言之 (本來寫比較長,但被SCT的submit系統搞丟文章 >_<),被人利用算法機制的弱點突破了。

好奇的話,你可以參考這一篇:Epic Dice shut down due to witness cheating

簡單說一下,事情是這樣的。有位見證人mys,找出ED利用Steem txid產生數字過程的瑕疵,利用見證人的方便,送出自己希望的txid,大量用1 STEEM左右,贏得100 STEEM,大約進行27次後,被人舉報,平台因此暫停檢視,發現此一重大漏洞。

此事其實證明了團隊宣稱的fairness,亦即莊家與玩家都是平等的。只是這次,被掌握出塊的見證人以及略欠周詳的掌握txid產生過程細節不足,導致這個重大問題浮出檯面。其實是好事,我覺得。要長成大樹,就要接受風雨的摧殘嘛~~~~

所以,停機檢修,重新研發更好的流程,這團隊還是值得期待的。

如果你是對Steem區塊鏈運作很熟悉的高手,歡迎提供團隊好的建議,如何找出一個不能被單一或數位見證人操弄,而又具有亂數性質的數字來源呢?

歡迎挑戰! 有想法可以告訴我或是 @fr3eze,我個人提供 30 STEEMs 作為獎勵,如果你的想法被採納或是對於最後採納的方案有所幫助都可以 (由ED團隊認定)!



0
0
0.000
20 comments
avatar

Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.01% upvote! Together, let’s change the world!

0
0
0.000
avatar

简单看了一下,这完全是EpicDice规则的漏洞嘛
任何人都可以操作,完全和见证人没有关系
(你也可以生成一个符合条件的txid,然后广播)

被掌握出塊的見證人以及略欠周詳的掌握txid產生過程細節不足

作为一个见证人,表示见证人不背这锅

关于txid,其实就是transaction的HASH,所以通过构造transaction来生成符合规则的txid完全是没有问题的

我以前写过一个从transaction中获取txid的帖子,https://steemit.com/steemdev/@oflyhigh/steem-transaction-txid
自己构造transaction也是完全没有问题的,可惜最近太忙,没去研究这个EpicDice,否则发现漏洞的可能性还是极大的

至于乱数来源,我觉得用整个块的hash啥的应该问题不大吧?这个仅供参考,被盗概不负责。😀

0
0
0.000
avatar
(Edited)

哎,其實我也是略看一下,哈!但是mark有提到見證人利用職務之便的之類的說法,是說錯了囉?

ED應該聘O哥當顧問的~~ @fr3eze,參考一下建議吧!(30 STEEM釣出O哥)

0
0
0.000
avatar

哈哈,做顾问得水平完全不够
不过txid这事我恰巧懂一丁点
30STEEM留着钓大鱼吧😀

0
0
0.000
avatar

公正公開其實不怎麼,該你的就是你的,不該你的我也不會給。你也無法拒絕我的轉帳的。哈哈哈~~~

0
0
0.000
avatar

仔细想了一下:
算法中f(txid)改成f(next_block_hash+txid),其中next_block_hash为投注区块的下一区块的块hash

这样或许安全了

0
0
0.000
avatar

确实是和见证人的职务无关,够深入明白区块是如何产生的就足以发动攻击。刘美女这重金下的,真是有心了啊。

@oflyhigh 有兴趣来当安全/开发顾问那是最好不过了,如果不介意酬劳是 EPC 的话。和 mys 私下讨论了一阵,似乎 nextcolony 使用的 (txid + block prev + block hash)是不依赖线下乱数最安全的做法,值得研究一番,不知大神有什么看法?Anyway 现在 ED 已经加入了传统的 server seed 配上 txid 来恢复营业了。可以完全使用线上产生的乱数那当然是最好。

0
0
0.000
avatar

請問Epidice骰出的數字是從txid衍生出來的,然後mys是利用預先算出下注的txid, 算會骰出數字來獲利?所以在之前Epidice制度, 這跟mys是否是見證人無關嗎?
整塊的hash的來源應該是雜湊整個塊包含的交易吧?那的確更增加亂度。如果要用這作弊,是不是就真的要是見證人,剛好輪到出塊時才好作弊?

0
0
0.000
avatar

是的,其实就是Epidice的漏洞,谁发现了都可以利用,与见证人无关。

整块HASH只能作为随机数种子之一,不能直接使用的,否则一个块里大家都投注,算谁赢?

比如算法中f(txid)可以改成f(block_hash+txid),其中block_hash用投注区块的下一区块的,这样见证人想作弊也要傻眼吧?

0
0
0.000
avatar
(Edited)

現行steem如果一個見證人的節點沒有打包好負責出塊區間內所有廣播的交易出塊,有其他補充措施嗎?若沒有,用f(block_hash+txid),其中txid是可控的,如果攻擊者算好想要的結果,然後攻擊該時段的負責見證人,阻斷他打包接下來的交易,可能可以控制block_hash+txid, 得到預期的結果。如果算上攻擊的成本,作弊贏錢還是有利益,這種攻擊可行嗎?

0
0
0.000
avatar

见证人的出块节点都是隐藏的
很难攻击到见证人的出块节点

0
0
0.000
avatar

那接收交易廣播的節點總要表明身分說自己是節點,這應該是明顯攻擊目標吧?排名靠前的節點或許防禦比較強不好攻,可能有多個伺服器連結,有明有暗。不過等剛好輪替到排後面的見證人,或許他的節點就只運行一台伺服器,成功機率應該能提升吧?

0
0
0.000
avatar

见证人节点只负责出块,API节点就那么几个啦都是独立的。

突然想起来,或者在自己出块前的一块广播出去一个txid,然后自己这块筛选出一个符合条件的块hash,有一定的攻击可能。

不过这样作恶的成本太高了,能实现这种攻击的,应该不屑得赚这点钱吧?

0
0
0.000
avatar

我對這些不清楚。結構是不是
使用者—前端程式—api節點—見証人節點
Api只有幾個,他們的防禦力夠嗎?API節點是誰負責運作、管理的?

0
0
0.000
avatar

关系不是简单的:

使用者—前端程式—api節點—見証人節點

大致应该类似于

使用者—前端程式—api節點<——>(steem区块链)
见证人节点<——>(steem区块链)

API节点不多,防御力也不佳
有steemit官方的,也有社区见证人或者开发者运作的

0
0
0.000
avatar

大概了解,應該就是steem區塊鏈這部分錯綜複雜,可以說包含api節點、見證人節點、備份資料庫、運算系統,其中的從屬、連結方式多種,所以一言難盡。

0
0
0.000
avatar

Hi, @deanliu!

You just got a 24.23% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.

0
0
0.000
avatar

Hi @deanliu!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 5.847 which ranks you at #393 across all Steem accounts.
Your rank has dropped 1 places in the last three days (old rank 392).

In our last Algorithmic Curation Round, consisting of 152 contributions, your post is ranked at #8.

Evaluation of your UA score:
  • You've built up a nice network.
  • The readers appreciate your great work!
  • Great user engagement! You rock!

Feel free to join our @steem-ua Discord server

0
0
0.000