《區塊鏈DAPP開發入門、代碼實現、場景應用》筆記5——區塊鏈福利彩票的設計

筆者一直強調,必定要利用區塊鏈的特色來解決行業存在的問題,而且該問題最好用區塊鏈解決或者說只能用區塊鏈解決。彩票行業就是個例子。算法

在講解代碼以前,首先講解一下業務設計,如圖6.15所示。函數

 

圖6.15 區塊鏈彩票業務流程區塊鏈

   限於篇幅和業務複雜度,該系統並無按照現有的福彩邏輯來設計,而是本着講明白實現原理的目的,簡化了系統的設計,讀者能夠根據本身的需求來設計符合本身需求的系統。首先在傳統的福彩流程中,用戶會花費人民幣購買彩票,而後福彩系統將相關的投注信息傳送到福彩中心。當投注日期截止後,經過機器搖號的方式決定中彩信息,工做人員記錄投注信息,爲投注人兌獎。在這個過程當中,搖號機器能夠被認爲操控,在巨大的利益密切,公證人員也形同虛設。spa

   而在本系統的設計中,用戶投注的再也不是人民幣,而是一個彩票token,該token須要經過數字貨幣ETH來購買,購買的方式和過程不須要人工參與,是經過智能合約來實現。上圖中的流程1,用戶將ETH發送到token智能合約,該合約會按照ETH與彩票token的比例,返回用戶必定量的token,而後用戶經過流程2,將手中的token與必定的投注信息發送給福彩管理合約,該合約接收福彩token並記錄用戶的投注信息。設計

  流程3是在知足必定條件時,管理員發起搖獎動做,凍結投注行爲。經過一個公開透明的算法,選出幸運的中獎者,該過程也是經過智能合約實現,沒有任何人爲的參與的可能。中獎結果產生後,智能合約自動將獎金髮送給中獎者,這個兌獎過程也無需用戶參與的,而是經過智能合約的一個函數。只是與傳統對講把不一樣的是,傳統兌獎獲得的是法幣,而本合約函數返回的是token。該兌獎過程是圖中流程4的動做,固然做爲福彩的管理者,須要收取必定的資金用於公益事業,所以須要把獎金池中的token轉移給福彩管理員,這個工做在圖中流程5的動做中實現。3d

  投注人在中獎後,能夠繼續投注,也能夠經過將token發送給token的智能合約,贖回ETH數字貨幣,這個過程就將彩票token變成了能夠在現實世界中流通的數字貨幣。流程6是投注人將token兌換成ETH,流程7是管理機構將token兌換成ETH。blog

  在瞭解基本的業務流程以後,接下來說解具體的頁面設計和代碼實現,首先是頁面的功能模塊,如圖6.16所示。token

 

圖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開發入門、代碼實現、場景應用》吧。

相關文章
相關標籤/搜索