• 沒有找到結果。

三層式架構(3-Layer Architecture)

第三章 系統架構

第一節 系統架構說明

一、 三層式架構(3-Layer Architecture)

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第三章 系統架構

大眾面對資訊化時代大量的資訊,且時常充斥著不真實的資訊,常常會 不知道資訊是否是正確的,本研究建置 Hyperledger Fabric 區塊鏈架構,讓 用戶可以在區塊鏈網絡上看到真實、公開的資訊,並以程式市集平台為例,

使用 Chaincode 實現資料、程式使用權的買賣,並建置交易紀錄及研發履歷。

第一節 系統架構說明

一、

三層式架構(3-Layer Architecture)

本研究採用三層式架構實作基於 Fabric 區塊鏈的程式市集平台,透過分 層架構可以更清楚每層 Layer 之間如何溝通,也更容易設計統一的輸出輸入 端口。三層式架構分別為應用程式層(Application Layer)、服務層(Service Layer)及資料存取層(Data Access Layer),以 Docker Container 微服務架構開 發,讓每個層級都能達到輕量化的部署與維護。本研究提出之三層式架構是 以功能面為發想,應用程式層處理畫面及串接、服務層提供多種服務、資料 存取層提供資料存取服務,另外,分開服務層與資料存取層使得用戶無法直 接存取資料庫,也為整體系統的安全性提升不少。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

圖 13 三層式架構 Application

Layer

Data Access Layer Service

Layer

本研究以功能性質區分為三層式架構,設計不同的 Docker Container 微 服務,詳細組成架構如下圖:

Application Layer Service LayerData Access Layer

NodeJS CMS

Program Market Community

Jupyter

Development Unit Computation

Unit Blockchain

Unit(Fabric) Pay

ment Unit Python

executors Chaincode API

Peer Orders

Eclipse che

ZMQ Fabric sdk node

使用者介面層由 Nodejs 為主要架構,透過 Nodejs express 套件清晰的達 成 MVC 架構,介面的轉換也更加清楚,提供使用者三大功能,分別是程式 市集(Program Market)、社群(Community)、AI 模組開發平台(Jupyter 及 Eclipse che)。 Message Queue)傳送給 Python executors 執行,透過 Python 達到快速的運算 效率。

能。開發介面為 Jupyter Notebook 以及 Eclipse che,兩者都能提供線上開發 功能,即時呈現結果在網頁上,但擁有不同的特色及不同支持的程式語言。

圖 15 應用程式層

(二) 服務層

此層提供主要的服務,分為 Computation Unit、Certification Unit、Payment Unit 和 Development Unit,各自運作在獨立的 Docker Container 容器上。

1. Computation Unit

由 ZMQ 跟網頁進行溝通,使用者從程式市集傳送運算需求到 ZMQ,

Computation Unit 監聽 ZMQ 上的 Topic,分送運算需求到 Python executor 中 的運算單元,運算的資料由 Mongo DB 以及資料供應廠商提供,運算結果可 能是年收益率、預測金融商品漲跌等結果同時回傳給 Mongo DB 以及程式市 集監聽的 Topic,程式市集再藉由 Fabric 的 Nodejs SDK 與 Chaincode 溝通記 錄到區塊鏈上。

2. Blockchain Unit

Application Layer

NodeJS CMS

Program Market Community

Jupyter Eclipse che

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

Blockchain Unit 基於 Fabric 區塊鏈架設,運用 Docker 及 Docker Swarm 技術,將 Fabric 部署到多台主機的環境,利用 Fabric 區塊鏈獨特的允許制 以及 Channel 特性,打造商業化的區塊鏈,使用者進入網頁申請會員,同步 為使用者建置 CA 實名制認證,認證過的使用者才能進入 Fabric 區塊鏈網絡 中,並且設定讓 AI 模組開發團隊可以讓研發中的程式履歷、實驗設計只有 專案成員看得到,程式市集則是可以達到只有自己看得到自己的交易紀錄等 功能。因為區塊鏈的不可竄改的特性,讓使用者在市集上看到的程式資訊都 是經過運算完後直接記錄到區塊鏈中,使用者可以安心所看到的資訊是真實 的,並且使用 Chaincode 的特性,達到根據條件判斷,執行特定的程序,例 如程式市集中的資料使用權,在使用權期限到期後,自動將使用權解除,

Chaincode 設定好後,就不需要人工的介入了。

3. Payment Unit

與第三方支付廠商合作,把服務整合撰寫提供 API 並包成 Docker Container 微服務,提供使用者支付購買商品。

4. Development Unit

使用者在平台建立帳號後,經由 JupyterHub 的 Docker Spawner 技術啟 動獨立的 notebook server 在 Docker Container 上,並提供在 Python 運行環境 的函式庫,如 Numpy、Numba、Pandas、Cuda、MatPlotLib 以及 Tensorflow 等,希望能讓使用者能夠快速上手程式及 AI 模組的開發,也提供 GPU 運算,

提高 AI 的效率。使用者也可以線上使用本研究架設的 Eclipse che,提供不 同特色、不同支持程式語言的開發環境。

圖 16 服務層

Service Layer

Development Unit Computation

Unit Blockchain

Unit(Fabric) Pay

ment Unit Python

executors Chaincode API

Peer Orders

Fabric sdk node

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

(三) 資料存取層

由 Mongo DB 建置而成,供服務層對資料庫進行存取,包括各金融商品資料 以及程式。

Data Access Layer

Mongo DB

圖 17 資料存取層

於不同台電腦的 Docker Container 可以互相溝通,讓組織身分設定可以設定 到多台環境上。

圖 18 Fabric 區塊鏈網絡

二、

Fabric 區塊鏈安裝流程-以 basic-network 單台主機環境為例

Fabric 的安裝細節相當複雜,因此本研究歸納一份 Fabric 在 Ubuntu 的 basic-network 單台主機環境安裝流程以利於 Fabric 的上手。整體流程分為安 裝前置環境作業及 Fabric 網絡安裝。

(一) 安裝前置環境作業:

Fabric 網絡的前置環境包括 docker、Python、golang、nodejs、npm、

Hyperledger images、curl,對於沒有指令基礎的初學者來說較為複雜,因此

Docker Swarm

Host Host

相關文件