採用以太坊智慧合約技術的報名系統原始碼
剛開始的時候我們想解決的問題是上次BeyondBlock 研討會時出現率過低的問題,這也是免費活動經常會遇到的情況,通常出席率會落在六成到七成之間。而Taipei Ethereum Meetup 是因為大家的熱情聚集並且一同組織活動,大家花費了很多心力舉辦活動,出席率不彰自然容易澆熄熱情,所以這也是我們上次活動後就想要解決的問題。
首先我們剛開始想做的是押金制,想要透過智慧合約收取押金後,在使用者證明出席後退回押金。
不過這次的活動因為想租用更好的場地來容納更多觀眾,經過社群組織人的討論後,決定應該要改用付費制,在這個當下其實我們已經把押金制的系統建置大約六成並且在社群內進行內部測試了,所以我們又很緊急的將系統改成付費制的報名系統,這也是最後大家看到的報名網站。
當然去除掉押金設計,整個智慧合約的功能也會比較簡化,僅需要處理付款之後紀錄錢包地址即可。
整個系統並不是完全的去中心化應用,而是混合了中心化與去中心化技術。網站採用react.js 開發,並且透過ethjs 連線MetaMask 並且接入區塊鏈。而電子郵件與報名者名字則因為個人隱私考量沒有放在區塊鏈上面,而使用中心化的Firebase 資料庫儲存這些資訊。
我們的智慧合約放在下面:部署時需要提供幾個引數:
- 錢包地址:活動結束後會需要把ETH報名費匯出到一個錢包
- 參與人數:整個活動的參與人數上限
- 報名開始時間:只有在開始報名後智慧合約才會接受報名
當使用者前往報名頁面後,系統將會透過eth.js 與MetaMask 連線這次報名所使用的智慧合約,並且取得智慧合約中的目前報名人數資訊。
首先要滿足幾個條件才可以開始報名:(1) 報名時間已經開始(2) 參與人數還沒到達上限(3) 使用者呼叫報名的函式時有附上超過0.015 的ETH。
當以上條件都滿足時,填妥資料送出後會發出一個Transaction 到區塊鏈上,當此筆交易成功時你的錢包位址將會被登入入區塊鏈中的智慧合約。
在此同時我們也會將電子郵件與報名者名字紀錄在Firebase 資料庫當中,並且透過電子郵件送出報名相關資訊。我們的報到機制因為考慮到現場要如何簡易的驗證使用者的資訊,僅採用使用者出示系統所寄送的電子郵件作為證明。
整體來說在這個報名系統中,去中心化平臺負責了跟資產相關的邏輯:報名費、入場資格;中心化服務則負責了儲存個人隱私資訊以及寄送電子郵件的功能。
當然這樣的售票方式是一個實驗,過程中間也遇到一些問題待解決。
首先第一個問題就是有數個使用者希望一次買多張票,但當初沒有這樣的設計,導致有這樣需求的人必須切換不同錢包地址來購買多張票卷,這是個可以在智慧合約裡面改進的地方。
另外由於我們寄送信件是透過Firebase 的寄信功能,寄信的時間點在新增資料到Firebase 資料庫時即寄出信件,但是資料進入資料庫時並不保證交易已經成功,導致後臺系統還需要額外確認資料庫裡面記錄的錢包地址是否有完成交易取得票卷,這也是可以透過ethereum event 更好的處理,或是也可以考慮完全移除Firebase 的依賴。
最後其實電子郵件當初是因為需要發出報名資訊方便當天報到所以才額外在Firebase 紀錄,但是也可以透過其他方法處理報到流程,進而讓這個系統脫離對Firebase 中心化資料庫的依賴。
其中一個可以的做法是當報名成功後,讓使用者再次透過MetaMask 簽名特定訊息,並且將簽名後的結果產生成qrcode,並且提示使用者妥善儲存此qrcode 作為出席的依據,在報到時可以利用此qrcode 確認這是由特定錢包簽名過的資訊作為入場依據。
區塊鏈技術的報名系統適合嗎?
當我們開放報名的那天,我心裡還在反覆思考到底使用這樣的報名方式到底恰不恰當。隨著票券售馨,加上當天超過九成的出席率也讓我放下心中的大石。其實當使用者已經花了不少心力搞清楚怎麼用區塊鏈報名時,不夠感興趣的使用者都放棄了,最後完成報名的出席活動的機率當然會非常的高。
但這也是個雙面刃,這樣的報名方式的技術門檻還是不低,首先要有ETH 以外,還需要安裝MetaMask 並且利用它完成報名。採用這樣的報名方式,短期看來還是比較適合採用在跟Ethereum 相關的技術型活動。
當然我們也期待有更好的基礎建設可以讓所有人使用區塊鏈技術時都可以變得非常簡單的那一天 — 就如同現在大家都可以輕鬆的透過瀏覽器上網際網路一般
相關文章
- 技術工坊|深度探索以太坊智慧合約(深圳)
- 量化合約原始碼開發技術/合約量化系統開發技術原始碼搭建程式原始碼
- 智慧合約互助遊戲專案系統開發技術方案丨(原始碼搭建)遊戲原始碼
- 富士通推出新技術檢測以太坊智慧合約漏洞
- SET智慧合約量化(策略)系統開發技術(成熟技術程式碼)
- 量化合約系統開發(原始碼)合約量化系統開發(技術)原始碼
- Python量化合約系統開發技術,合約量化原始碼系統開發技術方案Python原始碼
- 合約量化系統開發技術詳細及原始碼原始碼
- DAPP智慧合約燃燒代幣挖礦原始碼系統開發技術APP原始碼
- AI合約跟單策略/永續槓桿交易系統開發技術/合約量化原始碼AI原始碼
- 量化合約系統開發(原始碼)合約量化系統開發(技術方案)原始碼
- 以太坊蜜罐智慧合約分析
- AI合約量化merrill智慧交易系統開發/python技術語言/原始碼AIPython原始碼
- 如何打造安全的以太坊智慧合約
- 合約交易系統開發|智慧合約交易平臺原始碼搭建原始碼
- 如何建立智慧合約遊戲系統?智慧合約遊戲開發核心原始碼示例遊戲開發原始碼
- 以太坊智慧合約升級策略
- 以太坊智慧合約-猜數字
- 量化合約系統開發丨合約量化系統開發原始碼丨合約量化系統開發技術Demo原始碼
- 現貨量化/原始碼/秒合約/量化跟單交易系統合約開發python技術原始碼Python
- 量化跟單/秒合約/原始碼系統開發/永續合約量化交易開發技術分析原始碼
- 合約量化開發(案例版)丨合約量化系統開發(技術說明)丨合約量化系統原始碼規則原始碼
- 區塊鏈智慧合約技術系統開發區塊鏈
- Forsage佛薩奇合約鏈上系統開發原始碼技術原始碼
- 量化合約系統開發(專案方案),合約量化系統開發(原始碼技術)原始碼
- DogeStyle跳舞狗智慧合約系統技術開發(技術原理)
- 以太坊智慧合約開發:讓合約接受轉賬
- DAPP智慧合約/系統開發/智慧合約原始碼/DAPP/Defi/NFT/IDOAPP原始碼
- 智慧合約系統開發原理介紹丨智慧合約開發原始碼詳情原始碼
- LP池智慧合約系統開發原始碼案例原始碼
- 佛薩奇Forsage矩陣開發丨智慧合約原始碼技術分析搭建矩陣原始碼
- MMM/3M互助智慧合約開發穩定版,MMM/3M互助智慧合約系統開發成熟及技術(原始碼功能)原始碼
- 合約量化開發上線版,合約量化系統開發技術邏輯及詳細方案,合約量化原始碼原始碼
- 合約跟單開發需求丨合約跟單系統開發(技術方案)丨合約跟單原始碼及功能原始碼
- Dapp/Defi智慧合約質押流動性挖礦系統技術開發(原始碼解析)APP原始碼
- MMMBSC丨3MBSC互助合約系統技術開發原始碼示例原始碼
- 量化合約/合約量化/合約跟單/交易所繫統開發實現技術原理及案例原始碼原始碼
- 跨鏈橋智慧合約系統開發技術分析