我的自動販賣機 DApp:建構 DApps 前應考慮的四件事

作者: Yongxin Xu
編輯: Matt McKinney
上次我介紹了 ArcBlock 的 Forge Framework,它為開發者提供建立客製化區塊鏈及區塊鏈應用最簡便的方式(按這裡閱讀上一篇文章 )。
這篇文章會分享我的 DApp 構想,以及透過建構 DApp 前應思考的四個問題來形成構想的經驗,也會介紹如何定義交易協定等開發進度。
最近我想到一個自動販賣機 DApp:為自動販賣機建立可信賴的帳本。自動販賣機為何需要可信賴的帳本?販賣機銷售商品並獲利,因此需要帳本追蹤金錢。那麼,帳本為何必須「可信賴」?販賣機業務通常有多方參與。我的模型不只有營運商,還包括製造商、商品供應商,以及提供場地安裝機器的業主;各方都會定期分配利潤。

因此,採用每個人都信任的方式記帳至關重要。
另一個關鍵問題是為何不用傳統資料庫?簡單來說,資料庫中的資料較容易遭到竄改。區塊鏈則是分散式、不可竄改且透明的會計系統,能以低成本建立信任,也就是機器信任。這套機制可保證帳本真實,確保各方公平取得利潤,因此非常適合販賣機帳本。

上述討論回答了四個問題中的第一個:為何使用區塊鏈?區塊鏈雖日益普及,我們卻不能盲目追隨,因為許多生活問題已有成熟技術可以解決。我們必須理解區塊鏈為何是應用的關鍵。我的專案需要不可竄改性解決信任問題,而區塊鏈能簡便、低成本地做到。
第二個問題是應用的哪些部分需要區塊鏈,哪些應採用傳統技術,也就是哪些要上鏈、哪些要鏈下處理。區塊鏈能力有限,應用在最關鍵之處,其他部分則以傳統方式完成。我的 DApp 只把確保帳本不可竄改所需的資料存上鏈;帳單如何產生、如何呈現給相關人員,都在鏈下完成。

第三個問題是專案是否需要建立客製化鏈?究竟在既有鏈上開發,或使用較新的跨鏈概念,取決於專案設計與規劃。我的 DApp 是全新專案,因此打算使用自己的鏈。
最後,是否需要建立錢包?Forge Framework 中,錢包等同帳戶,可發起或接收鏈上所有活動。所有活動都稱為「交易」,也是鏈上活動的最小單位。我的專案要讓每台販賣機把帳單資訊送上鏈,再記錄到相關各方的帳本,因此每台販賣機及每位相關人員都需要錢包帳戶。
思考這些問題後便能開始為 DApp 建模。我的 DApp 由三部分組成:
- 建立帳單;
- 記錄帳單;
- 呈現帳單。
建立帳單是模擬傳統販賣機系統產生資料;記錄帳單則由販賣機錢包把相關資料送上鏈;最後再從鏈上載入資料,於傳統網頁平台呈現帳單及各方的最終帳本。第一和第三部分主要在鏈下,第二部分的帳單記錄則上鏈,這也是我們最不熟悉、而我本週正在處理的環節。

如前所述,鏈上每項活動都稱為交易。建立錢包是一種交易,轉帳則是另一種。交易由交易協定定義。Forge Framework 已為開發者定義建立錢包、轉帳與交換等常見交易,也提供範本,簡化客製化交易協定的建立與部署。
為滿足 DApp 需求,我建立了名為「aggregate transaction」的新交易協定。販賣機發起交易時,會把商品名稱、價格、購買時間,以及營運商、製造商、供應商和業主等相關人員資訊送上鏈。交易成功後,資訊不只會記錄上鏈,這項商品的利潤金額也會同步更新到各方錢包帳戶。這就是我對「aggregate transaction」的定義。

確認新交易定義後,下一步就是寫程式!下週我會介紹如何使用 Forge Framework 編寫交易協定,以及如何建立模擬器來測試成果。