區塊鏈大師之路-實作區塊鏈一番賞!


一番賞目前遇到的問題

  • 需求
    店家做簽
  • 已經有大獎但是沒有被貼出來
    店家混籤
  • 已經廢套的籤被混進

# 初期實作

實作流程圖

規則

一共有 60 個獎品
一個 A 賞
一個 B 賞
兩個 C 賞
兩個 D 賞
兩個 E 賞
24 個 F 賞
28 個 G 賞

# 前端

可以掃描用戶手上的籤紙,然後向區塊鏈的智能合約傳入兩個哈希值

# 後端

建立可以查詢的後臺系統

用戶不僅可以透過後臺查詢中獎資訊
可以透過 ether scan 來重複驗證

# 智能合約

實作一個區塊鏈的線下抽獎機制當用戶掃描籤紙上的 QR Code 時

  1. Dapp 會傳入兩個 hash
    根據傳入的一個是代表此一番賞的 hash
    另一個是代表該籤的 hash
  2. 使用 merkle tree 實作白名單的機制
    制定出該一番賞所有籤的 Whitelist
    當籤的 hash 被驗證是該一番賞時,繼續下一步
  3. 此籤的 hash 經過驗證匹配進入正式的抽籤環節
  4. 根據用戶傳進來的時間做為隨機的戳記,透過此戳記跟傳進來的 hash,
    去算出抽中的獎項
  5. 最後將這一合約的抽獎結果存入區塊鏈中供抽獎者查詢可供查詢的有:
    抽中的獎項 、選定籤的 hash

# 後期實作

  • 雙重 merkle tree
    一個 merkle tree 紀錄一番賞的 hash
    一個 merkle tree 紀錄一番賞 hash 的抽中者
  • 使用其他的隨機數機器
    Chainlink VRF v2

# 問題:

家直接做相同的偽籤

資源:
抽獎實做論文:點我前往