我的自動販賣機 DApp 終於成真了!

作者: Yongxin Xu
在前三篇文章中,我介紹了可使用的區塊鏈開發工具——ArcBlock 的 Forge Framework,以及進行區塊鏈專案前應考慮的四個問題。此外,我也分享了自動販賣機 DApp 從構思、建模到實際部署智慧合約的過程。
經過四週的學習與努力,以及大家的關注和鼓勵,我的自動販賣機 DApp 終於成真了!本文將展示我的 DApp。由於這也是本系列最後一篇文章,我也想分享這一個月開發自己區塊鏈專案的經驗。
先快速回顧一下 DApp 模型。我的 dapp 是一套可信任的自動販賣機帳本,分成帳單建立、帳單記錄與帳單展示三部分。第二部分的帳單記錄位於鏈上,透過部署上一篇文章提到的自訂智慧合約來實現;帳單建立和展示則使用傳統的鏈下方式完成。這兩部分正是我過去兩週的工作。

自動販賣機 DApp 的鏈下部分由三個元件組成,均使用 python:
- 帳單模擬器。首次使用時,模擬器會為自動販賣機和相關方建立一定數量的錢包。接著隨機產生帳單中的所有資料,包括商品名稱、價格、購買時間等商品資訊,以及相關方錢包地址等商家資訊。之後,它會傳送上次部署的 aggregate transaction,將資料寫入鏈上。模擬器完成了 DApp 的帳單建立與帳單記錄兩部分。

- 資料庫。以 sqlite3 建立的資料庫會同步鏈上所有交易資料,包括交易成功送出後由鏈上傳回的 hash 值。就像每個人的指紋一樣,每筆交易的雜湊值都是獨一無二的,我們可以透過它輕鬆驗證鏈上的交易。這個資料庫是為了方便建立用戶端平台,也就是 DApp 的第三部分——帳單展示。區塊鏈的資料儲存結構能有效確保所有節點中資料的真實性與可驗證性,卻不便進行高效且複雜的查詢。因此,為了提供更好的使用者體驗並更方便地展示資料,我們仍需從「中介者」——資料庫中取得資料。

- 用戶端平台。此平台使用現有的 Web 應用程式框架 Dash 開發,具備兩項主要功能。第一是查看帳單,可查看任何相關方的帳本,包括帳戶資訊、帳單明細、總銷售額及對應的利潤分成,也能透過日期選擇特定期間的帳單資訊。第二是資料視覺化,例如所有自動販賣機營運商的市場占有率、販賣機分布地圖、每台販賣機的銷售額與熱銷商品。這些資訊會隨鏈上資料即時更新,可用於市場資料分析。


以上三部分與區塊鏈共同組成完整的自動販賣機 DApp。

此時你或許會問:「用戶端平台仍然是從資料庫取得資料,而你又說傳統資料庫存在信任問題,那麼它如何解決信任問題?」
事實上,決定使用資料庫時我也有些猶豫。但後來我突然意識到自己忽略了 DApp 的一項關鍵優勢——當客戶懷疑資料真實性時,可以到鏈上驗證!
因此,我在用戶端的帳單明細中提供每筆交易的雜湊值,並附上 Forge web 連結,方便客戶隨時查詢鏈上的交易記錄。雖然 DApp 的鏈下結構與現有系統相似,但由於資料由區塊鏈記錄,且具備不可竄改與可驗證的特性,DApp 天生具有高度可信度,因而不同於現有系統。從另一個角度看,這也說明使用 Forge Framework 能輕鬆便利地將區塊鏈技術結合既有系統,為現有應用程式賦能。

開發第一個 dapp 後,我想分享幾點經驗:
首先,我成功實現第一個區塊鏈專案,真的非常興奮。其實直到大一我才開始學習電腦科學,也沒有豐富的應用程式開發經驗。因此,當 DApp 構想出現時,尤其主題是大眾仍不熟悉的區塊鏈這種「新」事物,我對自己的能力有些懷疑。當我看見自己每週的進步,以及 DApp 逐漸成形時,感到非常興奮與滿足。
其次,經過四週的開發,我深刻體會到區塊鏈並不是神祕的技術。同時,使用 ArcBlock 提供的 Forge Framework 建構 DApp 確實非常簡單。Forge Framework 替我們解決複雜的區塊鏈底層技術,因此開發 DApp 時,不必徹底理解背後的每個細節。只需了解生活中的哪些問題可由區塊鏈解決,以及如何使用 ArcBlock 的開發工具,就能開始建構 DApp。此外,藉助 Forge SDK,只要幾行程式碼便能輕鬆完成鏈上交易及鏈上與鏈下的互動。現在完成自動販賣機 dapp 後,我也能驕傲地說自己是一名 DApp 開發者!
第三,我真切感受到區塊鏈 3.0 時代已經到來。我們終於可以輕鬆將區塊鏈應用到生活的各個層面。現在已有一個自動販賣機區塊鏈專案解決商業合作中的信任問題。我相信在不久的將來,我們會建構越來越多的區塊鏈應用程式,解決各種問題並改變生活。
讓我們共同期待這個不遠的未來。