(本文同步發佈於哈希 1024 社區:hash1024.org )

前段時間令人矚目的明星遊戲 FOMO3D,大家可能都有了解,也許一部分朋友也參與進去了,來個遊戲界面,大家感受下。

FOMO3D 規則介紹以及實現概覽

第一輪經過短暫的火熱,之後處於近一個月的低迷,於 8 月 22 日下午三點左右終於結束,目前第二輪還在進行中。

第一輪遊戲總共有約十萬左右的用戶參與遊戲,總共投入約 11 萬個 ETH,7 月 21 日爲參與高峯,約 12700 個用戶參與,贏家獲得一萬多個 ETH,平臺賺取約 3900 多個 ETH。

FOMO3D 遊戲主要通過以太坊智能合約實現,核心代碼不超過兩千行,裏面有很多精妙的設計,值得廣大程序員學習,後續文章會陸續道來。

本文主要講解 FOMO3D 遊戲的規則,以及這個遊戲的實現原理概覽。(本文首發於哈希 1024 社區:hash1024.org )

FOMO3D 遊戲的規則:

  1. 遊戲有個倒計時機制,初始值爲 24 小時,倒計時爲零時,一輪遊戲結束。

  2. 用戶可以購買 key,每購買一個 key 會增加 30 秒(注意:24 小時是上限)

  3. 每一個購買了 key 的玩家,都會因爲後入場玩家的每一次購買而享受分紅,具體分紅函數後續文章會詳細介紹。

4. key 的價格也會依照一個遞增函數 f 緩慢增加。

(普通讀者可以忽略以下公式:

初始價格爲 0.000075 ETH,

f(x) = (0.78125x^2+0.74999921875x*10^24)/10^28

下一個 key 的價格是 f(keys+10^18)-f(keys),其中 keys 表示這一輪到目前爲止的 key 的數量)

5. 當一輪遊戲結束的時候,最後購買 key 的玩家就是贏家,將獲得獎池裏的 48% 的 ETH。(本文首發於哈希 1024 社區:hash1024.org )

  1. 輪次間有一小時的凍結期,這期間是不可以買 key 的 (買不進去)

  2. 在購買 key 的時候可以選擇戰隊,有四個戰隊可供選擇:Snek,Bull,Whale,Bear (本質上不同的戰隊意味着不同的利益分成方式,後面會有比較詳細的講解)

  3. 用戶獲得的分紅可以繼續復投 (繼續購買 key)

下面介紹下,在一輪遊戲還沒有結束時,玩家買 key 花費的 eth 具體是怎麼分配的。

Team

|

Pot

|

F3D Player

|

P3D Player

—|—|—|—

Snek

|

20%

|

56%

|

10%

Bull

|

35%

|

43%

|

8%

Whale

|

50%

|

30%

|

6%

Bear

|

43%

|

43%

|

0%

比如玩家購買時選擇蛇隊,意味着玩家 eth 的 20% 進入池底,56% 按比例分配給之前的遊戲玩家,10% 給 P3D 玩家(注:P3D 這家公司的另一款產品,實際上也是一個合約,具體參考這裏);其他戰隊分紅方式也是類似。

以上表格可以看出,無論選擇哪隊,86% 的 eth 被分配了,還有 14% 的獎池分配如下:

  • 10% 分配給玩家的推薦者(若沒有推薦者,則分給 P3D 玩家),

  • 2% 分配給社區基金,

  • 1% 給 potswap,

  • 1% 用於空投。

注:玩家會有一定概率獲得 eth 空投獎勵;F3DPlayer 的金額是在一個玩家購買 key 後,嚴格按照每個玩家擁有 key 的比例立即進行分配,後續文章會講解。

玩家購買一個 key 後,可通過 etherscan 查看改交易的分配情況:

FOMO3D 規則介紹以及實現概覽

一輪遊戲結束後,獎池裏的 ETH 具體分配情況 :

Team

|

Next Round

|

F3D Player

|

P3D Player

—|—|—|—

Snek

|

10%

|

20%

|

20%

Bull

|

10%

|

30%

|

10%

Whale

|

25%

|

15%

|

10%

Bear

|

25%

|

25%

|

