作者: Jonathan Lu(ArcBlock 區塊基石資深軟體工程師)
在 ArcBlock 平臺開發的過程中,我們相信我們的重要使命之一是為開發者提供方便快捷的開發 DApp(去中心化應用)[1]的服務。現如今,傳統的 web 開發者已經享有成熟的開發技術棧所帶來的便利,而我們希望將類似的開發體驗帶到區塊鏈應用開發領域,為開發者和產品經理提供開發 DApp 所需要的一切。我們有時會將它設想成區塊鏈的 Ruby on Rails。為了這個目標,我們開發了 ArcBlock SDK(支援多種語言,如 JavaScript、Python、Elixir 等)、ArcBlock CLI 工具以及Blocklet.Starters[2]。
在 8 月,我們的實習生娜娜撰寫了一個很棒的系列部落格,分享她在四周內從一個入門級區塊鏈開發者[3]到獨立完成一個自動售貨機 DApp 的學習過程。這個系列部落格啟發了我們去”吃自己的狗糧“ —— 不僅僅是去嘗試用我們的產品來解決現實的問題,同時也是去試驗一下自身產品的能力和可用性。
於是乎,我們團隊報名參加了最近的萬向區塊鏈駭客馬拉松[4],去嘗試一下在 36 小時內用 ArcBlock SDK 開發一個 DApp。
Charging Block DApp
本次駭客馬拉松的主題是”區塊鏈與汽車行業“,所以我們選定了一個常見的電動車車主會遇到的問題來作為 DApp 的主題,那就是”沒電的時候附近沒有可用的充電樁“的問題。
根據我們的觀察,雖然近年來電動車充電的基礎設施在不斷的增加中,但是覆蓋率依然無法滿足全部使用者的需求。車主依然還會遇到附近沒有充電樁的情況。同時,因為充電站之間互不連通,車主社羣也沒有激勵機制,導致總體上充電樁的使用效率不夠最佳化。某些充電站負荷過大而某些又無人問津,而且車主還會將充電站當成停車場,在充滿電後依然佔據位置。此外,因為商業用電和家庭用電的收費標準不同,所以充電站的收費通常比在家充電的花銷高很多。
於是我們設計出了一個名叫 Charging Block 的 DApp。這個 DApp 的基本想法是,建設一個電動車車主之間共享充電樁的社羣。透過釋出基於區塊鏈的通證 Charging Block Token(CBT),人們可以加入到這個社羣裡來,分享他們的資源,並獲得回報。CBT 通證可以被用來支付充電費用,獎勵分享資源的成員(例如分享充電樁最多的使用者可以獲得額外獎勵),以及”懲罰“浪費公共資源的成員(充滿電還佔據位置的車主將被罰款)等。再進一步,社羣成員還可以使用 CBT 來眾籌在他們的小區建設充電站,並在後續的充電站運營收益中得到分成。所有的這些交易都會透過區塊鏈來記錄,並且即時生效,無法篡改。
我們認為這是一個有趣的想法,於是決定在駭客馬拉松期間嘗試開發一個 demo。這個 demo 將有三部分組成:一個區塊鏈、一個車載應用和一個充電樁端的應用。以下是 Charging Block 的 demo:
以下是我們開發這個 demo 的基本步驟,你們可以看出這個過程有多麼簡單。
首先我們使用Forge CLI[5]來初始化了一條新的鏈:
forge chain:create charging-chain
在命令列中幾步操作之後,我們就自定義了鏈的名稱和通證的名稱等一些引數,然後讓我們來啟動這條鏈:
forge start charging-chain
到此,一條新鏈就建立好並開始執行了。然後我們使用dapp starter blocklet[6]來初始化一個 DApp:
forge blocklet:use forge-react-starter
到此,我們的 DApp 就已經初始化好了,並且開發所需的工具和依賴都安裝完畢。整個這個步驟在兩分鐘內就完成。在此基礎之上,我們根據 demo 的需求,開發了介面,並呼叫 JavaScript SDK 實現了交易相關的邏輯。以下是 demo 的程式碼:https://github.com/wangshijun/charging-block