第四章 區塊鏈中介元件軟體使用探討
4.9 系統比較
本小節著重在此系統與其它系統在各種功能上的比較。
本研究與 BlockApps 的 blockapps-bloc v1.2.2 比較表如圖 4.7:
52
圖 4.7 BlockChainBox 與 BlockApps 比較表
本研究之 BlockChainBox 與 BlockApps 兩者的比較詳細敘述如下:
(1) BlockApps 與本系統一樣都是透過 RESTful API 來呼叫 web3 所提供的 RPC 與以太坊 區塊鏈進行溝通,提供的 web3 API 也涵蓋整個 web3 Library。
(2) Transaction 的差異性在於由於本系統是一整套中介軟體,故比 BlockApps 多架設 RDBMS,將 Contract、Transaction、Event 等資料與狀態都儲存在資料庫中,並且提 供 Webhook 支援。
(3) Event 的差異性也在於提供 RDBMS 協助儲存 Event 相關的資料以及提供 Webhook 支援。
(4) Contract 的差異性主要在於彌補以太坊區塊鏈上無法得知智能合約的內容,因此,
本系統提供 RDBMS 來儲存智能合約原始程式碼、bytecode、ABI 這些需要執行合約
53
所必頇擁有的關鍵資訊以及 Webhook 支援。
(5) API 與 SDK 的部分則是本系統一套中介軟體服務,故本系統設計成 API 伺服器,與 BlockApps 作為開發框架的設計理念不同,並無 SDK。
(6) 在搜尋的部分,BlockApps 只提供 web3 內,針對以太坊區塊鏈上查詢的基本功能。
因此,本系統透過外部資料庫的設計,將區塊鏈上的資料放到外部資料庫中,查詢 的時候直接針對外部資料庫進行查詢,並不需要每次查詢都調用區塊鏈上的方法,
並且額外提供部署在本系統中的智能合約查詢功能。
(7) 在系統部署的部分,則是打包成 Docker,將整個系統封裝成映像檔來部署,而 BlockApps 主要服務的對象則是企業公司,而且 BlockApps 也有提供一整套 Microsoft Azure 的解決方案。
(8) BlockApps 針對以太坊區塊鏈核心有做過一些調整,調整後支援多條區塊鏈的整合,
而本系統著重於單一區塊鏈上的服務,目標在於縮短開發區塊鏈服務的時間與成本,
目前只針對單一區塊鏈進行設計。
4.9.1 系統使用性與操作性比較
本研究與單純使用 Web3 Libaray 直接開發的比較表如下,參考圖 4.8:
54
圖 4.8 Ethereum middleware 與 Web3 Libaray 比較表
4.9.2 比較 Webhook、WebSocket 與 Long Polling
Webhook 使用於伺服器到伺服器間的通信,透過伺服器主動傳送訊息至另一方伺服器,
當事件發生時,它會將資料發送到某個 URL,Webhook 使用的是 HTTP 通訊協定,透過 RESTful 傳輸資料。本研究採用 Webhook,一來是依循 RESTful 的設計架構與最簡單化支 持伺服器與伺服器端的溝通。
WebSocket 的優點在於透過 TCP 進行伺服器與另外一端的雙向溝通,不過 WebSocket 的 缺點是需要一直保持與伺服器的連線,而伺服器面對同時使用者數量眾多時候,則需要 增加實體設備才能解決連線問題。再來因為使用 TCP 通訊協定,所以需要由開發人員實 作 RESTful 額外的功能才可以與伺服器溝通,開發成本也相對單純使用 RESTful 框架來的 高。
Long Polling 的部分,則是透過客戶端與伺服器定期溝通來詢問是否有資料上的更新,與 Webhook 在事件發生後的主動呼叫不同,需要客戶端實作定期輪詢的機制,將資訊拉回,
這種模式對伺服器的負擔相對較大。
55
本研究所使用的 Webhook 與 WebSocket 跟 Long Polling 比較表如下,參考圖 4.9:
圖 4.9 Webhook、WebSocket 與 Long Polling 比較表