Hyperledger Fabric 應用於全民公投之連署書驗證暨查詢平台 - 政大學術集成
92
0
0
全文
(2) 摘要 隨著區塊鏈技術的興起,各行業更加重視以及著重發展基於區塊鏈網路技術 服務之應用。區塊鏈具有數據不可竄改性、可追溯性、去中心化以及透過網路中 所有節點保存數據帳本等特點,在區塊鏈之公有鏈與私有鏈應用方面,越來越多 的資訊服務來滿足使用者需求,公有鏈如以太坊的去中心化應用(DApp),私有鏈 如 Hyperledger Fabric 應用於供應鏈管理。現今區塊鏈應用場景有金融領域、產 品供應鏈、醫療保健、數位版權以及工業物聯網等。在個人資訊的安全性日益被 重視之下,如何利用區塊鏈技術創造透明安全、兼顧效能與擴展性之資訊服務, 是目前區塊鏈發展的一大重點。 在本論文中,我們提出了構建於區塊鏈技術的全民公投連署書驗證暨查詢平 台,係採用 Hyperledger Fabric 區塊鏈網路架構。在台灣目前公投連署書驗證流 程並不透明,其驗證流程恐有個人資訊安全之疑慮。本論文以私有區塊鏈為發想, 該平台旨在提升使用者個人資料的隱私安全性以及追溯公投連署書之狀態,並且 在使用者與連署書驗證單位之間建立友善透明的橋樑。透過 Hyperledger Fabric 之特性,如網路成員的權限允許制、隱私通道建立、數據加密與私有交易,藉此 提升個人資料的隱私安全。並且針對不同權限之使用者需求設計相對應的 Chaincode (智能合約),讓使用者能透過 Chaincode 與區塊鏈網路進行互動,如將 個人資訊加密後以通道隔離的方式儲存在區塊鏈帳本中。在 Hyperledger Fabric 區塊鏈網路中的每一筆交易,如查詢帳本中的個人資訊,都需要先提供查詢者的 身份證書,並在交易完成後留下查詢記錄,使用者能清楚知道其儲存在區塊鏈帳 本之個人資訊與連署書曾經被哪些驗證單位查詢,藉此讓使用者之連署書狀態達 到透明以及可追溯之目的,讓驗證流程更加透明,同時保障使用者的資訊安全。 本論文亦探究其他私有鏈應用相關研究如 Hyperledger Sawtooth 與 Corda,並將 兩者之特性與 Hyperledger Fabric 相比,藉此突顯採用 Hyperledger Fabric 作為該 平台之技術框架的優勢。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 關鍵字:區塊鏈、超級帳本、智能合約、虛擬化容器、鏈碼、通道、分散式帳 本、公投連署書。. i DOI:10.6814/NCCU202100164.
(3) Abstract With the rise of blockchain technology, various industries pay more attention and focus on developing applications based on blockchain technology. Blockchain has the characteristics of immutable data, traceability, decentralization, and the preservation of ledger through all nodes in the blockchain network. In the public chain and private chain applications of blockchain, more and more information services to meet the needs of users. Public chains such as Ethereum's decentralized applications (DApp), private chains such as Hyperledger Fabric are used in supply chain management. Current. 政 治 大 digital copyright and industrial Internet of Things. As personal information security is 立. blockchain applications include the financial field, product supply chain, healthcare,. ‧ 國. 學. increasingly emphasized, how to use blockchain technology to create information services that are transparent, safe, efficient, and scalable is a major focus of the current. ‧. blockchain development.. sit. y. Nat. In this research, we propose a cosign authentication and query platform of the. er. io. referendum based on blockchain technology, which uses Hyperledger Fabric. al. iv n C h eandnthe verification process is not transparent, h i U process may have personal g cverification n. blockchain network architecture. In Taiwan, the current referendum's signature. information security concerns. This research is based on a private blockchain, and the platform aims to improve the security of users’ data, trace the referendum, and establish a friendly and transparent bridge between the user and the referendum's verification agency. Through Hyperledger Fabric's features, such as the permission mechanism of network members, the establishment of private channels, data encryption, and private transactions, the security of personal information can be improved. To design corresponding Chaincode (smart contracts) according to users' needs with different permissions, users can interact with the blockchain network through Chaincode, such. ii DOI:10.6814/NCCU202100164.
(4) as encrypting personal information and storing it in the blockchain ledger in a channelisolated manner. Every transaction in the Hyperledger Fabric blockchain network, such as querying personal information in the ledger, needs to provide the identity certificate of the inquirer first and leave a query record after the transaction is completed so that users can know which verification agency have inquired about their personal information and referendums stored in the blockchain ledger. In this way, the user's referendum status can be more transparent and traceable, the process of verification and the security of user's personal information is guaranteed. This research also compares Hyperledger Fabric's features with other private blockchain applications such as. 政 治 大. Hyperledger Sawtooth and Corda and points out the advantages of using Hyperledger. 立. Fabric as the technical framework of the platform.. ‧ 國. 學. Keywords: Blockchain, Hyperledger Fabric, Docker, Chaincode, Channel, Distributed. ‧. ledger, Referendum.. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. iii DOI:10.6814/NCCU202100164.
(5) 目次 摘要……………………………………………………………………..i 目次……………………………………………………………………..iv 表次……………………………………………………………………..vi 圖次……………………………………………………………………..vii 第一章 緒論…………………………………………………………….1. 政 治 大. 1.1 研究背景…………………………………………………………….1 1.2 研究動機與目標…………………………………………………….1 1.3 論文架構…………………………………………………………….2. 立. ‧ 國. 學. 第二章 相關研究與技術背景…………………………………………4. ‧. 2.1 區塊鏈………………………………………………………………...4 2.1.1 區塊鏈的起源與發展………………………………................4 2.1.2 區塊鏈 1.0 : 數位貨幣……………………………….............5 2.1.3 區塊鏈 2.0 : 智能合約………………………………………..7 2.1.4 區塊鏈 3.0:共享經濟模式…………………………………..9 2.1.5 共識機制………………………………………………………10 2.1.6 區塊鏈的密碼學技術特性……………………………………15 2.1.7 零知識證明……………………………………………………18. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 2.2 HYPERLEDGER …………………………………………………………20 2.2.1 起源與背景……………………………………………………20 2.2.2 Hyperledger 主要項目介紹 …………………………………..21 2.3 Hyperledger Fabric ……………………………………………………23 2.3.1 Fabric 架構……………………………………………………..23 2.3.2 Fabric CA………………………………………………………28 2.3.3 Fabric SDK……………………………………………………..29 2.3.4 Fabric 的 Kafka 共識機制……………………………………..32 2.3.5 Fabric 的零知識證明…………………………………………..33 2.4 DOCKER…………………………………………….…………………..35 2.4.1 Docker 主要元件…………………………………………….....36 2.4.2 Docker Compose………………………………………………..37 iv DOI:10.6814/NCCU202100164.
(6) 2.5 各大區塊鏈特點比較………………………………………………..38 2.6 其他私有區塊鏈技術相關研究……………………………………..38. 第三章 研究方法………………………………………………………42 3.1 需求分析………………………………………..……………………42 3.1.1 設計目標……………………………………………………....42 3.1.2 以 Hyperledger Fabric 取代 Ethereum 的區塊鏈平台……….43 3.2 系統架構……………………………………………………………..45 3.3 各層說明……………………………………………………………..46 3.3.1 應用程式層…………………………………………………...46 3.3.2 SDK 服務層…………………………………………………...47 3.3.3 Fabric 區塊鏈網路層………………………………………….50 3.4 CA 身份認證機制……………………………………………………54 3.5 Gossip 協定與數據同步……………………………………………..54. 立. 政 治 大. 第四章 系統實作結果………………………………………………...56. ‧ 國. 學. ‧. 4.1 FABRIC 區塊鏈網路架設…………………………………………….56 4.1.1 事前準備……………………………………………………...56 4.1.2 Fabric 區塊鏈網路輔助工具…………………………………58 4.1.3 Fabric 網路建立……………………………………………....60 4.2 FABRIC SDK GO 實作………………………………………………...62 4.2.1 參數配置……………………………………………………...62 4.2.2 SDK 服務實現………………………………………………..63 4.3 以 GO 語言實現 CHAINCODE………………………………………..66 4.3.1 用於一般用戶之 Chaincode-Petition………………………..66 4.3.2 用於管理用戶之 Chaincode-Service………………………...68 4.3.3 測試自動化部屬 Chaincode 至節點…………………………68 4.3.4 對 State Database 中的用戶資料進行加密………………….70 4.4 實作 MVC 架構之 Web……………………………………………..71 4.4.1 Web 應用設計…………………………………………………71 4.4.2 公投連署驗證平台結果呈現…………………………………73. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 第五章 結論與未來展望………………………………………………78 參考文獻………………………………………………………………..80. v DOI:10.6814/NCCU202100164.
(7) 表次 表 2-1 加密貨幣之通用結構…………………………………………………………5 表 2-2 各大區塊鏈技術之特性比較………………………………………………..38 表 2-3 Hyperledger Sawtooth 與 Fabric 之比較……………………………………..39 表 2-4 Hyperledger Fabric、Ethereum 和 Corda 之比較……………………………41. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. vi DOI:10.6814/NCCU202100164.
(8) 圖次 圖 2-1 比特幣區塊鏈連接示意圖…………………………………………………5 圖 2-2 公私鑰用途…………………………………………………………………6 圖 2-3 智能合約示意圖…………………………………………………………....7 圖 2-4 智能合約與區塊鏈互動示意圖……………………………………………8 圖 2-5 CAP 定理…………………………………………………………………..11 圖 2-6 PoW 特性…………………………………………………………………...12. 政 治 大 圖 2-8 Kafka 生產者與消費者模型………………………………………………..14 立 圖 2-7 PoS 特性…………………………………………………………………….13. ‧ 國. 學. 圖 2-9 Hash function 之工作原理………………………………………………….16. 圖 2-10 數位簽章執行流程………………………………………………………...17. ‧. 圖 2-11 Merkle Tree 在區塊中的資料結構………………………………………..18. sit. y. Nat. 圖 2-12 Hyperledger 目前項目……………………………………………………..20. er. io. 圖 2-13 Hyperledger 2020 年主要項目…………………………………………….21. al. iv n C hengchi U 成員結構……………………………………………..25. n. 圖 2-14 Hyperledger Fabric 主要服務模組………………………………………...24 圖 2-15 Hyperledger Fabric. 圖 2-16 Hyperledger Fabric 交易流程……………………………………………..27 圖 2-17 Hyperledger Fabric CA 與 Peer 節點交互架構……………………………29 圖 2-18 Fabric 網路架構…………………………………………………………….30 圖 2-19 SDK config.yaml 主要配置內容…………………………………………...31 圖 2-20 Kafka 機制運行邏輯……………………………………………………….32 圖 2-21 Identity Mixer 主要角色……………………………………………………33 圖 2-22 Idemix 生成零知識證明之流程……………………………………………34 圖 2-23 VM 與 Docker 結構比較……………………………..…………………….35. vii DOI:10.6814/NCCU202100164.
(9) 圖 2-24 單個 container 內部 image 疊加示意圖………………………………….36 圖 2-25 Docker 運作流程…………………………………………………………..37 圖 3-1 巨量交易筆數下 Hyperledger 與 Ethereum 之平均延遲時間……………43 圖 3-2 本研究之系統架構…………………………………………………………45 圖 3-3 本研究之系統各層…………………………………………………………46 圖 3-4 用戶透過 SDK 與智能合約或 Fabric 區塊鏈網路互動…………………..47 圖 3-5 SDK 與節點之傳輸協定……………………………………………………48 圖 3-6 Petition Chaincode 之設計流程……………..……………………………...49 圖 3-7 Service Chaincode 之設計流程……………..……………………………...50. 政 治 大. 圖 3-8 實作之 Fabric 網路結構……………………………………………………50. 立. 圖 3-9 Fabric 網路中的 Channel 通信配置……………………………………….52. ‧ 國. 學. 圖 3-10 用戶透過 Private Channel 儲存加密數據至指定組織…………………..53. ‧. 圖 3-11 Gossip 推送傳播示意圖…………………………………………………..54 圖 3-12 Gossip 拉取傳播示意圖…………………………………………………..55. y. Nat. io. sit. 圖 4-1 實作部分的 docker-compose.yaml………………………………………..57. n. al. er. 圖 4-2 cypto-config 資料夾………………………………………………………..59. Ch. i Un. v. 圖 4-3 節點相關證書……………………………………………………………..59. engchi. 圖 4-4 configtxgen 所生成文件…………………………………………………...60 圖 4-5 本系統運行之部分 Container……………………………………………..61 圖 4-6 運行中之 Container 日誌紀錄……………………………………………62 圖 4-7 SDK 創建與實例化………………………………………………………..64 圖 4-8 SDK 初始化屬性………………………………………………………......64 圖 4-9 SDK 部分的主程式……………………………………………………......65 圖 4-10 SDK 創建 Channel………………………………………………………..65 圖 4-11 SDK 安裝與實例化 Chaincode…………………………………………..66 圖 4-12 Petition Chaincode 數據設計…………………………………………….67 viii DOI:10.6814/NCCU202100164.
(10) 圖 4-13 部分的 Petition Chaincode………………………………………………..68 圖 4-14 本系統部分之 Makefile………………………………………………….69 圖 4-15 啟動本系統後 Container 運行情況……………………………………...69 圖 4-16 setPrivate function…………………………………………………………70 圖 4-17 getPrivate function………………………………………………………...70 圖 4-18 加密後 Org1 與 Org2 之 couchDB 數據庫比較…………………………71 圖 4-19 Web 結構………………………………………………………………….72 圖 4-20 處理頁面路由(handler.go)………………………………………………..73 圖 4-21 公投連署書驗證平台之主畫面………………………………………….74. 政 治 大. 圖 4-22 一般用戶上傳連署書之畫面…………………………………………….74. 立. 圖 4-23 連署書上傳後的情況…………………………………………………….75. ‧ 國. 學. 圖 4-24 CouchDB 儲存用戶資料之情形………………………………………….75. ‧. 圖 4-25 管理用戶修改連署書驗證結果…………………………………………..76 圖 4-26 驗證結果上傳至 Fabric 網路…………………………………………….76. y. Nat. n. al. er. io. sit. 圖 4-27 向 Fabric 網路提交查詢結果之交易……………………………………..76. Ch. engchi. i Un. v. ix DOI:10.6814/NCCU202100164.
(11) 第一章 緒論. 1.1 研究背景 隨著網際網路的快速發展,以及硬體設備的普及與提升,互聯網的技術日新 月異。同時,儲存在網絡中的數位資訊量也日益龐大,人們越來越重視個人資料 的隱私保護,如何將個人資料與資產以數位化的方式進行保護與加密的技術也日 益著重。近幾年來,各國政府與大型企業意識到數位資產的重要性,開始提倡資. 政 治 大. 訊的透明化。同時,不失去對資料的隱私保護,已經成為全球軟體技術探討之重. 立. 要議題。. ‧ 國. 學. 早在 1981 年就有人欲透過密碼學來解決網際網路資安與隱私的問題。在無 法建立互相信任關係的互聯網上,人們仍需要透過第三方機構的介入,促使參與. ‧. 者達成共識,也因此第三方機構能搜集到個人資料進而侵犯隱私。區塊鏈是一種. Nat. sit. y. 新興的網路應用技術,透過密碼學與分散式節點,以低成本的方式達到去中心化. n. al. er. io. 的共識機制,提供在互聯網中達成雙方信任且可靠的解決方式。. 1.2 研究動機與目標. Ch. engchi. i Un. v. 公民投票乃是民主國家體現民主制度的方式之一,在台灣目前的公民投票規 定,一個議題的成立需要收集到足夠份數的連署書,再由提案人將連署書送至政 府機關審查。但一般民眾對於連署書後續的審查結果無法得知,對此感到疑慮, 目前中選會提出的電子連署方式,其開發過程尚有資訊安全的疑慮。 本研究提出以 Hyperledger Fabric 區塊鏈網路實作連署書驗證暨查詢平台, 讓一般民眾能得知自身連署書的驗證結果。也寄望 Fabric 的區塊鏈特性保障個 人資料安全,其不可竄改性將提升政府為人民服務時的透明度,藉此化解民眾與 政府之間的疑慮,並且更加提升民眾參與公民議題的動力,進而促使民主價值更 1 DOI:10.6814/NCCU202100164.
(12) 落實在大眾生活中。除此之外,Hyperledger Fabric 有別於一般區塊鏈,例如 Ethereum 與比特幣,Fabric 不以挖礦的方式來達成區塊鏈的去中心化。在現今提 倡環保節能的趨勢下,本研究提出以 Hyperledger Fabric 區塊鏈實作,兼具節能 與資訊安全透明化的優勢。. 1.3 論文架構 本論文整體架構分為「緒論」、「相關研究與技術背景」、「研究方 法」、「系統實作」、「結論與未來研究」等五大章節,簡單分述如下: 第一章 緒論:. 政 治 大. 介紹研究背景及研究動機,再以研究目標來描述所要達成的目標,並. 立. 指出本研究在相關領域中的價值。. ‧ 國. 學. 第二章 相關研究:. ‧. 介紹本篇論文的重點項目,如比特幣、智能合約、共識機制與加密技 術、Hyperledger 與其他私有鏈等相關研究。藉由探討相關文獻,闡述. y. Nat. n. al. er. io. 究之平台框架。. sit. 論文中所應用之相關技術,以及為何使用 Hyperledger Fabric 做為本研. 第三章 研究方法:. Ch. engchi. i Un. v. 以需求分析為目標設計系統架構,分析系統中各層的角色以及如何實 現。本章包括需求分析、系統架構、各層說明、Hyperledger Fabric 技術 細節與實現。 第四章 系統實作: 基於 Fabric 區塊鏈技術進行公投連署書驗證暨查詢平台之實作。主要實 作的部分為本平台之 Fabric 區塊鏈網路架設、SDK 服務層、針對不同 權限之使用者需求開發所對應的 Chaincode、私有數據加密,以及建立 使用者與節點之間的私有通道,以達到數據儲存的隔離。. 2 DOI:10.6814/NCCU202100164.
(13) 第五章 結論與未來展望: 總結本論文提出之方法及實作結果,討論未來挑戰及可能的改善方向。. 立. 政 治 大. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 3 DOI:10.6814/NCCU202100164.
(14) 第二章 相關研究與技術背景 2.1 區塊鏈 2.1.1 起源與發展. 在 2008 年 10 月 31 日由中本聰(Satoshi Nakamoto)發表在比特幣論壇中的論 文《Bitcoin: A Peer-to-Peer Electronic Cash system》[1] 提出區塊鏈的概念,並在 2009 年 1 月 3 日創立了比特幣網路,同時也創建了第一個區塊。該論文中提及的. 政 治 大. 區塊鏈技術,是一種基於去中心化、採取點對點的網路模式,同時以加密技術實. 立. 踐信息交易的傳輸。比特幣因其高度的隱蔽性以及不可追蹤性,受到了網路匿名. ‧ 國. 學. 用戶的青睞,然而因其過高的波動性以及各個國家監管層對其態度抑制了比特幣 的發展,使得比特幣至今仍無法成為一種主流貨幣。. ‧ sit. y. Nat. 比 特 幣 的 底 層 技 術 — 區 塊 鏈 , 為 分 散 式 帳 本 技 術 (Distributed Ledger. al. er. io. Technology, DLT),卻因此獲得大眾的注意,並且開啟了後續區塊鏈應用的發展。. v. n. 相較於傳統網路模式,區塊鏈是建構於點對點的網路模式,使得區塊鏈上之貨幣. Ch. engchi. i Un. 支付或其他交易無需透過第三方仲介,區塊鏈的特性為這些領域帶來許多優點, 包括不可竄改性、去中心化、加密安全性,同時也為許多應用帶來了革命性的轉 型。 區塊鏈(Blockchain)為一個可以在多個裝置或機構所組成的網路中進行分享 的資產資料庫,紀錄整個網路中所有的交易,相當於該網路的大型帳本。每個網 路中的參與者可以取得大型帳本之副本,同時,帳本中的任何更改都會在所有的 副本被反映出來。區塊鏈的組成是由創始區塊(Genesis Block)和多個區塊(Block)所 構成,區塊相當於大型帳本中的帳本內頁,以特定格式和交易筆數紀錄網路中的 交易。每個區塊以 Hash 演算法達成上下區塊的驗證匹配後,串連形成區塊鏈。 4 DOI:10.6814/NCCU202100164.
(15) 在區塊驗證過程中,一旦該區塊之 Hash 值與上個區塊驗證後不正確,該區塊將 被其他節點識別出來,並無法被加入在區塊鏈中,使得區塊鏈有著不可竄改的特 性。. 治 政 大 圖 2-1 比特幣區塊連接示意圖 立 ‧. ‧ 國. 學. 2.1.2 區塊鏈 1.0: 數位貨幣. 比特幣是最早出現的加密貨幣,代表了區塊鏈技術平台,其所運用的分散. sit. y. Nat. 式帳本技術(Distributed Ledger Technology, DLT),是一種依賴分散式網路共識. al. er. io. 機制運行的電子現金支付系統,同時也是一種協定與數位貨幣。對於目前現行. v. n. 的加密貨幣來說,區塊鏈底層技術、交易協定與加密貨幣等三個層級是一種通. Ch. engchi. i Un. 用結構,如表 2-1。每種加密貨幣都代表著一種貨幣與一種協定,例如萊特幣 在萊特幣協定上運作,而萊特幣運作於屬於萊特幣自有的區塊鏈之上,意即一 個獨立創建的區塊鏈,該貨幣擁有屬於自己的去中心化帳本。. 表 2-1 加密貨幣之通用結構 5 DOI:10.6814/NCCU202100164.
(16) 加密貨幣的運作方式與傳統貨幣不同,其執行機制不須依賴政府、銀行等信 用擔保機構。比特幣的加密機制是採用非對稱式加密演算法,解密與加密都必須 使用兩個不同的密鑰,即為公鑰(public key)與私鑰(private key)。公鑰是對外公開 的,私鑰必須由用戶個人保管。公私鑰可用於訊息加密與數位簽章,如圖 2-2, 當甲方想對乙方發送加密信息時,需要乙方的公鑰將訊息加密後發送給乙方,當 乙方得到該加密訊息後,以自己的私鑰解密。因此即使有第三方攔截該信息,但 沒有對應的私鑰解密,就無法獲得該加密信息,該流程為公鑰加密與私鑰解密。 用戶透過私鑰將交易記錄加密後,再讓外界使用該用戶的公鑰解密進行驗證,如. 政 治 大. 果驗證成功,就能確保該交易記錄為公鑰持有人所簽核,該流程為數位簽章。. 立. ‧. ‧ 國. 學. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 圖 2-2 公私鑰用途 (參考來源:對稱式與非對稱式加密技術) 從個人用戶的角度來看,用戶需要一個比特幣位址(address)、電子錢包。電 子錢包是由一對匹配的私鑰(private key)與公鑰(public key)所組成,私鑰是使用 SHA-256 演算法生成,用於比特幣交易時的加密簽章,公鑰則用於接收比特幣, 6 DOI:10.6814/NCCU202100164.
(17) 若要將電子錢包解鎖必須同時使用私鑰與公鑰。當用戶接收比特幣時,只需提供 公鑰給另一方;當用戶轉出錢包中的比特幣時,就必須提供公鑰以及由私鑰生成 的加密簽章,當接收者驗證交易時,會先檢驗公鑰的 hash 值與轉出的錢包位址 是否相符,若相符時再檢驗加密簽章是否由對應的私鑰所加密。 比特幣的開發概念和結構具有高度的可移植性與可擴展性,核心特性為去中 心化、可追溯性、不可竄改性等,為後續的區塊鏈 2.0 與區塊鏈 3.0 帶來新的概 念並奠定基礎,針對不同的應用場景有著更深入的開發。. 2.1.3 區塊鏈 2.0: 智能合約. 政 治 大. 2014 年區塊鏈技術有著顯著的提升,並以智能合約(Smart Contract)為發展核. 立. 心,意即能夠在區塊鏈上自動執行的程式。智能合約[2]的概念早在 1994 年由學. ‧ 國. 學. 者尼克·薩博(Nick Szabo)首次提出,將智能合約定義為一種以信息化傳播、驗證. ‧. 或執行的數位協定,並且被允許在沒有第三方的情況下執行可信任之交易,該交 易具有不可逆轉性以及可追溯性。當時並沒有智能合約合適的實現環境,直到區. y. Nat. n. al. er. io. sit. 塊鏈 1.0 階段,去中心化平台的出現,智能合約的概念得以被實現。. Ch. engchi. i Un. v. 圖 2-3 智能合約示意圖. 7 DOI:10.6814/NCCU202100164.
(18) 最具代表性的去中心化區塊鏈應用平台為以太坊(Etheruem),其論文《A NextGeneration Smart Contract and Decentralized Application Platform》[3],強調智能合 約為其平台之主要特色。以 Ethereum Virtual Machine 建立可編寫程式的區塊鏈, 使大眾皆可使用區塊鏈技術建立去中心化應用(Decentralized Application, DApp), 主要應用領域為貨幣以外的其他金融應用,或與資產有關的交易活動、註冊等。 以以太坊的智能合約為例,在以太坊中,用戶都擁有一對公鑰和私鑰所組成 的一組帳戶地址。除此之外,智能合約本身也擁有一組地址,一份智能合約包括: 1. 合約主體- 智能合約中必須有合約主體才能自動解開以及鎖定合約中相關資 產以及服務。. 政 治 大. 2. 數位簽章:智能合約需要所有參與者透過其私鑰進行驗證後才能被啟動。. 立. 3. 合約條款:智能合約的操作順序,都必須由所有參與者認同並且簽署後才可. ‧ 國. 學. 以被執行。. ‧. 4. 去中心化平台:撰寫完成的智能合約必須經過編譯後,部署到去中心化的區 塊鏈平台,並且被分佈於各個節點之間,才能執行。. er. io. sit. y. Nat. 優點:. 穩定性高、交易效率高以及可依使用者需求客製化。智能合約經過編譯後產. n. al. Ch. i Un. v. 生 bytecode,並透過交易儲存於區塊鏈上,不會出現被更改或遺失的情況。智能. engchi. 合約中大部分流程均為自動化,不需第三方,合約雙方達成共識後,即自動化可 執行,進而提高交易效率,並且可依據不同的使用者場景設計出相對應的智能合 約。 缺點: 以太坊的智能合約是公開在其區塊鏈平台上,因此所有的用戶都可以看到合 約內容,也導致出現安全性漏洞。以太坊的交易時間目前較長,一旦合約內容被 修改,可能無法即時修正,在延遲的時間內可能會造成巨大的損失。. 8 DOI:10.6814/NCCU202100164.
(19) 圖 2-4 智能合約與區塊鏈互動示意圖. 2.1.4 區塊鏈 3.0: 共享經濟模式. 政 治 大 主要為將分散式帳本技術應用於更多元的實際場景,區塊鏈技術不僅有可能 立. ‧ 國. 學. 重塑貨幣市場、支付交易、金融服務等,還可能為更多產業與領域提供資源重新 配置的服務,以價值互聯網為核心。區塊鏈能夠對於每個互聯網中具有價值性的. ‧. 信息進行產權的確認、計量與儲存,進而實現資產在區塊鏈上可被追溯與交易,. sit. y. Nat. 有價值的事物以程式形式數位化。例如共享汽車的使用權、不動產證明、醫療紀. er. io. 錄、能源、保險理賠。區塊鏈 3.0 的應用將會跨足至社會自治與智能化領域,包. al. iv n C hengchi U 治社會組織。區塊鏈改進這些領域的服務流程,同時也翻轉其傳統的商業模式, n. 括法律、身份認證、物流、醫療、簽證、投票、公共記錄等,應用範圍擴大至自. 帶來豐富多元的價值交換,促使社會形成一個多種設備的價值互聯世界。 區塊鏈與物聯網(Internet of Thing)的結合也因此興起,以加密貨幣 IOTA [4] 為例,其主要為提供物聯網上各個機器之間資訊安全的通訊以及支付交易,目標 是讓機器之間可以互相買賣各種資源、數據與服務。IOTA 推出非線性的去中心 化網路 Tangle,是第一個不用手續費的分散式帳本系統,也不像其他區塊鏈網路 需要礦工驗證交易,Tangle 將驗證交易的工作分散給網路中每位交易者,每次交 易時負責驗證前兩筆交易,只需付出少量的運算,因此不需額外的獎勵提供給礦 工。. 9 DOI:10.6814/NCCU202100164.
(20) 同時 Tangle 也用於物聯網硬體裝置的數據儲存,因其檔案相當輕量,Tangle 上 儲存並交換數據相當便利,IOTA 相較於其他區塊鏈,其可擴展性大幅躍進,使 得區塊鏈去中心化的科技應用更為蓬勃發展。. 2.1.5 共識機制 (Consensus Mechanism) 區塊鏈技術主要由四大技術所組成,分別為密碼學、共識機制、點對點網路 (P2P Network)以及分散式帳本儲存技術。由於區塊鏈網路為 P2P 網路,每筆交易 都存有較高的網路延遲,網路中的節點所接收到的交易先後順序可能不一致。為 了提升區塊鏈的公平性以及安全性,在沒有第三方介入下,共識機制是區塊鏈技. 政 治 大. 術中最重要的一環,目的是為了讓各個節點彼此之間,能對同一筆交易紀錄達成. 立. 共識。共識機制在區塊鏈網路中建立一個無可辯駁的驗證系統,主要功能為允許. ‧ 國. 學. 節點更新區塊鏈,同時確保鏈中的每個區塊之真實性,並且防止任何單一節點控. ‧. 制或破壞區塊鏈網路,保證區塊鏈能夠正常運作,以及使每個節點能遵循區塊驗 證之規則。為了防止弊端,資訊同步問題與作弊問題(重複支付問題、拜占庭將軍. y. Nat. er. io. sit. 問題[5])將是區塊鏈必須考量與解決的風險,必須設計完善的共識機制讓所有節 點之訊息彼此同步,進而保護區塊鏈系統,使其維持公平性與區塊驗證之正確性,. n. al. Ch. 藉由共識機制來消除傳統的第三方認證。. engchi. i Un. v. 根據 CAP 定理,該定理在 2000 年由埃里克·艾倫·布魯爾提出的假想[6], 並在 2002 年被證明為定理[7],指出在一個分散式計算系統,無法同時滿足以下 三個點:一致性(Consistency)、可用性(Available)與分區容錯性(Partition tolerance), 分散式系統只能同時滿足三項中的其中兩項。. 10 DOI:10.6814/NCCU202100164.
(21) 圖 2-5 CAP 定理. 區塊鏈網路本質上為一個大型分散式系統,共識機制對於區塊鏈網路整體的. 政 治 大 點中取得平衡。目前沒有一種共識機制可以適用於所有的區塊鏈,係根據不同的 立 效能、安全性與可靠性有深遠的影響,在 CAP 定理限制下,針對需求在三項特. ‧ 國. 學. 應用場景,將合適的共識機制導入區塊鏈網路中。常見的共識演算法為:工作量 證明(Proof-of-Work, PoW) [8],權益證明( Proof-of-Stake, PoS) [9],委託權益證明. ‧. (Delegated Proof-of-Stake, DPoS) [10],實作拜占庭容錯演算法 (Practical Byzantine. y. sit. 工作量證明(Proof-of-Work,PoW). io. er. •. Nat. Fault Tolerance, PBFT) [11],Raft (Raft Consensus Algorithm)共識演算法[12]。. 工作量證明(PoW)共識演算法目前被比特幣和許多其他加密貨幣所採用,特. n. al. Ch. i Un. v. 點是難以運算,容易驗證。該區塊鏈本身使用雜湊函式來達到資料的正確性,工. engchi. 作量證明對於區塊鏈是簡明的設計。區塊驗證流程為:當新區塊欲添加到區塊鏈 時,網路中的眾多節點各自進行大量的窮舉運算,並且互相競賽計算出該區塊的 Hash 值,當某一節點計算出與條件相符的結果後,其他節點會驗證該結果的有 效性,該節點即獲得該區塊之記帳權,並且能得到相對應之獎勵,此過程又稱為 挖礦,付出越多算力,獲得到的獎勵越多。. 11 DOI:10.6814/NCCU202100164.
(22) 圖 2-6 PoW 特性 (參考來源:POCKET COIN 口袋區塊鏈). 政 治 大 工作量證明的優點是能使區塊鏈網路完全去中心化,安全性較高,當惡意節 立. ‧ 國. 學. 點發起網路攻擊必須先取得該網路的 51%算力,才有可能成功竄改區塊。破壞系 統需要投入極大的成本,但隨著時間演進,工作量證明的缺點也越趨明顯。例如. ‧. 驗證區塊的時間難以縮短,以比特幣為例,每個區塊大小固定為 1MB,只能寫. sit. y. Nat. 入 3、4000 筆交易,每秒平均處理 5-7 筆交易,網路堵塞相當嚴重;以區塊鏈去. io. er. 中心化的角度來看,雖然人人可加入驗證區塊的行列,但是算力越大,越高機率. al. iv n C hengchi U 念。同時硬體設備也耗費大量的電力與資源,目前全球約 40 億台礦機進行比特 n. 取得區塊記帳權,使得算力有中心化的情況,逐漸偏離區塊鏈去中心化的核心理. 幣工作量證明的計算,其中有 98%的設備並不會取得記帳權,消耗龐大的電力等 同於瑞士全國一年耗電量,設備被用戶陸續淘汰成為電子垃圾,在現今講求節能 環保、高效率產出,工作量證明有著與之相當衝突的缺陷。 •. 權益證明(Proof-of-Stake,PoS). 權益證明(PoS)共識演算法是透過每個節點所擁有的資產來證明自己的記帳 權,當持有該區塊鏈的加密貨幣越多,就擁有越高的機率來取得區塊記帳的權利, 並獲得獎勵。雖然權益證明解決了工作量證明因挖礦而大量消耗電力的問題,也 降低 51%網路攻擊的可能性,但隨著時間,特定節點的持幣量越多,所得到的獎 勵也越多,導致加密貨幣流通性差,雖然解決了 PoW 算力中心化的情況,富者 12 DOI:10.6814/NCCU202100164.
(23) 恆富的現象越來越明顯。PoS 區塊鏈較容易受到特定用戶的壟斷和控制,降低了 區塊鏈網路的公平性,也偏離去中心化的核心理念。委託權益證明共識演算法 (Delegated Proof-of-Stake, DPOS)是利用 PoS 原理創造一個選舉機制,選出特定 數量的節點,並由這些節點進行區塊驗證,此機制產生新區塊的速度快,且更加 去中心化。. 立. 政 治 大. ‧ 國. 學. ‧. sit. y. Nat. •. 圖 2-7 PoS 特性 (參考來源:POCKET COIN 口袋區塊鏈). 實作拜占庭容錯演算法(Practical Byzantine Fault Tolerance,PBFT). er. io. 起源於拜占庭將軍問題(Byzantine Generals Problem),由於當時拜占庭羅馬帝. al. iv n C hengchi U 傳遞消息。在戰爭時拜占庭軍隊內所有的將軍必須達成一致的共識,但是在軍隊 n. 國國土遼闊,為了防禦目的,每個軍隊都分隔遙遠,將軍與將軍之間只能靠信差. 內可能存有叛徒左右將軍們的決定,在進行共識時,結果並不代表大多數人的意 見,這時候,在已知有叛徒的情況下,其餘忠誠的將軍們如何達成一致的協定。 拜占庭將軍演算法的複雜度,也因為將軍(節點)數量的增加而呈指數級增長,因 此實作拜占庭容錯演算法(PBFT)被提出解決該問題,使得複雜度大幅降低,在實 際系統能夠應用 PBFT,提供高效能的運算,每秒能處理上千筆請求。 PBFT 的核心概念為系統中有問題的節點不超過 1/3 時,不管節點之間如何 傳遞訊息,可信節點之間必定能達到一致共識。對於每個收到訊息的節點,都會 廣播至其他節點,不斷重複進行訊息交換,相互驗證,讓可信節點之間能夠確認. 13 DOI:10.6814/NCCU202100164.
(24) 正確的訊息,並且識別出有問題的節點。PBFT 的優點使得區塊鏈網路具備容錯 性,不用依賴加密貨幣維持系統運作。各個節點都是已提前確認和相對可信的, 所以驗證區塊的可靠性與安全性較高,同時可以滿足較高頻率的交易量。各節點 達成共識的延遲時間約為 2-5 秒,在實際應用場景比 PoW、PoS 更為多元。由於 系統中的各節點數目必須提前確認並互相連結,外部節點無法動態加入網路,使 得區塊鏈網路變得較為封閉。節點之間不停的交換訊息造成網路的計算成本提高, 時間複雜度為 O(𝑛! ),連接的節點數量有限,上百個節點已會讓 PBFT 實作的區 塊鏈網路運作之效能變差,在公有鏈上的使用 PBFT 的可能性幾乎為零。目前 PBFT 商業應用區塊鏈網路的是 IBM 所提出的 Hyperledger Fabric 0.6 版本。 •. Kafka 消息佇列集群. 立. 政 治 大. Kafka 最初由 Linkedin 開發與貢獻[13],本質上為一個分散式訊息處理系統,. ‧ 國. 學. 使用釋出-訂閱模型。消費者透過訂閱特定的主題,以便接收到新訊息的通知,生 產者則負責訊息的釋出,當主題的資料規模變得越來越大時,可以拆分為多個分. ‧. 割槽,並且確保一個分割槽內的訊息是按照順序排列的。Kafka 不會追蹤消費者. Nat. sit. y. 讀取哪些訊息,也不會自動刪除已經讀取的訊息,會儲存訊息一段時間再刪除或. n. al. er. io. 直到資料量超過一定容量。當消費者需要輪詢新的訊息時,可以根據自身需求來. i Un. v. 訂閱訊息,因此可以重新處理事件。此外,消費者處於不同分組,對應一個或多. Ch. engchi. 個消費者程序,每個分割槽被分配給單一的消費者程序,因此同樣的訊息不會被 多次讀取。. 圖 2-8 Kafka 生產者與消費者模型(參考自 Wikipedia [14]) 14 DOI:10.6814/NCCU202100164.
(25) Kafka 的崩潰容錯機制是透過在多個 Kafka 代理之間複製分割槽來實現。如果 一個代理由於軟體或硬體故障掛掉,資料也不會丟失。過程中需要一個領導-跟隨 機制,領導者持有分割槽,跟隨者進行分割槽的複製。當領導者故障後,會有其 他跟隨者成為新的領導者。如果一個消費者訂閱了某個訊息主體,會藉由 zookeeper 服務來讀取訊息,zookeeper 是一個分散式 key-value 儲存庫,通常用於 儲存資料及叢集機制的實現,並且有故障容錯能力。Hyperledger Fabric 1.0 版本 中的共識機制提供 Kafka。. 2.1.6 區塊鏈的密碼學技術特性(Cryptograph in Blockchain). 政 治 大 密碼學的相關技術在區塊鏈中為相當重要的應用,保證區塊中的數據不可竄 立. ‧ 國. 學. 改、不可逆性和可追溯性,常見的主要技術有雜湊函數(Hash function)、Merkle tree 與非對稱式加密技術(Asymmetric encryption)。. ‧. •. 雜湊函數(Hash function). Nat. sit. y. 雜湊函數是將任意長度的明文(plain text)映射為較短且長度固定的二進. n. al. er. io. 位雜湊值(hash value)。如果更改明文中的一部分,所生成的雜湊值會發生改變,. i Un. v. 要找到相同的雜湊值,在計算上是非常困難達成的,因此透過數據使用雜湊函數. Ch. engchi. 所生成的雜湊值可以檢驗數據的完整性。雜湊函數可以用於區塊鏈技術的許多應 用,包括數位簽章、身份驗證、數據加密。在區塊鏈中常見的雜湊函數有 SHA256,其所生成的雜湊值長度為 256 位元。. 15 DOI:10.6814/NCCU202100164.
(26) 圖 2-9 Hash function 之工作原理 (參考來源: https://zh.wikipedia.org/wiki/%E6%95%A3%E5%88%97%E5%87%BD%E6%95%B 8) •. 立. 政 治 大. 數位簽章(Digital Signature). ‧ 國. 學. 為一種電子簽章技術,使用雜湊函數與非對稱式加密技術,實作的公鑰(Public key infrastructure, PKI)技術。在 P2P 網路中,由於接收資料的一方,不能確定收. ‧. 到的資料是否來自原發送人所傳送的,透過數位簽章的機制,可以保證資料的正. Nat. sit. y. 確性,並且有效防止傳送途中被攔截竄改的情形。區塊鏈網路中的每個帳戶都有. al. n. 簽署(Sign):. er. io. 兩把鑰匙,分別為公鑰與私鑰,兩者在數位簽章中使用,有兩個主要流程:. Ch. engchi. i Un. v. Alice 將欲傳送給 Bob 的資料透過 Hash 函數得到 Hash 值後,再使用 Alice 自己的私鑰進行加密,最後將加密訊息與資料傳送給 Bob。 驗證(Verify) : Bob 收到加密資料後,透用 Hash 函數取得該資料的 Hash 值,並利用 Alice 的公鑰解密得到 Hash 值,兩者相比後若正確,即可證明該資料確實為 Alice 所 傳送,並且在傳送過程中沒有被竄改。. 16 DOI:10.6814/NCCU202100164.
(27) 圖 2-10 數位簽章執行流程 (參考來源:. 治 政 大 https://blockbar.io/blockchain/%E6%95%B8%E4%BD%8D%E7%B0%BD%E7%AB 立%A0-digital-signature/) 默克爾樹(Merkle Tree). ‧ 國. 學. •. 又稱為雜湊樹,在密碼學中是由雜湊值所建立的樹狀結構,每個葉節點均以. ‧. 資料塊的雜湊作為標籤,而除了葉節點以外的節點則以其子節點標籤的雜湊作為. sit. y. Nat. 標籤。Merkle 樹是從下往上逐層計算的,就是說每個中間節點,都是根據相鄰的. io. er. 兩個葉子節點組合計算得出的,根節點是根據兩個中間節點組合計算得出的。. al. iv n C hengchi U 數據的完整性,把大的文件分割成小的數據塊,如果小塊數據在傳輸過程中損壞 n. Merkle 樹的應用場是為 P2P 網路下載,在網絡中作數據傳輸的時候,為了校驗. 了,只需重新下載此一小塊數據即可。假如在傳輸過程中,某個區塊資料被竄改, 且 Merkle 樹之時間複雜度為 O(log n),透過 Merkle 樹能有較高效率定位找到被 竄改的資料,並且安全地驗證大型資料結構的內容。. 17 DOI:10.6814/NCCU202100164.
(28) 政 治 大. 立. ‧ 國. 學. 圖 2-11 Merkle Tree 在區塊中的資料結構 (參考來源:Bitcoin: A Peer-to-Peer Electronic Cash System [1] ). 2.1.7 零知識證明 (Zero-Knowledge Proof, ZKP). ‧. 零知識證明最初在 1989 年由麻省理工學院的研究人員 Shafi Goldwasser,. Nat. sit. y. Silvio Micali 和 Charles Rakoff 在 其 論 文 《 The Knowledge Complexity of. n. al. er. io. Interactive Proof-Systems》[15]中所提出的理論,為一種提高安全性的加密協議。. i Un. v. 零知識證明的定義為:證明者能夠在不向驗證者提供任何有用資訊的情況下,仍. Ch. engchi. 然可以說服驗證者相信該筆訊息是正確的。以色盲遊戲為例,Alice 是色盲,Bob 不是色盲。Bob 手中有兩個大小、形狀一樣但顏色不同的球,Bob 必須在 Alice 不 能獲知兩個球的顏色之情況下,向 Alice 證明這兩個球是不一樣顏色的事實。在 ". Bob 連續通過 n 次測試後,Alice 以1 − (!)# 的機率認為 Bob 說的是事實,該零知 識證明是一種基於機率的驗證方式,而非確定性證明。根據定義與相關例子,零 知識證明具有以下三項特質: •. 完備性(Completeness):如果證明者和驗證者都是誠實的,並遵循證明過 程的每一步驟,進行正確的計算,那麼這個證明必為成功的,驗證者必 然能接受證明者。 18 DOI:10.6814/NCCU202100164.
(29) •. 合理性(Soundness):如果證明者沒有持有相對應的知識,則無法通過驗 證者的驗證,意即證明者欺騙驗證者的機率可以忽略。. •. 零知識性(Zero-Knowledge):證明過程執行完後,驗證者只會得到“證明 者擁有這項知識”之訊息,並不會獲得關於這項知識本身的任何資訊。. 現今零知識證明根據不同的特點,主要有兩種:交互式與非交互式。交互式 是需要證明者和驗證者來回發送多輪訊息,非交互式是證明者只需要根據協議向 驗證者發送一次訊息。有的協議會為了證明其所定義的問題,證明時間與運行效 率過低。如何發展出一個非交互式、生成證明高效率的零知識證明,是目前密碼 學家的研究目標。. 政 治 大. 以主流區塊鏈 Bitcoin 與 Ethereum 的角度來看,每個帳號(錢包地址)其所有. 立. 的交易紀錄都是被公開的。意即只要與對方交易一次,會被對方查詢到自身帳號. ‧ 國. 學. 的交易資訊,對使用者來說是相當缺乏隱私的,讓交易可以被驗證,同時不洩漏. ‧. 交易的細節,是目前區塊鏈引入零知識證明的發展重點。加密貨幣 Zcash 所提出 的 zk-SMARK 演算法[16],是將零知識證明結合加密貨幣所作出的匿名交易技. y. Nat. io. sit. 術,zk-SNARK 可將交易資料完全隱匿,Zcash 區塊鏈上的礦工可以在資料隱藏. n. al. er. 的狀態下驗證交易,並且防止雙花支付(double spent)的情況發生以維持區塊鏈帳. Ch. i Un. v. 本的正確性。雖然 zk-SNARK 技術為加密貨幣帶來了高度隱私,其挖礦時所需要. engchi. 的運算力高於普通的虛擬貨幣,在完全隱匿資訊的情況下進行交易會耗費許多能 源。. 19 DOI:10.6814/NCCU202100164.
(30) 2.2 超級帳本 (Hyperledger) 2.2.1 起源與背景 超級帳本(Hyperledger)是由 Linux 基金會在 2015 年 2 月發起的開源項目,其 宗旨為推動區塊鏈於跨領域的應用,讓區塊鏈以及分散式帳本系統在不同產業間 互相協作與發展,尤其注重後續發展的性能和可靠。參與 Hyperledger 的成員們 包括物聯網、金融業、製造業與科技業之頂尖企業,在因應各行業中的不同場景 下,以 Hyperledger 的核心概念,成員們開發與貢獻出許多豐富多元的 Hyperledger 相關項目,並逐漸形成 Hyperledger 之生態圈,也是目前全球最大的區塊鏈聯盟。. 立. 政 治 大. ‧. ‧ 國. 學 y. Nat. sit. n. al. er. io. 圖 2-12 Hyperledger 目前項目 (來源:Linux Foundation Projects, https://www.hyperledger.org/). Ch. Linux 基金會創建 Hyperledger 有五大目標:. engchi. i Un. v. 1.. 創建企業級分散式帳本系統與開源式程式碼以支持商業交易。. 2.. 提供中立、開放和社群驅動的基礎架構,並提供技術與商業治理。. 3.. 建立技術社群用以開發區塊鏈、分享使用者案例、場景追蹤與部署。. 4.. 向大眾介紹區塊鏈技術的市場應用機會。. 5.. 促進社區採用多種平台和框架的工具包。. 20 DOI:10.6814/NCCU202100164.
(31) 2.2.2 Hyperledger 主要項目介紹 目前 Hyperledger 已經發展出 10 個主要項目和 120 多個延伸出來的相關模 組專案,所有項目都遵守 Apache v2 許可,並共同遵守如下的開發原則: . 重視模組化設計:包括交易、合約、身份驗證、共識機制、存儲等應用 場景。. . 重視程式可讀性:確保新功能和模組可以很容易擴展。. . 可持續性的演化:隨者需求的深入以及更多的應用場景,不斷增加和演 化新的項目。. 立. 政 治 大. ‧. ‧ 國. 學 sit. y. Nat. al. n. 1.. io. 主要項目有:. er. 圖 2-13 2020 年 Hyperledger 主要項目. Ch. i Un. v. Fabric : 為一個允許制的企業級區塊鏈平台,由 IBM 和 Digital Asset 貢獻的. engchi. 分散式帳本技術,包括 Fabric、Fabric CA、Fabric SDK,支援 PBFT、Kafka 以及 Solo 共識機制。Hyperledger Fabric 的目標是成為開發應用和解決方案 的基礎,在設計上採用可插模組化架構。支援的程式語言有 Go、Python、 Node.js,具備極佳的保密性、可伸縮性與可擴展性,並能適應許多複雜的商 業場景。. 2.. Iroha : 由日本的 Soramitsu、Hitachi 以及 NTT Data 所提出的分散式帳本技 術。主要特色為行動裝置優先,採用 C++開發,並支援 PBFT 共識演算法。. 21 DOI:10.6814/NCCU202100164.
(32) 3.. Sawtooth : 由 Intel 提出,跟 Fabric 一樣是分散式帳本技術,用以創建、部 署和運行分散式帳本,因此常常被拿來跟 Fabric 比較。Sawtooth 提供了一個 新的共識算法,計時驗證(Proof-of-Elapsed Time , PoET),最大特色是提 供了更細微的權限控制、可執行以太坊智能合約,並且支援平行計算。. 4.. Cello : 由 IBM 所貢獻,提供區塊鏈平台的部署和維護運行時的管理功能, 有效管理多條區塊鏈並在各種基礎架構上運行。例如裸機、虛擬機與容器平 台,開發者也可以快速建構一個區塊鏈即平台服務(Blockachain as a Service, BaaS)。Cello 支援的區塊鏈有 Hyperledger Fabric Network v1.0 與 Sawtooth。. 立. Burrow : 由 Monex 和 Intel 共同維護,源自於以太坊框架,是一個基於以太. 學. ‧ 國. 5.. 政 治 大. 坊虛擬機(Ethereum Virtual Machine,EVM)的智能合約執行引擎。透過授權. ‧. 允許才能連接至區塊鏈網路,採用了部分 EVM 的技術規範,並使用模組化 設計,目前支援 PBFT、SBFT 以及 PoET 等共識演算法。Hyperledger Burrow. y. Nat. er. io. sit. 項目包含兩種模組:共識引擎與智能合約引擎。共識引擎負責維護節點之間 的應用程式之事件排序;智能合約引擎為應用程式開發者提供一個執行引擎,. n. al. 可用於複雜的工業應用。. 6.. Ch. engchi. i Un. v. Composer : 由 IBM 貢獻的一個應用程式開發框架,可以簡化並加速開發 Fabric 的智能合約與分散式應用(Distributed Application, DApp)。. 7.. Indy : 由 Sovrin Foundation 所開發的數位身份認證項目,目的是利用區塊鏈 技術解決身份認證之問題,提供基於區塊鏈或其他分散式帳本數位身分,並 且為 Hyperledger 生態圈提供一個用戶驗證方案,致力研發自主身份認證 (Self-Sovereign Identity, SSI)。. 8.. Blockchain Explorer : 提供用戶一個 Web 介面,透過瀏覽器可檢視區塊鏈中 的資訊,包括區塊資訊、Chaincode 資訊,目前支援 Fabric 與 Cello。 22 DOI:10.6814/NCCU202100164.
(33) 9.. Caliper : 為區塊鏈性能測試工具,目前支持的指標有成功率、交易與讀取吞 吐量、交易延遲與硬體資源消耗。. 10. Quilt : 對 W3C 支援的跨帳本協議,目前由 Java 實現,主要為轉帳服務提供 跨多個區塊鏈平台的支持。. 2.3 Hyperledger Fabric 由 IBM 與 Digital Asset 等企業於 2015 年貢獻給 Linux 基金會,主要為商業 級應用的分散式帳本解決方案。該項目以 Go 語言開發,後續發展出包括 Fabric CA、Fabric SDK 等多個子項目,截至目前為止已發佈到 2.1.0 版本,Fabric 項目. 政 治 大. 在 Github 上連結為 https://github.com/hyperledger/fabric。. 立. Fabric 是一個提供分散式帳本技術的平台,同時是擁有權限管理制度的區塊. ‧ 國. 學. 鏈系統,以模組化架構為基礎,提供高度的安全性、靈活度與可擴展性,並且提. ‧. 供模組即插即用的服務,也允許網路中的成員創建通道來達到私密溝通之功能。. io. sit. y. Nat. 2.3.1 Fabric 架構. n. al. er. Fabric 從 1.0 版本新增了許多特性,在安全性與擴展性大幅提升,支援多通 道,提高通信隔離的安全性,支援共識機制模組與權限管理模組等可插拔功能。 帳本數據可儲存為多種格式,同時細分網路中節點的角色,可根據實際情況調整 部署。. Ch. engchi. i Un. v. 23 DOI:10.6814/NCCU202100164.
(34) 政 治 大. 立. ‧. ‧ 國. 學. 圖 2-14 Hyperledger Fabric 主要服務模組(來源: https://www.pcmag.com/news/ibm-microsoft-are-building-our-blockchain-futureandtheyre-not-afraid-to) Fabric 主要核心服務:. Nat. sit. y. 1. 成員管理服務(Membership Service, MSP):. n. al. er. io. 基於 PKI 的成員權限管理,提供成員註冊、身份保護、交易內容保密與審. i Un. v. 核功能。外部節點需要通過 MSP 認證才能加入網路,提高了 Fabric 網路的安. Ch. engchi. 全性。網路中所有成員必須經過許可才能發起交易,在發起交易時,如果使 用 Transaction Certificate Authority (TCA)功能,該功能會保護成員 ID 不會被 無關方看到。 主要有三種用途的證書:Enrollment、Transaction 以及 TLS 證書 •. 註冊證書 ECert : 分發給已有註冊憑證的節點,長期有效。. •. 交易證書 TCert : 分發給節點用來控制每個交易的權限,通常使用在某 一筆交易,短期有效。. •. 通信證書 TLSCert : 控制網路或通道的訪問權限,以防止竊聽。. 2. 區塊鏈服務(Blockchain and Transactions) : 24 DOI:10.6814/NCCU202100164.
(35) 基於 P2P 的通信網路,提供了共識機制管理、分散式帳本管理以及儲存,各 節點之間的通信實現以及 Channel 機制。Fabric 將共識演算法(PBFT, Kafka, Solo)模組化,並以可插式供開發者使用。 區塊鏈服務內含兩種服務: •. Blockchain : 區塊之間以雜湊連結而成的交易日誌即為區塊鏈。. •. Transaction :交易對 Chaincode 有兩種操作類型:. 部署交易:在節點上啟動 Chaincode 容器,並將新的 Chaincode 部署到容器內。 調用交易:在已部署 Chaincode 的情況下,調用 Chaincode 中所提供的函數,可 以透過特定函數對帳本中的數據進行修改或讀取操作,並返回操作結果。. 政 治 大. 3. 智能合約服務(Chaincode Service) :. 立. 提供 Chaincode 的部署以及運行時所需要的環境。Chaincode 即為 Fabric 中的. ‧ 國. 學. 智能合約,用戶可以透過調用 Chaincode 對帳本中的數據進行修改或讀取。 Fabric 網路架構:. ‧. •. n. er. io. sit. y. Nat. al. Ch. engchi. i Un. v. 圖 2-15 Hyperledger Fabric 成員結構 (來源:Update on Hyperledger Fabric & IBM Blockchain Platform, IBM Day 2018) 25 DOI:10.6814/NCCU202100164.
(36) App:客戶端,交易請求的發起者,向 Peer 節點提交交易提案(proposal),或向 Orderer 節點提出 channel 創建的請求。 Peer:網路主要由 Peer 節點組成,負責保存區塊鏈帳本(ledger)以及智能合約 (Chaincode)。一個 Peer 可以存放多個 ledger 及 Chaincode。在 Fabric 網絡環境中 Peer 可劃分為三大角色: o. Endorser:根據指定的背書策略,對交易結果進行背書,返回交易提案的 回應到客戶端。Fabric 的共識分為三步驟: 1. 應用端發送交易提案到 Endorser 執行模擬交易。 2. Endorser 執行完後,對該結果進行簽名背書。. 政 治 大. 3. 在 Endorser 運行 Chaincode,每個 Chaincode 安裝在區塊鏈時有其. 立. 專有的背書策略,即指定一個交易由哪些 Endorser 節點背書才會. ‧ 國. 學. 是有效交易。. Committer:驗證從 Orderer 接收的區塊之有效性,以及交易的有效性,驗. ‧. o. 證完成後,將數據保存至帳本中。. y. Nat. io. al. n. 進行通訊的節點。. sit. Anchor:負責跨組織通信。一個組織只有一個是組織內部用來與 Orderer. er. o. o. Ch. i Un. v. Leading Peer:作為組織內所有節點的代表,連接到 Orderer 排序服務節點,. engchi. 將從排序服務節點接收到的批量區塊廣播給組織內的其它節點。. Orderer:排序節點,將所接受到的交易根據時間點進行排序後,打包為區塊後廣 播給在同個 channel 的所有節點,確保 Peer 的帳本之一致性。 Channel:用以達到私密通訊以及交易的機制。加入 channel 的節點都需要維護同 一份帳本,只有加入該 channel 的節點才可存取該帳本,以此達到保護隱私的作 用。 CA:負責對網路中的成員身份進行管理,包括所有的證書,並且提供標準的 PKI 服務。 26 DOI:10.6814/NCCU202100164.
(37) MSP(Member Service Provider):為客戶端和 Peer 提供證書的系統抽象組件。 Org1:代表聯盟中的某一個組織(一個聯盟中可以由多個不同的組織組成)。 Ledger:由排序服務所構建的一個全有序的交易 Hash 鏈,保存在所有的 Peer 節 點中。帳本提供了在系統運行過程中發生的可驗證歷史,它包含有效交易的狀態 更改和無效交易的狀態更改。 •. 交易流程細節:. 立. 政 治 大. ‧. ‧ 國. 學 er. io. sit. y. Nat. al. n. iv 圖 2-16 Hyperledger Fabric 交易流程 n Ch U e n g& cIBM (來源:Update on Hyperledger Fabric Platform, IBM Day h iBlockchain 2018) 1. App 連接 Peer,並發起交易提案,即請求調用 Chaincode。 2. Peer 調用提案中所指定的 Chaincode,例如執行查詢或更新帳本數據 2.1 Peer 根據 Chaincode 執行提案。 2.2 生成該提案之回應。 3. 各 Peer 回傳提案回應給 App 後。如果該回應是查詢結果即完成此次交易, 如果是更新帳本數據就進行下一步。 4. 當 App 欲更新帳本數據時,必須先收集各 Peer 所回傳的提案回應,建立 一個 transaction 發給 Orderer 請求將該 transaction 加入排序。 27 DOI:10.6814/NCCU202100164.
(38) 4.1Orderer 收集整個網路內的 transaction 並打包成區塊,廣播給所有 Peer。 4.2 Peer 收到區塊後進行驗證,通過後把區塊加到帳本上,即帳本數據更 新完成。 5. 更新完帳本後 Peer 會產生一個 event 回傳給 App,通知其交易已經完成。. 2.3.2 Fabric CA (Fabric Certificate Authority) Fabric CA 為 Fabric 區塊鏈網路中註冊身份與發佈證書的角色,相當於為網路 中參與的節點註冊專屬的帳號與密碼。有別於傳統的帳號密碼系統,記錄在區塊. 政 治 大 起者的簽名證書,並且使用發起者的私鑰將交易進行加密。如果交易需要其他節 立 鏈網路中的數據具有不可竄改之特性,因此 Fabric 網路中每筆交易都會加上發. ‧ 國. 學. 點參與背書,每個背書節點也會在交易中加上自身的簽名證書,因此 Fabric 區塊 鏈網路中每筆交易的操作過程會達到透明且不可竄改。為了達成這樣的目的,. ‧. Fabric 設計了基於 PKI (Public Key Infrastructure,公鑰基礎建設)以及生成符合. sit. y. Nat. X.509 證書規範之證書,以滿足區塊鏈網路中的需求。Fabric CA 對網路內各個實. n. al. er. io. 體之身份證書的管理, 它提供的功能包括:. Ch. i Un. v. 1. 身份認證,或是從 LDAP(輕量目錄訪問協議) 中獲取註冊信息;. engchi. 2. 發行擔保證書 ECerts (Enrollment Certificates); 3. 發行交易證書 TCerts (Transaction Certificates),保障 Hyperledger Fabric 區域 鏈交易平台上的信息匿名性和不可追蹤性; 4. 證書更新和撤銷。 Fabric CA 本身由服務端與客戶端所組成,CA 服務端(fabric-ca-server)與 CA 客戶 端(fabric-ca-client),如圖 2-17 所示。有兩種方式可與 CA 服務端進行交互:透過 CA 客戶端或是 Fabric SDK,為了負載平衡,CA 客戶端並不直接與 Fabric-CA Root Server 進行交互,而是與由 Fabric-CA Intermediate Server 所組成的集群做 28 DOI:10.6814/NCCU202100164.
(39) 交互。實際上 CA 客戶端連接上的是 HA Proxy 代理節點,Server 中的數據庫用 來保存用戶與其證書之相關訊息,同時所有 CA 服務端都共享同一個數據庫。. 立. 政 治 大. ‧. ‧ 國. 學. sit. y. Nat. 圖 2-17 Hyperledger Fabric CA 與 Peer 節點交互架構. n. al. er. io. (來源:https://hyperledger-fabric-ca.readthedocs.io/en/release-1.4/usersguide.html#overview). Ch. engchi. i Un. v. 2.3.3 Fabric SDK Fabric 提供 gRPC API 和封裝 API 的 SDK,讓用戶可以透過 SDK 訪問 Fabric 區塊鏈網路中的多種資源,包括帳本數據存取、發起交易、安裝部署 Chaincode、 執行事件、權限管理等。目前 Fabric 為應用提供了三種語言版本的 SDK,分別 是 Nodejs、 Java、Go。 SDK API 的主要功能包括建立通道(channel)、將 Peer 節點加入通道與安裝 Chaincode、在通道中實例化 Chaincode、調用 Chaincode 發起交易以及查詢或修 改帳本數據。 29 DOI:10.6814/NCCU202100164.
(40) 政 治 大. 立圖 2-18 Fabric 網路架構. ‧ 國. 學. (參考來源:https://kknews.cc/code/l4za28g.html). ‧. fabric-sdk-go/pkg 是 fabric go sdk 的主要實作,go doc 介紹了底下不同目錄所提 供的功能,其網址為 https://godoc.org/github.com/hyperledger/fabric-sdk-go。底下. y. Nat. er. al. n. •. io. 如下:. sit. 有數個子 package,為 fabric 客戶端提供許多訪問 Fabric 網路之 API,主要 package. Ch. engchi. i Un. v. pkg/fabsdk:主要的 package,用來生成 fabsdk 以及 fabric go sdk 中其他 pkg 會 使用的 option context。. •. pkg/client/channel:主要對 Fabric 網路進行管理,例如創建通道、加入通道,安 裝、實例化和升級 Chaincode。. •. pkg/client/event : 配合 channel 模組進行 Chaincode 事件的註冊和執行。. •. pkg/client/ledger:實現 Fabric 帳本的查詢,主要查詢區塊、交易、配置等。. •. pkg/client/msp:管理 Fabric 網路中的成員關係。 客戶端使用 fabric go sdk 的主要步驟:. 30 DOI:10.6814/NCCU202100164.
Outline
相關文件
進行 18 以內的加法和減法口算 學生須透過口算解主要以圖像闡述的應用 題,並以橫式作記錄。.. 加法和減法的直式在學習單位 1N4
(A)憑證被廣播到所有廣域網路的路由器中(B)未採用 Frame Relay 將無法建立 WAN
進而能自行分析、設計與裝配各 種控制電路,並能應用本班已符 合機電整合術科技能檢定的實習 設備進行實務上的實習。本課程 可習得習得氣壓-機構連結控制
/ 22K
發放一筆過津貼給學校以推廣 STEM 教育。每所學校的津貼
倒傳遞神經網路的演算法使 SPOT 假色影像轉換到 SPOT 自然色影 像。影像的結果。(3)以不同天的 SPOT 假色影像進行網路回想,產 生
服務提供者透過 SOAP 訊息將網路服務註冊在 UDDI 中,服務需求者也可以透 過 SOAP 向服務仲介者查詢所需的 Web Service 並取得 Web Service 的 WSDL 文件,2.
為主要的積體電路單元元件,此元件同時利用電子與電洞兩種載子,來進行電流的傳