鏈金術專訪BetDice 團隊

國慶幾天,BetDice佔據Dapp排行榜第一名,日活超過6000,日流水超過24萬,從各項數據上都已經超越了EOSbet。鏈金術在線上專門採訪了BetDice團隊,針對鏈金術的一些疑問進行了回答。鏈金術之前的質疑文章見這裡:

https://www.weibo.com/ttarticle/p/show?id=2309404291443274421825#_0

鏈金術專訪BetDice 團隊

鏈金術專訪BetDice 團隊

BetDice會不會作弊?

鏈金術:BetDice怎麼澄清作弊的質疑?

BetDice:區塊鏈的資料無法被更改,這個也是區塊鏈的屬性。

但一款遊戲的製作並不能完全靠區塊鏈,例如你必須要有一個服務器,你必須要建立一個網站,等等,這些都是不可以在區塊鏈上處理的。區塊鏈能處理的,就只是合約部份,亦即所謂的交易和行動。

智能合約是可判斷性的,換言之,是1就是1,是2就是2,必須確保每一臺電腦跑的結果都是一樣,所以要在區塊鏈上做隨機其實是不可能的。

但每一款遊戲都必須要做隨機,那可以怎麼做了,答案很簡單,這個就是可驗証公平的原理

所以亦証明瞭我們無法去作弊。因為答案是一早生成了,只是玩家們無法去解讀。當你投注並提交到區塊鏈,答案才被解讀出來,每一局的解讀方法都是一樣。所以如果我們在中途作弊,例如根據你金額去作弊,答案是無法被驗証。

但電腦沒有辦法產生所謂的隨機數,一般只能透過種子再加上平均分佈和敏感度去轉換為哈希,再將哈希換為數字,答案就是隨機了。因為根本沒有隨機數在內,答案在開獎前其實已經被固定了,只是你投注前不能知道答案。

答案的產生就是根據你所輸入的資料,所以就是絕對公平並可信任了,因為我們沒有幹預到結果的。

比如這麼一個數據:Memo: action:bet,seed:QPg1ljFnTPx1IarB1E,rollUnder:84

當你投注時你會寫了一組這樣的memo,你可以留意一下。這個memo上有你投注的信息,還有你所提交的SEED。基本上種子你可以隨便改,但固定的種子也不會出現同一個答案, 因為還有其他因素在最終種子上,你所提交的種子只是種子的部份。

username:seed:gameid,類似這樣就成為最終的種子了。

例如你的username是 iamusername1;

seed你可以隨便輸入 this_is_my_seed;

gameid 第一局就是1, 每進行一場就加1;

所以最終的種子就是 iamusername1:this_is_my_seed:1

所以每個玩家的種子都是獨立,並不能重複產生,而且種子沒有我們的參數,所以我們是無法去作弊,亦即是可驗証公平的原理,如果我們作弊,答案就驗証不了。因為所有種子的參數都是你提交的訊息,然後經過哈希加密,製作出哈希,例如sha256會出現: 38A6236BE5D88F9AB8288779B8FBA1A944B05088492A4E40CD9C544AFED81FE8。哈希加密是極度敏感,而且是不可逆的,結果是可判斷,即是同一個種子就有同一個答案。然後再在哈希算法的結果後獲取最後 32bits就是最終的答案,因為32bits就是電腦數字的大小,所以每一場答案都是可判斷可甶覆驗証。

當然我剛剛所說的種子只是例子,實際做法是更為嚴謹和複雜。

因為除了我們可能會作弊之外,還有玩家也可能會作弊,所以我們會用類似公私密匙去進行結果加密,讓玩家不能作弊。

RSA encryption, Provable fair, Hashing Function, Cryptographically secure pseudorandom number generator,大概用到的技術就是以上這樣。

為什麼會連續出現同一個數字?

鏈金術:為什麼我在玩的時候多次出現重複的結果?

BetDice:同一個數字是因為顯示問題。

你可以去比較下在區塊鏈上的答案,區塊鏈是絕對準確並無法被改動。由於我們採用的是極高速的投注模式,相較起現時其他遊戲平臺大約快一倍以上。如果使用者的電腦或網絡跟不上,的確會造成投注結果重複顯示到紀錄上。

我來簡單說一下原因。

正常一個投注,你必須投注後,把你產生的種子提交到區塊鏈,換言之,其實答案是你去產生,不是由我們去產生,這個種子你可以隨便輸入甚麼都可以,但因為為了方便起見,現在瀏覽器幫你輸入了,但如果你直接用指令去玩,這串文字你是能修改的。

你可能會覺得你沒有提交過種子,但實際上不是,你所產生的種子就是你的玩家名稱,當前局數,瀏覽器資料等等,這些都是你這邊的資料,我們不能影響的。當資料提交到區塊鏈後,我們服務器會立即監視住鏈上,當發現有新的投注請求,我們會立即解讀並把答案重新上傳到區塊鏈。而這是就有一個明顯的分別了,其他平臺是在區塊鏈上讀回答案,所以一般都會比較慢,因為等上鏈再讀回是一個極慢的過程。

我們採用是一般高質素遊戲的處理手法。當我們提交到上區塊鏈時,同時提交到去你的電腦。所以你不用等區塊鏈返回就立即知道結果,進行下一局。然後另一方面,你的電腦亦會同時監察區塊鏈查看一下自己有沒有其他的投注紀錄。

當在極短的時間內,你從區塊鏈接收了答案,亦同時在我們服務上接收了答案,就會出現重複答案的問題,但實際上都是同一局的答案,只是因為由兩個不同的來源接收回來的。

這是顯示問題,並不是實際上投注了兩次或開了兩次的獎。這一方面我們未來會有優化去解決這個問題。

什麼時候開源?

鏈金術:什麼時候開源?

BetDice:十一月會開源,但開源都沒有實際用途,一般人以為開源就能知道公平,其實真正的公平不是在原碼上,而是在原理的。但我們還是會開源的。

公佈返獎率

鏈金術:返獎率會公佈出來嗎?

BetDice:我們將會公佈所有詳細的數字在網站平臺上,實時顯示,這個已經在計劃中了。

多談一下隨機數

BetDice:另外,其實我們白皮書還有更多詳細關於加密和偽隨機數的資料,不過都是英文。

我們作弊是不可能的,因為能作弊就不能驗証,我們服務端只是幫你去解讀答案。所謂的隨機數是透過哈希加密的做出來的偽隨機,計算機上沒有絕對隨機,但採用加密學的哈希加密,就能得到一個完美的偽隨機數。

電腦要做絕對隨機是很困難的,所以一般是由種子產生,像你剛剛提及的時間,是很多簡單應用會用得到的,但在加密學上來說,這是極度不安全,甚至不是隨機數。而且所採用的哈希加密也會有不同的分佈,我們採用的是加密學的哈希加密。

鏈金術專訪BetDice 團隊

鏈金術專訪BetDice 團隊

這裡兩張圖,兩張都是哈密加密的偽隨機數。第一張看似隨機,但隨機得不夠完美,第二張才是良好的哈希加密,所以在挑選哈希加密時必須要知道哪一個哈希加密是好的。

以上便是對BetDice的採訪,接下來10月9號Dice會上去中心化交易所,鏈金術會進一步的追蹤。

採訪中betdice團隊提供的參考鏈接:

  1. 可驗証公平,即Provable Fair

https://en.wikipedia.org/wiki/Provably_fair

https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A0%81%E5%AD%A6%E5%AE%89%E5%85%A8%E4%BC%AA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E5%99%A8

2.加密學的哈希加密

https://www.sitepoint.com/risks-challenges-password-hashing/


分享到:


相關文章: