筆者一直強調,一定要利用區塊鏈的特點來解決行業存在的問題,并且該問題最好用區塊鏈解決或者說只能用區塊鏈解決,彩票行業就是個例子,
在講解代碼之前,首先講解一下業務設計,如圖6.15所示,

圖6.15 區塊鏈彩票業務流程
限于篇幅和業務復雜度,該系統并沒有按照現有的福彩邏輯來設計,而是本著講明白實作原理的目的,簡化了系統的設計,讀者可以根據自己的需求來設計符合自己需求的系統,首先在傳統的福彩流程中,用戶會花費人民幣購買彩票,然后福彩系統將相關的投注資訊傳送到福彩中心,當投注日期截止后,通過機器搖號的方式決定中彩資訊,作業人員記錄投注資訊,為投注人兌獎,在這個程序中,搖號機器可以被認為操控,在巨大的利益密切,公證人員也形同虛設,
而在本系統的設計中,用戶投注的不再是人民幣,而是一個彩票token,該token需要通過數字貨幣ETH來購買,購買的方式和程序不需要人工參與,是通過智能合約來實作,上圖中的流程1,用戶將ETH發送到token智能合約,該合約會按照ETH與彩票token的比例,回傳用戶一定量的token,然后用戶通過流程2,將手中的token與一定的投注資訊發送給福彩管理合約,該合約接收福彩token并記錄用戶的投注資訊,
流程3是在滿足一定條件時,管理員發起搖獎動作,凍結投注行為,通過一個公開透明的演算法,選出幸運的中獎者,該程序也是通過智能合約實作,沒有任何人為的參與的可能,中獎結果產生后,智能合約自動將獎金發送給中獎者,這個兌獎程序也無需用戶參與的,而是通過智能合約的一個函式,只是與傳統對講把不同的是,傳統兌獎得到的是法幣,而本合約函式回傳的是token,該兌獎程序是圖中流程4的動作,當然作為福彩的管理者,需要收取一定的資金用于公益事業,因此需要把獎金池中的token轉移給福彩管理員,這個作業在圖中流程5的動作中實作,
投注人在中獎后,可以繼續投注,也可以通過將token發送給token的智能合約,贖回ETH數字貨幣,這個程序就將彩票token變成了可以在現實世界中流通的數字貨幣,流程6是投注人將token兌換成ETH,流程7是管理機構將token兌換成ETH,
在了解基本的業務流程之后,接下來講解具體的頁面設計和代碼實作,首先是頁面的功能模塊,如圖6.16所示,

圖6.16 用戶投注界面
(1)首先是賬號資訊,在MetaMask以非管理員身份登錄,會顯示如上圖頁面的元素,所謂的非管理員身份,即不是創建彩票token合約管理合約的賬號,賬號資訊顯示的是當前賬號下的ETH的余額和當前賬號擁有的彩票token的數量,
(2)第二是購買token的區域,在輸入框中輸入愿意花費的ETH的個數,該動作會發送ETH到Token合約的購買介面,當購買成功之后,該賬號下的token就會發生變化,賬號資訊會隨之重繪,本例中,彩票token的價格是1finney,也就是說1eth可以購買1000個彩票token,1 eth = 1000 finney,因此在購買輸入框中輸入1,表示花費1ETH購買彩票token,
(3)第三個區域是輸入投注組合區域,用戶輸入自己的彩票組合,并為該投注資訊設定籌碼數量即token個數,1token表示1注,本例中,為了簡化邏輯,只允許輸入3個0~9之間數字的組合,點擊投注之后,彩票管理智能合約會記錄客戶的投注資訊,并減少用戶賬號下的token數量,
(4)第四個區域是當期賬號已經投注的記錄,如圖6.17所示,

圖6.17 管理員界面
當用戶以管理員身份登錄之后,可以顯示管理員專用區域,該區域需要設定彩票token的購買和出售價格,默認是1 finney,同時管理員還需要鎖定投注并觸發搖獎動作,搖獎結束后,需要重新開始新一期投注,
2020區塊鏈各種應用都上馬了,跟我一起學《區塊鏈DAPP開發入門、代碼實作、場景應用》吧,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/5261.html
標籤:區塊鏈
上一篇:NOMP礦池搭建
