本篇基于國外區(qū)塊鏈游戲Virtue Poker(虛擬撲克)的白皮書翻譯整理而成驾中。面對國內(nèi)各種魚龍混雜的白皮書琼牧,Virtue Poker的白皮書全面闡釋了項目的商業(yè)價值,市場現(xiàn)狀哀卫,用戶痛點巨坊,最重要是詳細(xì)的技術(shù)實現(xiàn)。既不是模糊不清此改,也不是完全無法落地的技術(shù)解決方案趾撵,值得學(xué)習(xí)和借鑒。
本文并沒有進(jìn)行完整的翻譯共啃,部分內(nèi)容有節(jié)選占调。完整內(nèi)容請查看官方英文白皮書。
由于本人水平有限移剪,內(nèi)容肯定存在諸多錯誤究珊,請在評論區(qū)留言指正,謝謝纵苛!
Virtue Poker官網(wǎng)
Virtue Poker白皮書
引言
在線撲克從2000年開始到現(xiàn)在剿涮,已經(jīng)成為幾億美元的產(chǎn)業(yè)言津。從一開始就面臨和嘗試解決兩個問題:游戲公平性和玩家的資金安全性。這些問題曾導(dǎo)致一些領(lǐng)頭公司破產(chǎn)取试。
Virtue Poker是第一個基于區(qū)塊鏈的在線撲克悬槽。玩家不需要將資金轉(zhuǎn)入指定賬戶。洗牌是隨機且數(shù)字加密的瞬浓。
1.1 價值使命
我們不會存儲玩家資金初婆,保證每個玩家參與洗牌。
1.1.1 消除玩家的資金存儲風(fēng)險
玩家們使用自己的以太坊賬戶參與游戲
1.1.2 解決關(guān)于游戲公平性的信任問題
使用P2P猿棉,加密洗牌協(xié)議,每個玩家參與洗牌位迂。并且對每手結(jié)果達(dá)成共識臣缀。
1.1.3 減少玩家消費元莫,創(chuàng)建平衡的撲克生態(tài)系統(tǒng)
不需要部署昂貴的服務(wù)器,不需要復(fù)雜的付款流程陡鹃。減少玩家的損耗,將資金用于創(chuàng)建良好的生態(tài)系統(tǒng)秽五。
1.1.4 建造可擴(kuò)展的去中心化撲克網(wǎng)絡(luò)
未來允許開發(fā)者和第三方機構(gòu)基于Virtue Poker開發(fā)更多服務(wù)贷揽。
1.2 短期規(guī)劃
開發(fā)計劃:用戶界面雄人,分布式洗牌阵漏,區(qū)塊鏈開發(fā)
市場計劃:一系列線上線下的預(yù)啟動規(guī)劃
1.3 長期規(guī)劃
打造成B2C平臺
允許第三方基于平臺進(jìn)行開發(fā)
2.當(dāng)前在線撲克面臨的問題
2.1 介紹
在線賭博在2021年將達(dá)到50億
美元的市場規(guī)模。撲克是其中的核心蝗柔。在線撲克火爆始于2003年電視直播比賽的開始癣丧,一個名叫Chris MoneyMaker
的人贏下了250萬
美元。
當(dāng)前级及,全球在線撲克市場超過2.5億
美元,歐洲47%
窍侧,亞洲30%
县踢,北美13%
,大洋洲6%
伟件,拉丁美洲2%
硼啤。
不幸的是,當(dāng)前在線撲克產(chǎn)業(yè)被惡意用戶利用斧账,產(chǎn)生很多受害者谴返,爆出一系列丑聞煞肾。當(dāng)前頂級的網(wǎng)站,例如PokerStars
嗓袱,也在不斷改變來解決這些問題籍救。也有很多網(wǎng)站沒有適應(yīng),導(dǎo)致很多用戶對它們不信任渠抹。
2.2 濫用玩家資金
2.2.1 Absolute Bet and Ultimate Bet
Cereus Network
承認(rèn)其前雇員使用管理員權(quán)限偷看其他玩家的牌蝙昙,獲利數(shù)百萬美元。
2.2.2 Full Tilt Poker
2011年4月15日逼肯,在線撲克社區(qū)稱之為黑色星期五的一天耸黑,美國聯(lián)邦檢察官桃煎,質(zhì)控三家最大的在線撲克網(wǎng)站的創(chuàng)始人篮幢,PokerStars
, Full Tilt Poker
和 Absolute Poker
,強制要求他們停止為美國公民提供真實貨幣游戲为迈。不久之后Full Tilt Poker
在美國境外重新開放三椿,它被發(fā)現(xiàn)少了360萬
美元。這意味著該公司侵占了360萬
的玩家資金葫辐。隨后該公司迅速倒閉搜锰。
2.2.3 Lock Poker
2015年,Lock Poker
公司倒閉耿战,因為它無法讓玩家提款蛋叼。這些玩家至少損失了150萬-240
萬美元。
2.3 撲克機器人
撲克機器人可以模仿成真實玩家剂陡。它們可以坐在多張牌桌狈涮,并且人們無法察覺。它們可能受雇于個人或者公司鸭栖。
2015年歌馍,一個撲克機器人在PokerStars
的0.5/1
美元和1/2
美元牌局中贏取了大約150
萬美元。WarBot
公司提供的機器人可以運行在所有的平臺上晕鹊。888基金
甚至發(fā)布文章教人們?nèi)绾螌箵淇藱C器人松却。
2017年,卡內(nèi)基梅隆大學(xué)開發(fā)的人工智能撲克機器人溅话,打敗了四位頂尖牌手晓锻。
2.4 第三方工具和軟件
許多玩家使用第三方工具和軟件,將娛樂玩家作為目標(biāo)飞几。這些工具包括但不限于:
玩家數(shù)據(jù)庫:可以從不同平臺查詢那些低勝率的玩家
自動尋座:通過玩家數(shù)據(jù)匹配自動尋座
搜索玩家:掃描某個平臺的大廳里指定條件的玩家
實時顯示:顯示牌桌上對手的實時統(tǒng)計數(shù)據(jù)
沒有使用這些工具的玩家將會受到不公平待遇砚哆。
2.5 不公平的抽水機制
賽事和現(xiàn)金局里都會抽水。賽事平均的抽水為買入的6-10%
⊙現(xiàn)金局中窟社,每手都會抽水券勺,平均為3-5%
,封頂在$0.30-$5
灿里,根據(jù)上限而不同关炼。大部分在線撲克的抽水機制大同小異。
下圖顯示了PokerStars
當(dāng)前的抽水機制匣吊。第一眼看感覺很合理儒拂,高下注玩家抽水會比低下注玩家的抽水高,同時也稱為有價值的顧客:
注意在5人
及以上的比賽中色鸳,低下注($0.01/$0.02
)的封頂是大盲的15
倍社痛。但是在高下注($3/$6
)的比賽中,封頂是大盲的0.58
倍命雀。
漢堡大學(xué)在2011年的研究中蒜哀,分析了PokerStars
等網(wǎng)站6個月
期間,超過250萬
手的數(shù)據(jù)吏砂。每一個玩家在$0.01/$0.02
比賽中撵儿,每100手
的平均大盲為12.5
。而在$3/$6
比賽中狐血,每100手
的平均大盲為2.88淀歇。下圖顯示了不同級別的每100手
的大盲:
隨著賭注的增加,相對于大盲的抽水戲劇性的降低了匈织。每100手
勝率為4-6 BB
浪默。以在線撲克標(biāo)準(zhǔn)來看,已經(jīng)很不錯了缀匕。以當(dāng)前的抽水結(jié)構(gòu)纳决,大多數(shù)贏家將會變成輸家,如果他們一直玩低端局弦追。只有那些玩高端局的人才有可能從撲克網(wǎng)站上贏錢岳链。
2.6 崩潰的撲克經(jīng)濟(jì)
2.6.1 定義
撲克經(jīng)濟(jì)有三個關(guān)鍵詞:存款,抽水和提現(xiàn)劲件。隨著撲克經(jīng)濟(jì)的增長掸哑,下面的公式一定成立:
存款 > (抽水 + 提現(xiàn))
專業(yè)的玩家提現(xiàn)凈值(意味著他們贏的比輸?shù)亩?,娛樂玩家為負(fù)值零远。這樣形成了一個平衡的系統(tǒng)苗分。
2.6.2 問題是
玩家們通過學(xué)習(xí)和使用第三方工具不斷提高水平,去追蹤和贏取那些缺少經(jīng)驗的玩家牵辣,這導(dǎo)致娛樂玩家越來越不信任在線撲克摔癣。
2.7 全球市場破碎
規(guī)則限制了經(jīng)營者的服務(wù)范圍和能力。
2.7.1 黑市
準(zhǔn)許一些類別的撲克游戲或者只允許州內(nèi)的一些游戲可以玩。
2.7.2 深灰市場
沒有明確限制在線賭博或條例并不明確择浊。
2.7.3 灰色市場
對在線賭博有規(guī)定戴卜,或者對遠(yuǎn)程經(jīng)營者們進(jìn)行了限制。
2.8 經(jīng)營者類型
2.8.1 境內(nèi)經(jīng)營
規(guī)定了經(jīng)營者至少有一個賭博執(zhí)照琢岩,典型的為灰色和深灰市場投剥。他們需要遵守反洗錢協(xié)議,并且需要了解自己的客戶是哪些人担孔。
知名公司:The Stars Group (PokerStars, Full Tilt Poker) William Hill Online,
Playtech (iPoker network), GVC Holdings (PartyPoker, bwin.party), 888 Holdings, Unibet,Winamax 和其他的一些公司江锨。
2.8.2 境外經(jīng)營
這些未獲批準(zhǔn)的經(jīng)營者在哥斯達(dá)黎加,庫拉索糕篇,塞浦路斯啄育,印度經(jīng)營。他們屬于全球經(jīng)營拌消,包括了黑市挑豌。
知名公司:: PaiWangLuo Network (Ignition, Bovada), Merge Gaming (Carbon Poker), Winning Poker Network (America’s Cardroom), Global Gaming Network, TheHive, Tiger Gaming (Chico) 和更多的其他公司。
許多國家和地區(qū)正在開始對在線撲克進(jìn)行監(jiān)管和引導(dǎo)拼坎。
2.9 有限的競爭
撲克市場將會變得越來越細(xì)分化浮毯,玩家的選擇越來越少,經(jīng)營者可以借此提高費用泰鸡。
2.9.1 受監(jiān)管的B2C市場
本節(jié)主要介紹了·PokerStars·的市場分析。
在·PokerStars·玩撲克的兩大不利條件:
為了維持服務(wù)壳鹤,
PokerStars
的抽水很高正因為大量忠誠用戶匯聚于此平臺盛龄,
PokerStars
正在不引人注意的情況下逐漸提高費用
2.9.2 不受監(jiān)管的B2C市場
黑市經(jīng)營者不太關(guān)注平臺的反作弊及賬號多開的行為,并且政策也不太透明芳誓。但仍有許多玩家因為受監(jiān)管平臺有限的玩法以及呆板的賽制而來到這些不受監(jiān)管的平臺余舶。
2.10 隨機數(shù)證明實踐
線上和線下的最大區(qū)別是:玩家能否看見荷官洗牌。線上游戲時锹淌,玩家只能選擇相信洗牌時的隨機數(shù)生成器起作用匿值。所有線上撲克都有被第三方機構(gòu)認(rèn)證的隨機數(shù)生成器RNG
,還有一些公司是專門測試認(rèn)證這些RNG
是否中立有效的赂摆。
不幸的是挟憔,即使有測試技術(shù)的存在,很多線上撲克公司在獲取RNG
證書后都表示不需要對其定期測試烟号。
2.11 總結(jié)
有很多不利于在線撲克玩家的地方绊谭。玩家們需要面對惡意軟件,平臺的高額抽水汪拥。監(jiān)管市場里平臺比賽呆板达传,但是非監(jiān)管市場平臺又不透明,缺少責(zé)任∠芨希總的來說宗弯,全球撲克經(jīng)濟(jì)更加緊張。
3. Virtue的解決方案
Virtue Poker花費了幾年時間進(jìn)行研究搂妻,力圖打造基于信任罕伯,透明的,有責(zé)任心的去中心化在線撲克產(chǎn)業(yè)叽讳。通過使用以太坊區(qū)塊鏈追他,P2P網(wǎng)絡(luò),用戶身份驗證岛蚤,加密技術(shù)邑狸,來提升用戶提升,降低用戶花費涤妒,打造返水結(jié)構(gòu)单雾,構(gòu)建安全保密的在線撲克平臺。
3.1 用戶流程
無服務(wù)器她紫,不需要存儲用戶資金硅堆,所有玩家參與洗牌。
3.1.1 下載客戶端
客戶端基于Windows
, Mac
或者Linux
贿讹〗ヌ樱客戶端包含洗牌器,游戲引擎民褂,用戶界面茄菊。
3.1.2 注冊
用戶申請UPort
身份,數(shù)字簽名其國家赊堪,住處面殖,年齡。關(guān)于UPort
的介紹哭廉,可以查看這篇文章:uPort的簡單理解:基于區(qū)塊鏈的隨身個人證明文件袋脊僚。
3.1.3 內(nèi)置錢包
用戶被引導(dǎo)到客戶端內(nèi)置的輕錢包頁面。
3.1.4 創(chuàng)建游戲或加入游戲
用戶在大廳參加公開的比賽遵绰,或者創(chuàng)建私人比賽并邀請他人加入辽幌。
3.1.5 買入
用戶加入牌桌,需要向牌桌智能合約地址發(fā)送以太幣
或者VPP
代幣街立。智能合約作為了一個第三方賬戶舶衬。
3.1.6 游戲進(jìn)行
牌桌使用P2P網(wǎng)絡(luò),利用Mental Poker
協(xié)議赎离,使每個節(jié)點參與洗牌和加密逛犹。
3.1.7 游戲結(jié)束
每當(dāng)比賽或者現(xiàn)金局結(jié)束,牌桌合約自動結(jié)算并向贏家發(fā)送報酬。
3.2 Virtue Poker組件
Virtue Poker平臺由一系列子組件組成了應(yīng)用程序:
3.2.1 uPort
使用uPort
作為注冊和身份驗證機制來組織未成年人賭博以及賬號多開的問題虽画。
3.2.2 以太坊智能合約
在平臺上作為所有當(dāng)前比賽的大廳
作為一個臨時的第三方服務(wù)舞蔽,為玩家們提供牌桌
作為存儲游戲指定參數(shù),例如買入數(shù)量码撰,支出百分比和游戲類型的資源庫
報告游戲結(jié)果
3.2.3 游戲客戶端
游戲客戶端是一個桌面應(yīng)用程序渗柿。其中的游戲引擎執(zhí)行游戲邏輯,使用Mental Poker
協(xié)議洗牌脖岛,包含了一個輕錢包朵栖,在給定的牌桌中連接其中的所有玩家。
3.2.4 P2P消息
P2P消息主干使用通訊及同步工具柴梆,保證同一牌桌的用戶界面保持一致陨溅。
3.2.5 IPFS
記錄平臺上所有的hand history
。這些記錄可以被審計或我們的游戲安全小組查看绍在。
3.3 身份管理
Virtue Poker使用自主身份驗證程序uPort來驗證用戶是否可以登錄游戲门扇。流程如下:
用戶下載
uPort
手機app,創(chuàng)建一個uPort
賬號偿渡,然后掃描第三方出具的身份證明臼寄。這個證明將加密存儲在IPFS
上。用戶會受到一個關(guān)聯(lián)了他們身份證明的uPort
賬號溜宽。用戶使用
uPort
app掃描Virtue Poker客戶端提供的二維碼吉拳,來創(chuàng)建Virtue Poker
賬號。一個包含了用戶
uPort ID
的請求會發(fā)往Virtue Poker
的賬號智能合約坑质,該智能合約會從第三方檢查并驗證用戶身份合武。如果驗證成功,用戶的
uPort ID
將與用戶的Virtue Poker
賬號地址匹配涡扼,并且存儲在Virtue Poker
的玩家注冊信息中。
3.4 以太坊智能合約
在用戶驗證過身份并創(chuàng)建了賬號后盟庞,用戶將被帶往大廳吃沪,也就是賭場(大廳)智能合約。
3.4.1 賭場(大廳)合約
賭場合約扮演了大廳的角色,包含了所有可用的比賽和最近結(jié)束的比賽。同時提供創(chuàng)建比賽讯檐,賽事匹配苔咪,用戶及賽事管理的任務(wù)。
3.4.2 牌桌合約
牌桌合約表示一場比賽河胎。當(dāng)玩家接受了一系列詳細(xì)的規(guī)則和限制后,一個新的牌桌合約便被創(chuàng)建,玩家就開始比賽推掸。當(dāng)游戲結(jié)束后,贏家獲得了獎勵,玩家離開后谅畅,牌桌合約便關(guān)閉了登渣。
游戲進(jìn)行時,牌桌合約有這幾個作用毡泻。首先胜茧,它存儲了比賽的規(guī)則和設(shè)置信息。其次仇味,它也包含了所有的玩家信息呻顽。它也代管了游戲中所有的資金。最后丹墨,它負(fù)責(zé)分配獎金廊遍。
3.4.3 玩家與牌桌合約的交互
在以下情況下,玩家會向牌桌合約發(fā)送交易:
加入牌桌
每手結(jié)束后
當(dāng)游戲完成(賽事)或當(dāng)玩家離桌(現(xiàn)金賽)
我們的目標(biāo)是將發(fā)送到智能合約的交易數(shù)量將至最低带到,以減少燃料消耗昧碉,并且提高游戲速度。
牌桌合約包含了一個計數(shù)器來追蹤每個玩家的下注揽惹。在每一手結(jié)束后被饿,每個玩家和公正人員使用密鑰簽署結(jié)果,并且向牌桌合約發(fā)送交易來更新每個玩家的下注來確保一致性搪搏。這種一致性原理和交易的提交狭握,是由節(jié)點,以及被稱為oracle
的牌桌方法發(fā)起的疯溺,可以使合約保持游戲狀態(tài)的更新论颅,并且知道什么時候該付錢給玩家。這是個異步過程囱嫩,意味著玩家不用等到上一手的結(jié)果寫入到區(qū)塊后才能進(jìn)行下一手的操作恃疯。
3.4.4 多個牌桌的比賽合約
對于比賽來說,會涉及到多個牌桌墨闲。多牌桌的比賽合約扮演了一個組織工具今妄,來管理不同的牌桌。任何比賽的存在都高于牌桌本身鸳碧,被此合約管理盾鳞。
3.4.5 公正管理合約
一個公正人員是客戶端軟件中的特殊案例,沒有牌瞻离,也不下注腾仅。他們作為可信節(jié)點,從外部獲取報酬套利。公證人員被隨機分配到每張桌子推励,負(fù)責(zé)解決爭議和記錄游戲數(shù)據(jù)鹤耍。
為了分散工作量以及阻止公證人員與玩家勾結(jié),他們是被隨機分配到每張牌桌的吹艇,并且在固定手?jǐn)?shù)后進(jìn)行輪換惰蜜。公正合約負(fù)責(zé)有公正人員可用,并且將他們分配到牌桌受神。
3.5 Mental Poker
3.5.1 概覽
某本書提出過:有沒有可能抛猖,使用加密計劃和通信協(xié)議,來讓不同地區(qū)的兩個人鼻听,在一場虛擬撲克比賽中共同洗牌和進(jìn)行游戲财著,而不通過第三方的信任背書?多年間有無數(shù)的書出版撑碴,針對這個問題進(jìn)行論述和討論撑教。
然而,很少有使用Mental Poker
這種技術(shù)的軟件和應(yīng)用醉拓。這是因為密碼學(xué)包含龐大的計算和通信資源伟姐,導(dǎo)致軟件使用時會非常緩慢。另外Mental Poker
這種內(nèi)在的點對點性質(zhì)亿卤,非常難于與傳統(tǒng)的基于服務(wù)器的在線游戲模型相匹配愤兵。
Virtue Poker小組花費了近兩年時間研究,如何將區(qū)塊鏈與分布式存儲技術(shù)排吴,以及點對點網(wǎng)絡(luò)進(jìn)行融合秆乳,以解決這些難題。成果是:一個可下載的應(yīng)用程序钻哩,技能快速進(jìn)行游戲屹堰,又能利用以太坊區(qū)塊鏈管理玩家以真實金錢進(jìn)行下注。
Mental Poker
使用加密技術(shù)確保每一個單獨的玩家無法讀取牌桌街氢。使用一種方法讓所有人合作洗牌后扯键,每張牌才可以被展示。這種協(xié)議使用通信加密技術(shù):牌可以按照任何順序加密和解密珊肃。
3.5.2 Mental Poker算法:兩輪傳遞之加密洗牌
三個玩家忧陪,Bob,Alice近范,Ted,在同一個桌子上玩德州撲克延蟹。Bob是Dealer
评矩,他在自己的電腦上生成一張有52張牌的牌桌。只有他可以看見這些牌阱飘。然后他使用Fisher-Yates
洗牌算法洗牌斥杜,用同樣的密鑰為每張牌加密虱颗,使得除了他自己,每張牌都不可讀蔗喂。接著他將加密的牌桌傳給Alice忘渔。Alice重復(fù)此操作,然后將牌桌傳給Ted缰儿,Ted進(jìn)行同樣的操作畦粮。
3.5.3 兩輪傳遞之加密確定牌序
現(xiàn)在牌的最終順序已經(jīng)決定好了。從1到52乖阵,這個順序?qū)⒇灤┻@一手的始終宣赔。Ted將加密三次的牌桌還給Bob。Bob解除他的洗牌鎖BS
瞪浸,然后用不同的加密方法為每張牌按順序進(jìn)行加密儒将,B1,B2......B52
。然后他將牌桌傳給Alice对蒲,Alice同樣解除她的洗牌鎖AS
钩蚊,然后為每張牌按順序進(jìn)行加密,A1,A2......A52
蹈矮。接著傳給Ted做同樣的操作后砰逻,將牌桌還給Bob。
3.5.4 解密并開始游戲
Bob開始發(fā)牌含滴。他將第一張和第二張牌發(fā)給自己诱渤。由于Bob只能解開第一張和第二張上自己的密鑰B1
,B2
谈况,但是這兩張牌上還有Alice和Ted的加密鎖A1
勺美,A2
,T1
碑韵,T2
赡茸,所以此時他無法查看這兩張牌。于是Alice和Ted將A1
祝闻,A2
占卧,T1
,T2
的解密密鑰發(fā)給Bob解密联喘,這樣Bob就可以看見他的這兩張牌了华蜒,并且保證只有他自己能看到這兩張牌。Bob繼續(xù)發(fā)牌豁遭,他將第三張和第四章牌發(fā)給Alice叭喜。Alice只可以解密這兩張的A3
,A4
加密鎖蓖谢,所以Bob和Ted將各自的B3
捂蕴,B4
譬涡,T3
,T4
的解密密鑰發(fā)給Alice解密啥辨。Bob繼續(xù)將第五和第六張牌發(fā)給Ted涡匀。像之前一樣,Ted解密后也可以看見自己的牌溉知。
現(xiàn)在Bob開始發(fā)公共牌陨瘩,第七張,第八張和第九張着倾。每個人取出自己的解密密鑰拾酝,B7
,B8
卡者,B9
蒿囤,A7
,A8
崇决,A9
材诽,T7
,T8
恒傻,T9
進(jìn)行解密脸侥,這樣大家都可以看到公共牌了。如果有必要盈厘,接下來第十張和第十一張也是像剛才一樣解密供所有人查看睁枕。
3.6 Peer to Peer 消息
3.6.1 P2P消息使游戲客戶端保持同步性
要實現(xiàn)Mental Poker,玩家們只需要一個P2P網(wǎng)絡(luò)沸手,而不需要去信任一個中心化的撲克服務(wù)器外遇。游戲客戶端由前后端組成。前段用于為本地用戶展示游戲狀態(tài)契吉,接收輸入然后傳給后端跳仿,由后端將消息廣播給其他客戶端。后端包含一些邏輯捐晶,例如游戲規(guī)則以及其他客戶端傳來的輸入信息菲语。這樣可以使所有游戲客戶端保持一致性。
3.6.2 離鏈游戲
以太坊有很多優(yōu)點惑灵,但是無法作為服務(wù)器使用山上。因為以太坊的交易寫入?yún)^(qū)塊最快都會有幾秒的延遲。使用客戶端搭配P2P網(wǎng)絡(luò)可以保證安全性(例如加密解密)并且保證游戲的平滑性英支。每一手結(jié)束后的結(jié)果才會作為交易寫入?yún)^(qū)塊胶哲。
3.6.3 IPFS
有大量的游戲記錄需要進(jìn)行存儲。而使用以太坊區(qū)塊鏈記錄所有數(shù)據(jù)是不切實際的潭辈,很大的一個原因就是寫入交易需要花費大量的燃料鸯屿。
IPFS是一種可靠的,分布式的數(shù)據(jù)存儲技術(shù)把敢。在每一手結(jié)束時且在向區(qū)塊鏈提交數(shù)據(jù)前寄摆,客戶端會向IPFS發(fā)送游戲記錄。IPFS存儲后返回一個哈希值修赞。這個哈希值里面包含了向區(qū)塊鏈提交的數(shù)據(jù)婶恼。大量數(shù)據(jù)轉(zhuǎn)換為一個短小的哈希值再存入?yún)^(qū)塊鏈,大大降低了數(shù)據(jù)量和燃料消耗柏副。并且憑借這個存儲在區(qū)塊鏈中的哈希值勾邦,我們可以反向從IPFS取回原始數(shù)據(jù)進(jìn)行查看。
4.游戲安全性
4.1 在線撲克作弊行為列表
4.1.1 勾結(jié)
多個玩家在同一牌桌勾結(jié)作弊
4.1.2 賬號多開
某個玩家在同一牌桌多開賬號作弊
4.1.3 數(shù)據(jù)挖掘
獲取其他玩家打牌習(xí)慣的數(shù)據(jù)
4.1.4 撲克機器人
4.1.5 賬號分享
高玩使用低端玩家賬號進(jìn)行游戲
4.2 使用公正系統(tǒng)對抗游戲作弊行為
Virtue團(tuán)隊開發(fā)了公證系統(tǒng)來對抗游戲內(nèi)勾結(jié)和作弊行為割择。公正人員隨機被派往不同牌桌眷篇,他們提供安全性以換取小費。他們簽署每一手的交易荔泳,提交記錄到IPFS蕉饼。每隔幾手便會隨機重新分配到不同牌桌。
下面描述的方法是自動的:用戶不需要在人工監(jiān)督下來運行公正人員節(jié)點玛歌。
4.2.1 公證人員的三個核心方法
4.2.2.1 解決爭論
玩家對每手或者每局結(jié)果有爭議昧港,公證人員可以解決爭議并且判定誰是贏家。
4.2.2.2 提供數(shù)據(jù)
公證人員需要將每手的每個行為數(shù)據(jù)上傳至IPFS進(jìn)行存儲支子。這些數(shù)據(jù)用來檢測是否有勾結(jié)创肥、機器人及賬號多開等行為。
4.2.2.3 保存玩家的部分密鑰
因為所有玩家必須共同對撲克加密值朋,如果有玩家掉線叹侄,為了保證游戲正常進(jìn)行,公正人員有權(quán)代替掉線玩家對撲克進(jìn)行加解密吞歼。
用戶可以下載公證人員的客戶端成為公正節(jié)點圈膏。
VPP:虛擬撲克積分
積分有三種核心用途:
游戲內(nèi)貨幣
公正人員的小費
參加指定比賽
5.1 成為公正人員
只有少量的用戶會成為公證人員。想要成為公證人員篙骡,需要做到以下幾點:
獲取vpp
抵押vpp到公正系統(tǒng)(公正系統(tǒng)智能合約)中
開啟電腦稽坤,運行公正軟件程序,激活以便被分配到牌桌
5.1.1 提交數(shù)據(jù)的檢查流程
一開始糯俗,公證人員提交到IPFS
的內(nèi)容會由游戲安全專家小組進(jìn)行檢查尿褪。這個小組包括廉政及安全專家。這個小組幫助開發(fā)小組構(gòu)建公正系統(tǒng)得湘,設(shè)置追蹤程序來檢測平臺上的危險行為杖玲。
有兩種方法可以將作弊行為提交給專家小組。一淘正,玩家可以對作弊行為進(jìn)行舉報摆马。二臼闻,使用算法,對公證人員提交的數(shù)據(jù)進(jìn)行解析囤采,并對其中的可疑數(shù)據(jù)人工檢查述呐。如果作弊行為成立,玩家會受到永久封號的處罰蕉毯。
5.1.2 公正人員小費
下面是公正系統(tǒng)示意圖:
- 成為公證人員
- 購買VPP
- 抵押VPP到智能合約
- 成為公證人員
- 任務(wù)分配
1.下載軟件乓搬,保持激活狀態(tài)
- 指派到牌桌,每隔幾手重新分配
- 任務(wù)分配量的多少是根據(jù)抵押VPP占總抵押池的百分比決定代虾。抵押的
VPP
越多进肯,獲得的任務(wù)就越多,獲取的小費也就越多
- 工作內(nèi)容
- 檢查游戲數(shù)據(jù)并提交到
IPFS/Swarm
- 解決爭端
- 有玩家掉線時棉磨,幫助加解密以保證游戲順利進(jìn)行
- 游戲公正檢測
- 公證人員和玩家加密簽署每手?jǐn)?shù)據(jù)江掩,由公正人員提交到
IPFS/Swarm
- Virtue Poker訪問儲存的數(shù)據(jù)
- 使用算法檢測異常數(shù)據(jù)
- 專家小組核實作弊行為,并對玩家和公正人員進(jìn)行處罰
這里并沒有具體說明小費是如何構(gòu)成的含蓉,我估計應(yīng)該是以下幾點:
公正人員抵押的
vpp
频敛。因為公正人員可能因為疏漏或者故意作弊被處罰,他抵押的vpp可能會被沒收玩家提起爭議訴訟時可能需要繳納一定的
vpp
作為爭議費用玩家作弊行為被查實馅扣,他的
vpp
可能會被沒收Virtue Poker應(yīng)該會拿出一部分
vpp
作為獎勵基金
5.2 作為游戲中資產(chǎn)
5.3 某些指定比賽只能使用VPP參加
6.路線圖
6.1 關(guān)鍵活動
6.1.1 平臺開發(fā)
Virtue Poker已經(jīng)花費三年時間在平臺開發(fā)上斟赚,并且會持續(xù)打造一個全功能平臺。Virtue Poker將會雇傭開發(fā)者來提高P2P消息主干差油,打造用戶界面拗军,完善智能合約及存儲方式。另外蓄喇,也會使以太坊項目更為完成发侵,例如打造分布式存儲,身份管理以及穩(wěn)定的貨幣妆偏。
6.1.2 市場
Virtue Poker將會和擁有大量預(yù)算及用戶的當(dāng)前市場巨頭競爭刃鳄。將會致力于打造有擔(dān)保的,免費的钱骂,退水機制的叔锐,基于市場分析的,并與合作伙伴一起成長的市場见秽。
6.1.3 贊助和公共關(guān)系
Virtue Poker將會贊助流行的撲克論壇愉烙,網(wǎng)站,博客以及其他事務(wù)解取。另一方面步责,團(tuán)隊將會采取積極的PR宣傳政策,讓更多人感受到我們的價值使命。
6.1.4 法律
團(tuán)隊將會向那些受人尊敬的游戲法律公司蔓肯,例如: DLA Piper
, ISOLAS
和Ifrah Law
進(jìn)行咨詢遂鹊,并且接受全球監(jiān)管。我們將持續(xù)咨詢適用的法律和監(jiān)管框架省核。我們將優(yōu)先保證平臺遵循了那些標(biāo)準(zhǔn)稿辙,以保證玩家利益獲得充分的保障。
開發(fā)路線圖
6.2.1 當(dāng)前情況
Virtue Poker構(gòu)思于2015年5月气忠,過去的兩年一直在開發(fā)原型。
我們的程序已經(jīng)在開發(fā)完成后進(jìn)行了幾周的測試赋咽,我們已經(jīng)在小組內(nèi)部已經(jīng)在以太坊的測試網(wǎng)絡(luò)上進(jìn)行了游戲旧噪。
第一個版本的客戶端是基于Python
語言的,并且為每個牌桌創(chuàng)建了智能合約脓匿。我們的小組成功的使用心理撲克協(xié)議進(jìn)行洗牌和游戲引擎淘钟。游戲引擎使用P2P消息協(xié)議連接其他節(jié)點,同時連接了以太坊陪毡,以便創(chuàng)造牌桌和加入牌桌米母。當(dāng)前,程序可以進(jìn)行每局6手
的游戲毡琉,以及每小時保持70-80手
的效率進(jìn)行游戲铁瞒,這和當(dāng)前的在線撲克游戲保持同樣的標(biāo)準(zhǔn)。
6.2.2 未來的開發(fā)打算
Virtue Poker已經(jīng)雇傭了核心團(tuán)隊桅滋,將會使用內(nèi)部資金慧耍,繼續(xù)打造團(tuán)隊及平臺。我們其中的一個目標(biāo)是將桌面app
重新設(shè)計為跨平臺應(yīng)用丐谋。為了使平臺成功芍碧,我們必須經(jīng)歷大量測試,以保證游戲足夠公平号俐。注冊和身份驗證機制將阻止低級別的賬號多開及未成年賭博泌豆。數(shù)據(jù)存儲機制將對作弊行為進(jìn)行追蹤。
- 改進(jìn)P2P消息主干
應(yīng)用程序使用了運行時-可交換的插件來實現(xiàn)消息傳輸吏饿,當(dāng)前使用的是基礎(chǔ)的HTTP
服務(wù)踪危。未來部署時會使用更加工業(yè)級別的主干。
- 公正性實施
作為一致性原理的一部分找岖,一個公證人員可以阻止兩名玩家在一個三人局中使用破解的客戶端進(jìn)行作弊陨倡,這是其他51%
共識機制做不到的。
- 商業(yè)級別的前后端
Virtue Poker將會重新設(shè)計客戶端界面许布,為第一輪測試用戶打造用戶界面兴革。
6.2.3 2018年第一季度
- 身份管理
起初,我們會集成第三方身份驗證服務(wù)(https://www.hooyu.com/)。當(dāng)我們繼續(xù)與全球監(jiān)管者合作時杂曲,我們會使用自主身份驗證解決方案庶艾,例如uPort。我們的目標(biāo)是打造去中心化的登錄系統(tǒng)擎勘。
- 數(shù)據(jù)存儲
Virtue Poker將使用公正節(jié)點收集并存儲每手級別的數(shù)據(jù)咱揍。我們打算將這些數(shù)據(jù)存儲到IPFS
,并將引用作為數(shù)據(jù)添加到牌桌合約中棚饵。起初在Alpha
版本我們會使用中心化的存儲機制煤裙。
6.2.4 2018年第二季度
- Alpha私密測試
我們進(jìn)行私密測試,目的是找出bug
以及修改UI/UX
噪漾。參與第一輪代幣購買的用戶將會被邀請參加測試硼砰。
- 面世前活動
我們會組織面世前的活動,邀請線上及線下知名選手在Twitch
上進(jìn)行演示欣硼。
6.2.5 2018年第二和第三季度
- 退水機制
基于用戶測試結(jié)果题翰,我們將實現(xiàn)使用vpp
的退水機制。
- 打造多桌比賽方法
多桌比賽合約管理賽事的牌桌以及分配選手到指定牌桌诈胜。并且管理著賽事進(jìn)度和結(jié)果豹障。P2P子網(wǎng)絡(luò)將會和多桌比賽的智能合約進(jìn)行通訊。
- 公測
面向全球玩家的公測
6.2.6 2018年第四季度
- 舉辦全球公開賽
6.2.7 2019年
- 集成第三方運營商
Virtue Poker將會對全球的第三方運營商和有許可的機構(gòu)開放焦匈,在我們的基礎(chǔ)架構(gòu)上舉辦賽事血公。這將會迅速提升我們的知名度和現(xiàn)金流,將吸引大量玩家括授。
7.團(tuán)隊介紹
主要由核心團(tuán)隊坞笙,顧問,法務(wù)合作伙伴組成荚虚。
8. 附錄:Virtue Poker架構(gòu)
Virtue Poker仍然處于開發(fā)中薛夜,這部分的內(nèi)容可能會有變動。
8.1 系統(tǒng)架構(gòu)
Virtue Poker全部基于去中心化平臺版述。為了達(dá)到這個目的梯澜,將使用新的技術(shù)例如以太坊,IPFS以及其他解決方案渴析。
桌面程序是跨平臺的晚伙。包括游戲引擎,游戲客戶端俭茧,以及與以太坊的通訊網(wǎng)絡(luò)咆疗,也就是P2P子網(wǎng)絡(luò),以降低游戲延遲性母债。
8.1.1 組件
跨平臺應(yīng)用的主要組件有:
游戲引擎:包括撲克游戲邏輯
以太坊:作為游戲參數(shù)午磁,第三方服務(wù)尝抖,結(jié)果匯報,多桌玩家管理迅皇,公正管理
游戲網(wǎng)絡(luò):一個獨立組件以便引擎與外部世界通訊
P2P網(wǎng)絡(luò):由游戲網(wǎng)絡(luò)管理的子網(wǎng)絡(luò)
Web3.js:以太坊提供的
JavaScript API
昧辽,用來與以太坊節(jié)點通信跨平臺程序
撲克游戲客戶端:用來進(jìn)行游戲。使用
React
編寫的HTML5
網(wǎng)頁程序IPFS客戶端:使用
IPFS
網(wǎng)絡(luò)存儲游戲記錄
8.2 游戲引擎
8.2.1 狀態(tài)機
游戲引擎是我們程序的核心登颓,一個有限的機器控制著包含了游戲狀態(tài)和游戲規(guī)則的交易搅荞。依靠用戶與程序的交互,以及網(wǎng)絡(luò)相應(yīng)框咙,游戲引擎觸發(fā)行為并且切換到下個狀態(tài)咕痛。
8.2.2 連接或者離線狀態(tài)
當(dāng)用戶登錄程序時,Virtue Poker執(zhí)行以下流程:
程序未連接喇嘱,我們處于離線狀態(tài)
用戶輸入登錄信息然后嘗試登錄
游戲引擎接收輸入信息暇检,觸發(fā)登錄行為
登錄完成后,引擎切換下一狀態(tài)并且通知改變UI
如果登錄成功婉称,連接成功
如果登錄失敗,保持用戶處于離線狀態(tài)
8.2.3 大廳狀態(tài)
游戲引擎狀態(tài)分為兩類:
游戲進(jìn)行狀態(tài):游戲進(jìn)行時的狀態(tài)
大廳狀態(tài):除了游戲進(jìn)行時其他所有的狀態(tài)
大廳狀態(tài)包括:
離線:用戶未登錄
已連接:用戶已登錄构蹬,可以創(chuàng)建牌桌或加入牌桌
創(chuàng)建牌桌
加入牌桌
牌桌閑置:用戶等待其他用戶加入牌桌以便開始游戲
8.2.4 游戲進(jìn)行狀態(tài)
游戲進(jìn)行中的狀態(tài)包括:
On Deck:玩家等待開始
Start Hand:所有玩家已經(jīng)做好了準(zhǔn)備
Shuffle:洗牌并加密
Deal:
pre-flop
,flop,
turn
和river
Bet:玩家們根據(jù)情況選擇
check
,bet
,fold
或者raise
Check Deal:游戲引擎根據(jù)規(guī)則決定是否繼續(xù)發(fā)牌
Showdown:
displayed
或者mucked
Resolve:展示手牌
Report:將結(jié)果發(fā)送給游戲/牌桌合約王暗,勝者收到獎勵
8.3 以太坊牌桌合約
單獨在以太坊區(qū)塊鏈上進(jìn)行撲克游戲需要大量資源和時間(以太坊全網(wǎng)現(xiàn)在僅支持每秒25筆交易)。為了使游戲平滑進(jìn)行庄敛,牌桌合約設(shè)計用于管理玩家俗壹,驗證每手結(jié)果,將游戲邏輯交給鏈下處理藻烤。
8.3.1 方法
VirtuePokerTable:使用給定的參數(shù)初始化牌桌
Join_table:加入牌桌绷雏,使用給定的參數(shù)創(chuàng)建玩家結(jié)構(gòu)體,如果報錯便返回報錯信息
Get_player_seat:返回玩家座位號怖亭,如果沒有返回-1
Get_player_p2pid:根據(jù)玩家座位號返回P2P的
ID
涎显,如果沒有返回空字符串Hand_results_hash:根據(jù)玩家提供的參數(shù)計算一個哈希值
Recover_sig_addr:返回與地址關(guān)聯(lián)的密鑰對,用來簽署哈希值
Report_hand_results:驗證是否所有玩家都對游戲數(shù)據(jù)進(jìn)行了簽名兴猩,如果報錯便返回報錯信息
Leave_table:玩家離開牌桌期吓,將收入返還給玩家
8.4 游戲網(wǎng)絡(luò)
游戲網(wǎng)絡(luò)提供了通訊接口,我們有兩條主要的通訊流:
使用P2P網(wǎng)絡(luò)與其他玩家通訊
使用Web3.js與以太坊網(wǎng)絡(luò)通信
加入一個牌桌就是一個用戶與以太坊通信的例子倾芝。
當(dāng)玩家加入牌桌讨勤,他們需要從錢包發(fā)送資金用以買入。游戲網(wǎng)絡(luò)另一個重要的部分便是對你的存儲資金負(fù)責(zé):使用密鑰這種私密安全的方式晨另。
8.4.1 密鑰
密鑰對潭千,公共密鑰和私有密鑰,代表了你儲存在錢包的資金:
公共密鑰是一個地址借尿,用來收款
私有密鑰用來發(fā)送資金
發(fā)送資金以便交易刨晴,而交易使用了私有密鑰簽名。你的資金的安全性和你的私有密鑰成正比,如果有人獲取了你的私有密鑰割捅,他也會獲取你的資金奶躯。
我們的密鑰存儲使用了同樣的密鑰到處方式(Scrypt
),對稱密碼(AES-128-CTR)
亿驾,并且使用Geth
作為消息鑒定代碼嘹黔。Geth
是以太坊官方Go
語言協(xié)議。
你的密鑰存儲在你的本地存儲中莫瞬,被密碼保護(hù)著儡蔓。在進(jìn)行游戲時需要使用到它。
8.5 P2P網(wǎng)絡(luò)
P2P網(wǎng)絡(luò)負(fù)責(zé)用戶除以太坊網(wǎng)絡(luò)外的所有通訊疼邀。在DApp
環(huán)境中喂江,這稱為離鏈。以太坊網(wǎng)絡(luò)中旁振,DApp
執(zhí)行的所有交易都要消耗燃料(也就是一定的以太幣)获询,所以我們需要DApp
更有效率。我們致力于限制合約(代碼)的大小拐袜,限制基于以太坊的通訊吉嚣,來減少不必要的花費并且提升游戲速度。
我們的P2P網(wǎng)絡(luò)不是用來作為一個頻道蹬铺,而是作為子網(wǎng)絡(luò)尝哆,負(fù)載其他所有客戶端同意另一個離鏈客戶端發(fā)生的情況。這是一種區(qū)塊鏈驗證同意甜攀,但是不可回退及重復(fù)的一種方式秋泄。
在每手開始時,同一桌的玩家們同時執(zhí)行roll-call
來確認(rèn)其他玩家的消息规阀,他們一致同意誰將被包含在下一手中恒序。
8.6 Web3.js
Web3.js
是一種以太坊JavaScript API
,是以太坊小組創(chuàng)建的官方庫姥敛。我們使用它來:
編譯合約:在編譯為
web3
之前奸焙,我們的合約需要進(jìn)行預(yù)編譯和測試。編譯合約為web3
語言彤敛,然后才可部署合約与帆。部署合約:
web3
提供一個簡單及安全的Javascript API
用以部署合約合約呼叫:合約部署后,任何呼叫合約的方式都以
web3
接口實現(xiàn)交易:使用
web3
調(diào)用合約
8.7 Electron
我們的桌面應(yīng)用程序是基于Electron
開發(fā)的墨榄⌒悖基于Electron
已經(jīng)開發(fā)出了很多基于以太坊的成功的產(chǎn)品,例如Mist
袄秩,Atom
, Visual Studio Code
和the Jaxx Wallet
阵翎。Electron
是一個開源框架逢并,由Github
創(chuàng)造,使用JavaScript
, HTML
和CSS
等網(wǎng)頁技術(shù)開發(fā)本地應(yīng)用郭卫。我們選擇Electron
的原因有:
它是跨平臺框架:一次編碼可以用于多個平臺砍聊。在我們的案例中,平臺包括
Windows
,Mac
和Linux
它是基于網(wǎng)頁技術(shù):我們使用同一種技術(shù)開發(fā)程序贰军,不需要為不同平臺雇傭不同的開發(fā)者
改善開發(fā)費用:我們雇傭的人才不需要精通不同平臺的開發(fā)玻蝌,降低開發(fā)費用
改善開發(fā)速度:使用
Electron
開發(fā),不需要開發(fā)不同平臺词疼,這會提升我們的開發(fā)速度
8.7.1 Electron架構(gòu)
Electron架構(gòu)基于:
Chromium:由
Google Chrome
和Chrome OS
提供的瀏覽器引擎俯树,允許我們使用web
技術(shù)進(jìn)行開發(fā)NodeJs:
Node
是一種Javascript
引擎蕾哟,基于Chrome/Chromium V8
Javascript
引擎综液,可以訪問系統(tǒng)資源(例如文件系統(tǒng))
每一個新版本的Electron
都提供了最新的Chromium
和NodeJS
版本。當(dāng)前文章編寫時巴元,Electron
版本為1.6.11
舵盈,包括:
- Node 7.4
- Chromium 56.0.2924.87
- V8 5.6.326.50
更多信息訪問: https://electron.atom.io/陋率。
8.8 撲克游戲客戶端
8.8.1 游戲客戶端架構(gòu)
我們的游戲客戶端使用React React-Redux
架構(gòu)。
8.8.2 游戲進(jìn)行
游戲UI包含兩個主要的組件秽晚,以不同的窗口顯示:
大廳
牌桌
當(dāng)用戶開始游戲翘贮,他處于大廳中,并可以執(zhí)行以下操作:
登錄
創(chuàng)建牌桌
查看所有可加入的牌桌
加入游戲:加入牌桌或者賽事
錢包管理:用戶可以管理
virtual poker
錢包玩一局游戲:以新的窗口顯示牌桌開始游戲
同時玩多局游戲:用戶可以同時加入不同的牌桌進(jìn)行游戲