在普遍的遊戲場景中,通常會有類似於抽獎啊、邀請人隨機獎勵啊等等。你在遊戲中進行這些場景的時候是否想到過以下問題:
1.為什麼中獎的幾率總是微乎其微?
2.你得到的獎勵真的是那個開獎結果上所說的獎勵嗎?
3.為什麼錢充得越多越容易中?
遊戲中的隨機數
通常對於一個遊戲的抽獎、隨機獎勵、輸贏概率、難度概率等等類似場景中,多數都會是程序生成一個隨機數,然後指明那個隨機數代表了什麼,之後向玩家展示。
其實,就我上述所說的卻還只是一個正常也就是相對公平的實現方式。因為如果僅僅只是隨機,那麼無論中獎的概率是多少,都會有中獎的概率,即便是隨機1-10這些數字,大於8會中獎,那麼也有十分之二的幾率會中獎。
然而,通常來說,遊戲的運營商並不會那麼容易讓我們得到我們想要的結果。因此,它們會幹預隨機數,甚至是如果你真正得到了獎勵,他們還會篡改你的結果。
此類例子
筆者曾經就親身經歷過一個例子。
當時我的客戶讓我為其開發一款邀請抽獎的遊戲,要求就是用戶邀請了一定人數之後,就可以抽獎,有概率會獲得大額現金。
但程序的邏輯卻並非這樣,真實的邏輯是下面這樣的:
1.用戶邀請人數
2.如果用戶邀請的人數越多,超過一個閾值,則隨機概率增加,反之永遠不會中獎
3.如果用戶抽中了大獎,降低為運營商可承受的等級。
在這個項目中,抽獎的數據是有排行榜的,得到的金額和用戶都是可見的,因此又追加了下面的邏輯:
1.註冊三十個官方小號(可以佔領排行榜,也可以充當遊戲初始數據)
2.為這三十個小號在不容易察覺的情況下虛擬出假的數據:比如現在第一名不是官方的,那我們就造一個官方的第二名出來,讓第一名和第二名相差數據很少,這樣就可以激勵第一名繼續拉新。如果第一名是官方的,那麼也是如此。
3.官方三十個號全部佔領排行榜前三十。
為什麼?
為什麼會出現這種狀況?
因為對於這樣的遊戲來說,遊戲規則也好,數據也和抽獎隨機數的代碼也罷,全都是由遊戲運營商來制定的。對於我們玩家來說只要點下抽獎按鈕的那一刻,根本就不會知道後台發生了什麼,也根本不知道我們究竟是否抽中了。
你可以要求運營商公布其代碼或者數據,大部分運營商並不會這麼做,會找出一堆安全或者隱私之類的借口。然而即便是真的像你公布了,你也正好能夠看得懂,你能保證那不被篡改了嗎?
區塊鏈的遊戲
從上述我們可以看出,造成此類問題是因為:數據、代碼不公開、透明,數據可以被篡改。
如果遊戲的數據和代碼公開了,那麼我們就可以知道這遊戲是否真的公平,不公平我們不玩兒就是了。
如果數據不被篡改,那麼在公平的前提下,我們中獎便是中獎了。
而這正是區塊鏈的特性,這便涉及到了智能合約(我會在以後的小節中為大家講解)。
在區塊鏈上,遊戲代碼便是智能合約代碼,它們的源碼都被公開到了區塊鏈瀏覽器上,在那裡你可以看到整個遊戲的所有代碼,它們是否公平一查便知。其次,對於區塊鏈來說,數據一旦生成是不可更改的,也就沒有了數據篡改的可能。
更甚至是,對於智能合約而言,只有銷毀,沒有暫停與終止。遊戲發行商一旦制定了規則,就不會因為玩家中獎太多什麼什麼的變更規則。