您的瀏覽器不支援JavaScript語法,但是並不影響您獲取本網站的內容。

技術探索

基於聯盟鏈之高頻交易系統

工業技術研究院 資訊與通訊研究所 陳界榕


聯盟鏈的出現讓企業聯盟的資訊共享更容易,
工研院已為大型零售業廠商建構一套聯盟鏈系統,希望在未來能看見聯盟鏈的各種應用。
 

企業之間為了提升獲利而組成同盟關係,資料共享是一種提升獲利的可能方法,各個企業的交易資料分享給聯盟企業,企業們便可利用這些資料進行數據分析,藉此能更有效的評估或規劃營運策略,或是提供聯盟間可共通支援的新服務。不過這些交易資料原本是各個企業的資產,由企業各自保管,若是分享數據時仍保持各企業各自保管數據的架構,儘管是同盟企業也不一定信任對方提供的數據是否保持完整,一旦發生資料不一致的糾紛也難以裁決。另一種可行的實踐方案便是請一位第三方的公正機構來維護這些資料,不過該方案又會花費太多資源,導致該方法論難以實踐。

自從區塊鏈(Blockchain)技術的構想被提出後,該技術提供了一個可合作共同維護的類分散式資料庫架構平台,讓企業新增了一項毋須請第三方機構來保管資料的方案並讓維運成本大幅降低。不過使用區塊鏈目前仍存在許多種種限制,其中原因有如記錄資料容量限制、處理紀錄資料的吞吐量等。工研院目前已與商業企業合作,嘗試建構一個區塊鏈系統能將企業下組織集團的交易資料記錄於區塊鏈中,並排除吞吐量限制等問題,可應用於一般商業的高頻交易。

 

精彩內容

1. 區塊鏈 確保資料的完整性
2.聯盟鏈 企業聯盟共同維護紀錄資料
3. 工研院於企業聯盟鏈與成果

區塊鏈 確保資料的完整性

區塊鏈的原理是藉由密碼學串接並保護內容的串連文字記錄,區塊(Block)則是被串接的文字記錄的分區。如圖1所示,每一個區塊包含了前一個區塊的加密雜湊、訊息等資料,這樣的設計若有區塊內容發生更動,會導致下一個區塊的前一區塊加密雜湊與更動區塊算出來的加密雜湊不一致,因此具有難以篡改的特性。典型的區塊鏈是由一群參與者(又稱節點,Node)集合,形成一個無中心的對等網路系統,參與者有能力收集記錄在區塊內的訊息、創建區塊、驗證區塊、收集歷史區塊等。

 


圖1 區塊鏈原理

 

區塊鏈根據參與者組成可分類成:公有鏈、私有鏈、聯盟鏈。知名的加密貨幣便是公有鏈,任何人都可以參與區塊鏈上產生區塊、發出區塊鏈交易等,因此可形成高度分散式的拓樸結構,不過由於參與者不受監管且匿名,為防止惡意行為者取得優勢,在共識機制上要採用較高安全性的策略,如:工作量證明機制(Proof of Work,PoW),不過採用該機制也犧牲了交易吞吐量。與公有鏈無准入限制對比,私有鏈對參與者增加了准入規則,規定誰可以檢視和創建區塊,因此私有鏈並非是去中心化系統,只能說是分散式,不過由於參與者基本上都是信任且可識別的人,在共識機制上可選擇效率較高的策略,如:股份授權證明機制(Delegated Proof of Stake,DPoS),應用情境上如單一公司企業對底下的組織集團建立區塊鏈系統。聯盟鏈則是介於公有鏈與私有鏈之間,結合兩者的特徵要素,聯盟鏈將少數同等權力的參與者視為驗證者,不像公有鏈那樣開放任何人都可產生區塊,也不像私有鏈只允許某一方下的人來產生區塊,共識機制上仍選擇效率較高的策略。

原本紀錄於區塊內的訊息主要是數位貨幣的交易紀錄或是純文字字串訊息,應用範圍較為狹隘,之後便對此做了一個延伸的應用,將紀錄字串的功能寫入一串程式腳本,就相當於每個參與者保留著相同的腳本邏輯,若有人欲呼叫腳本的某一函式,便會發起一筆請求給區塊鏈參與者,參與者則計算函式執行後的結果並紀錄於區塊內,由於每個參與者保留相同的函式邏輯,因此可以快速的檢驗結果是否相同,而這些程式腳本則被稱為智能合約(Smart Contract)。

目前常見用於私有鏈或聯盟鏈平台,由於常有客製應用邏輯的需求,需要對智能合約的支援性較為重要,以數位貨幣交易為主的比特幣(Bitcoin)平台並非首要考量,常見的可用系統有:以太坊(Ethereum)[1] 與超級帳本(Hyperledger Fabric)[2]。以太坊以比特幣為參考,仍有專屬的貨幣交易系統,另額外強化了對智能合約應用的部分,在區塊鏈的運作設定都是官方預定的,在佈署系統上會較為單純簡單,以太坊目前官方的共識機制仍是採用工作量證明機制,未來計畫會釋出非工作量證明機制的版本,另外也有用以太坊為基底開發聯盟鏈的項目:Quorum [3],Quorum在佈署時可選擇多種共識機制,如:IBFT、Raft等。超級帳本則完全拋棄數位貨幣應用的部分,完全強調智能合約、聯盟鏈方面的應用,由於在佈署區塊鏈時皆要指定運作設定,擁有較高的彈性去執行運作策略,但佈署系統的門檻會明顯較高。 

 

聯盟鏈 企業聯盟共同維護紀錄資料

