第四章 區塊鏈中介元件軟體使用探討
4.10 系統使用情境
本小節將透過基礎區塊鏈應用服務的建構流程來闡述本研究的使用流程,並且運用本研 究所提供的 API 來模擬開發情境與流程。
4.10.1 API 操作流程範例
本小節將描述如何使用本研究完成一個智能合約開發、部署與查詢等功能,RESTful API 操作流程如下:
(1) 創建帳號:調用 POST /account/create,創建一個使用者帳號,系統會一併建立使用 者帳號與 Ethereum address,並且取得一組 access token,此 access token 可以用來 執行中介軟體功能的呼叫。
(2) 創建智能合約:調用 POST /eth/contracts,透過此 API 部署 Solidity 的智能合約,系 統會將智能合約編譯,並且拆解 function 與 event 儲存到 RDBMS 的 Table 內,系統 會一併判斷該 address 餘額是否足夠,並且協助 unlock 該 address 才將智能合約發 送交易至 Ethereum 區塊鏈內。
(3) 建立智能合約的 event webhook:調用 PUT /eth/contract/webhooks,透過建置外部
56
系統來接收 event 的回傳資料。
(4) 執行智能合約的 function:調用 POST /eth/contract/transaction,此 API 支援外部系 統需要呼叫合約上 function 的功能,系統會先判斷 address 餘額是否足夠,再來將 address unlock,再來才是將資料針對 Ethereum 區塊鏈發送 transaction,然後可以 設定 webhook 來接收 transaction 被執行完成的資訊。
(5) 列出智能合約的 transactions:調用 GET /eth/contract/transactionData,外部系統可 以針對 transactionHash 進行搜尋,取得 transaction 的資料
(6) 列 出 智 能 合 約 的 events : GET /eth/contract/eventData , 外 部 系 統 可 以 針 對 transactionHash 進行搜尋,取得 event 的資料。
下列為流程圖圖解,參考圖 4.10 與 4.11:
圖 4.10 流程圖圖解(一)
57
圖 4.11 流程圖圖解(二)
4.10.2 範例程式
本研究提供一個範例程式,描述如何利用本研究所提供的中介軟體來輔助建構一個去中 心化應用,此範例程式實作一個簡單的 Todo list,透過調用本研究所提供的 RESTful API 來完成,Todo list 首頁參考圖 4.12。
Todo list 的主要功能為建構一個待辦事項清單提供新增、修改、刪除、查詢四大功能。
此範例程式會透過調用本研究提供的 RESTful API 來達成,詳細描述如下:
(1) POST /account/create:首先需要創建一個使用者帳號,以取得 Ethereum address,
與 access token,此 access token 可以用來執行中介軟體功能的呼叫。
(2) POST /eth/contracts:將撰寫好的智能合約部署到 Ethereum 區塊鏈中,系統會先將 智能合約編譯,並且拆解 function 與 event 儲存到 RDBMS 的 Table 內,部署完成後 就可以調用 Contract 內的 function。
(3) POST /eth/contract/transaction,將參數帶入 API 內,本研究會調用 Contract function 的功能,將資料發送 transaction 至 Ethereum 區塊鏈,參考圖 4.13。
(4) GET /eth/contract/transactionData:將 Contract id 與 Contract function id 帶入查詢,
可以得知所有透過本研究發送至 Ethereum 區塊鏈的交易資訊,參考圖 4.14。透過
58
該資訊可以將其中的 transactionHash 透過其他第三方提供的查詢功能查詢,查詢結 果第三方資訊與本系統提供之資訊為一致。
(5) GET /eth/contract/eventData:將 Contract id 帶入查詢,可以得知該 Contract 目前於 Ethereum 區塊鏈上發佈出來的 Event 資訊,參考圖 4.15。
圖 4.12 範例程式首頁
圖 4.13 範例程式新增清單,並發送一筆交易至 Ethereum 區塊鏈
59
圖 4.14 範例程式列出所有交易
圖 4.15 範例程式列出所有 Event
60
(1) Contract Handler:協助智能合約的內容管理。
(2) Transaction Handler:協助交易的監聽與資料管理。
(3) Event Handler:協助事件監聽與記錄資料。
(4) Webhook Support:透過 Webhook 於交易或者事件發生時主動將資料傳送到另外一 端。
(5) Explorer Service:更有效率的搜尋區塊鏈上的智能合約、交易記錄、事件記錄的資 料。