0%

注:48% 的獎池屬於最後一個買 key 的人,2% 屬於社區。剩下 50% 的獎池,比如 Snek 隊的玩家贏得了勝利,10% 的獎金滾到下一輪,20% 的獎金按照持 Key 比例分給 F3D 玩家,20% 的獎金分給 P3D 玩家。其他情況類似。

上面比較詳細地介紹了 FOMO3D 的遊戲規則,下面介紹基於上述規則的用例圖。

FOMO3D 規則介紹以及實現概覽

說明:除了玩家的購買(復投)以及提現功能,還有一個註冊功能,玩家可以註冊一個自己喜愛的名字(會消耗 gas 喲),方便以後推薦別人時使用。

購買 key 時的功能圖如下:

FOMO3D 規則介紹以及實現概覽

從上圖可以看出,玩家購買 key (包含復投),會觸發時間更新,推薦人獎勵,F3D 玩家分紅,同時觸發外部分配;在購買 key 的過程中,玩家有機會獲得空投獎勵;當輪次結束,同樣會觸發外部分配與內部分配。

遊戲的實現概述

相關的邏輯大部分被封裝在了 FoMo3D 智能合約裏,這個合約同時又與外部的其他合約交互 ( PotSwap 合約 , JIincForwarder 合約是這個公司負責轉發的合約 , 其中包含社區的合約地址 , P3D 合約是這家公司的另一款遊戲合約)

下面是各個合約以及 DAPP 的交互圖:

FOMO3D 規則介紹以及實現概覽

藍色的 DApp 是前端應用,主要是用 web3 (js 接口) 與區塊鏈上的合約交互並把結果展示在瀏覽器。(本文首發於哈希 1024 社區:hash1024.org )

DApp 要從 FOMO3D 合約讀取數據,包括每個玩家的買的 key 數量以及 earnings,還有遊戲的全局數據,比如 key 的價格,剩餘時間,各個戰隊的購買情況等等 ; 同時 DApp 負責監聽 FOMO3D 的事件,並作出相應響應;

DApp 還要與 FOMO3D, PlayerBook 交互進行地址 / 名字與後臺的 playerId 的映射,方便後續的存儲與引用;

F3DexternalSettings 合約負責遊戲的時間間隔設置,主要是進行輪次間時間的設置,這個合約的代碼沒有開放 ( 可能是這部分代碼是這家公司的公共設置模塊,不願意開源);

購買 key 時智能合約調用過程:

比如用戶在 DApp 上點擊購買 key,這是會由 DApp 觸發 FOMO3D 合約的方法,FOMO3D 會與 PlayerBook 交互獲取 PlayerId ,並執行內部核心的購買邏輯,同時會調用 P3D 合約,PotSwap 合約,JIincForwarder 合約進行相應比例金額的轉賬。

總結與直播預告:

本文介紹了 FOMO3D 遊戲的詳細規則及其概覽實現,讓讀者對 FOMO3D 遊戲整體結構有了初步的瞭解,爲後續的系列文章做好準備。

後續文章會介紹 FOMO3D 遊戲實現的巧妙之處,還會結合 FOMO3D 遊戲的實現,講解以太坊的合約編程與傳統的編程思路的不同之處。相信通過學習這系列文章,無論是在智能合約編程還是區塊鏈遊戲開發方面,都會有很大收穫!

(未完待續)

作者簡介:tyler, 程序猿,就職於鎳磐科技,哈希 1024 社區專欄作者,近十年開發經驗,幹過傳統金融,繼而轉戰互聯網金融,現在從事區塊鏈研究與開發工作,2012 年就開始關注比特幣,並對區塊鏈產生了濃厚興趣。希望和大家共同學習區塊鏈,以後多多交流。

哈希夜話直播活動預告:

我們將在 9 月 12 日週三晚舉行在線哈希夜話直播活動,本次主題爲 FoMo3D 遊戲智能合約剖析,希望參加直播的讀者先加入哈希 1024 社區微信羣,直播信息將在羣裏通知。名額有限,請儘快報名。報名方式:掃碼關注本公衆號,在後臺回覆“哈希”即可。

FOMO3D 規則介紹以及實現概覽