Forge SDK 入門指南

作者: Shijun Wang(ArcBlock 資深軟體工程師)
ArcBlock 的目標是讓區塊鏈與 dApp 的建構變得簡單,讓任何開發專案都能輕鬆運用區塊鏈技術的優勢,而不必面對其複雜性。本文將使用 Forge SDK,帶你在幾分鐘內建立自己的區塊鏈與 dApp。首先,讓我們看看 Forge 包含哪些內容。
Forge SDK 現在包含以下元件,支援 dApp 的完整生命週期:
- Forge Core:交易處理引擎、與共識引擎互動、資料儲存層、每週版本發布
- Smart Contracts:Forge 內建的交易合約可協助開發者處理帳戶、交易、跨鏈與鏈治理等 99% 的商業邏輯
- Forge Desktop:桌面版鏈節點
- Forge Web:Forge 鏈節點的網頁管理主控台與區塊瀏覽器
- Forge SDK:支援 Elixir、JavaScript、Java、Python、Rust,未來還會增加更多語言
- Forge Simulator:流量模擬器
- dApp Workshop:建立 dApp 情境與工作流程,以測試你的邏輯
- Forge Patron:整合式測試工具
- Forge Deploy:支援大規模部署正式環境的 DevOps 工具,目前僅支援 AWS
- Forge Compiler:智慧合約編譯工具,可透過 Forge CLI 使用
Forge CLI 是取得及使用這些工具的最佳方式之一,只要一個指令就能使用完整的 SDK 工具組。
這篇入門文章將說明如何使用 Forge CLI 完成以下工作:
- 一鍵設定區塊鏈——建立並設定自己的區塊鏈。
- 一鍵建立 dApp——快速建立在區塊鏈上執行的 dApp。
安裝 Forge CLI
此範例使用 Node.js,因此開始安裝前,請確認電腦已安裝 Node.js v10.x 或更新版本。你可以執行以下指令確認執行環境:
node --version接著執行 npm install -g @arcblock/forge-cli 安裝 Forge CLI。安裝完成後,應會看到以下輸出:

安裝 Forge 版本
執行 forge install v0.38.4,將 Forge 安裝到本機磁碟。安裝流程如下:

一鍵建立鏈
執行 forge chain:create demo-chain 建立第一條區塊鏈,並設定名稱為 DCT、代幣總量為一億枚。流程如下:

若要自訂設定,請依照以下步驟:
- Chain name: demo-chain 鏈與節點都命名為 demo-chain。
- Please input block time (in seconds): 5 將出塊時間設為 5 秒。
- Do you want to customize token config for this chain? Yes 選擇自訂鏈上的代幣設定。
- What's the token name? Demo Chain Token 代幣名稱。
- What's the token symbol? DCT 設定至少 3 個字元的代幣代號。
- What's the token icon? /Users/wangshijun/.forge_cli/tmp/token.png 代幣圖示的檔案路徑,建議使用正方形 PNG 圖片。
- Whats the token description? Token on demo chain 代幣說明。
- Please input token total supply: 100000000 代幣總供應量。
- Please input token initial supply: 100000000 代幣初始供應量。
- Please input token decimal: 18 小數位數。
- Do you want to enable "feel lucky" (poke) feature for this chain? Yes 允許使用者簽到領取代幣。
- Do you want to customize "feel lucky" (poke) config for this chain? Yes 自訂簽到功能的參數。
- How much token to give on a successful poke? 10 每次簽到可獲得 10 枚代幣。
- How much token can be poked daily? 1000 每天最多發放 1,000 枚代幣。
- How much token can be poked in total? 1460000 可透過簽到發放的代幣總上限。
- Do you want to include moderator config in the config? Yes 自動建立鏈管理員資訊。
- Set moderator as token owner of (98540000 DCT) on chain start? Yes 將其餘代幣放入管理員帳戶。
執行指令後,應會看到以下訊息:

接著執行 forge start demo-chain 啟動測試鏈,等待約 15 秒讓它自動啟動。

剛啟動的測試鏈是單節點鏈。本機節點提供網頁 UI 與整合式區塊瀏覽器。執行 forge web open 開啟主控台。

一鍵部署 dApp
鏈準備完成後,就能建立第一個在鏈上運作的去中心化應用程式(dApp)。Blocklet 是可重複使用的建構模組,可大幅簡化開發者建立 dApp 的流程。Blocklet 可以包含現成元件、模組、函式庫、前端檢視,以及其他簡化 dApp 開發所需的工具。選好 Blocklet 後,只要安裝、啟動並執行即可。多個 Blocklet 也能組合成更複雜的 dApp。
在這個範例中,我們將建立具備以下功能的 dApp:
- 支援使用者透過 ABT Wallet 登入
- 允許使用者掃描代碼簽到並領取代幣
- 允許使用者使用測試代幣付款,解鎖加密文件
執行 forge blocklet:use、選擇 forge-react-starter,再將 dApp 程式碼的儲存目錄指定為 demo-dapp,如下所示:

依提示設定 dApp 參數。完成後,forge-react-starter 會自動為 dApp 建立 DID 帳戶,並在鏈上宣告 dApp 的 DID。此 DID 以 ArcBlock 的 W3C CCG DID 規範為基礎,採用去中心化身分,並完整整合於 Forge。

現在請指定剛才設定的測試鏈 GraphQL 介面。你可以在 forge start demo-chain 輸出的最後一欄找到它,即 http://localhost:8211/api。
dApp 建立完成後,應會看到以下提示:

依提示進入 dApp 目錄並啟動 dApp。如果所有操作都正確,瀏覽器中應會顯示 dApp 首頁:

按一下右上角的登入,使用 ABT Wallet 掃描代碼。如果尚未安裝錢包,可前往 https://www.abtwallet.io 下載。
掃描流程與 WeChat 或 WhatsApp 的登入流程很相似。

在 ABT Wallet 輸入 dApp 要求的使用者名稱與電子郵件資訊,並滑動確認。完成後會看到:

按一下「GET 25 DCT」,再使用錢包掃描代碼,即可取得先前設定的 10 枚代幣並登入。重新整理頁面後,應會看到餘額為 10;本機的區塊瀏覽器也會顯示與註冊和簽到相關的交易。

下一步是解鎖加密頁面。按一下「my purchase」按鈕即可開啟付款頁面。
總結
如果你有任何命令列經驗,整個流程都很直觀。Forge CLI 讓開發者能專注於 dApp 的商業邏輯,其餘讓系統正常運作所需的底層相依項目則由 Forge Framework 處理。我們的目標是讓區塊鏈與 dApp 的建構變得簡單,而 Forge 正能做到這一點。