由於聯盟鏈的目的主要是為了商業用途,在區塊鏈的保密性(Confidentiality)、吞吐量(Throughput)及終局性(Finality)方面有強烈的要求[4]。保密性是保證只有特定參與者才有權限讀取的性質。在有潛在競爭者參與的聯盟鏈中,企業必須和合作同伴之間啟用一條區塊鏈通道,而通道上的內容對於聯盟的其他成員都是不可見的。使用密碼學或零知識證明(zero-knowledge-proof)方法可以在參與節點之間保持機密性,然而大多數區塊鏈平台要實現此功能非常困難,僅有一些區塊鏈平台(如超級帳本)能提供該項功能。吞吐量是在區塊鏈中每單位時間能紀錄到區塊鏈上的多寡,比特幣每秒約可處理10筆內的交易,以太坊速限每秒約可處理約20筆,然而實際商業應用上,如Visa可處理每秒高達約數萬筆,然而比起傳統資料庫,區塊鏈有較多的節點需要同步,勢必會影響到效率的表現,聯盟鏈為了提供數量級更高的吞吐量,他們的共識被設計成不必對參與者給予挖礦激勵(Incentives),由於聯盟鏈上成員的身份都是已知的,激勵機制將不再具有意義。終局性在區塊鏈中是交易被提交到區塊鏈後不會被撤銷的難度,當企業產生一筆需紀錄在區塊鏈交易時,他們希望區塊鏈交易完成後要確信紀錄不能撤銷,原本區塊鏈的機制有機會產生孤兒塊(orphaned block),儘管孤兒塊是一個合法的區塊,但因為無法成為主流故包含的內容被視為撤銷,為了確保區塊鏈交易是位於主鏈上,除了確認區塊鏈交易被紀錄於區塊上,還須等待該區塊後持續生成若干區塊才能判定區塊鏈交易不位於孤兒塊內,這樣的判定方法往往會耗費較多的等待時間,因此大多數聯盟鏈採用基於投票的共識機制,當大多數節點投票認證區塊時,該區塊即可被視為最終確定。

除了交易吞吐量外,儲存空間也會是一個議題,由於區塊鏈的機制便是每個參與者皆要保留一份相同的資料來檢視和驗證資料,若將完整的紀錄存放在區塊鏈中,意味著每個參與者保留了所有參與者的完整交易紀錄,對空間資源的使用較沒有效率,一種可行解法為將完整交易紀錄存放在一個共有資料庫內,區塊鏈則改為紀錄交易資料的雜湊值,雖然資料存在共有資料庫有被竄改的風險,但一旦遭竄改,可透過區塊鏈的雜湊值驗證出該筆資料已被竄改,在裁決記錄糾紛上也有依據,而記錄雜湊值遠比紀錄完整交易紀錄所使用的空間還小,可以大大提升空間使用率。

綜合以上所述,數個聯盟企業組建起來的區塊鏈架構有如圖2所示,各公司有各自的商業服務,包含實體店面或電子商務,這些商業服務透過各自公司的內部伺服器接收顧客們的交易需求,交易紀錄除了記在各自的內部資料庫內,同時也對區塊鏈節點請求一份對應紀錄寫入公共資料庫內,並將顧客交易紀錄的雜湊值發送給節點並寫入區塊鏈內,一旦交易記錄的區塊成功被認證,合作企業便可信任地分享這一份交易紀錄。

 


圖2 聯盟鏈應用情境示意架構

 

工研院於企業聯盟鏈與成果

工研院與大型零售業廠商合作開發一套企業聯盟鏈系統,使用的區塊鏈環境是Quorum平台配合Raft共識機制,實際運作時可達每秒處理約470筆交易紀錄至區塊鏈上,該吞吐量足以應付目前企業日常所產生的交易紀錄量,若直接採用以太坊平台,吞吐量僅有每秒10~20筆,在尖峰時段將難以快速消化。如圖3所示,企業交易處理伺服器只需將交易資料記錄在資料庫即可,區塊鏈交易產生器會定期地向資料庫收集需記錄在區塊鏈上的資料,打包成區塊鏈交易送給區塊鏈節點等待區塊驗證完成,等區塊驗證完畢會回傳一個雜湊值或收據(receipt),雜湊值可用於檢視區塊鏈交易的處理狀態,收據可快速地定位該交易紀錄位於哪一個區塊、哪一筆紀錄,之後,將該雜湊值或收據紀錄至資料庫並標示本次已處理的交易紀錄,方便日後追查該筆交易紀錄。

 


圖3 資料庫與區塊鏈串接架構

 

 

結論

聯盟鏈的出現讓企業聯盟的資訊共享更容易,在台灣雖然還沒有廣泛或知名的應用,但聯盟鏈仍有潛力應用在各種領域上,例如:在醫療領域上,各醫院組成聯盟提供病例資料共享;在教育領域上,各學校組成聯盟提供學生學位資料共享。目前工研院已為大型零售業廠商建構一套聯盟鏈系統,在推廣區塊鏈應用上盡一點力,希望在未來能看見聯盟鏈的各種應用,讓企業服務變得更方便、更多樣。

 

參考文獻

[1] The Ethereum website. [Online]. Available: https://ethereum.org/en/
[2] The Hyperledger website. [Online]. Available: https://www.hyperledger.org/
[3] The Quorum website. [Online]. Available: https://consensys.net/quorum/
[4] Ennio Y. Lu. (2018) 企業該選擇哪種鏈? —— 公有鏈 vs. 私有鏈 vs. 聯盟鏈 [online]. Available: https://www.blocktempo.com/which-blockchain-analysis/