在這篇文章中,我們將回答以下問題:
- 企業以太坊(Enterprise Ethereum)區塊鏈解決了什麼問題?
- 企業以太坊聯盟(EEA)在做什麼?
- 企業以太坊有哪些規格?有哪些技術特點?
現今我們一般認知的區塊鏈技術,也就是公有鏈(Public Chain),首先起源於駭客圈,其強調的是去中心化的治理與無需許可的參與,以太坊便是箇中代表。儘管這些技術是完全開源的,企業若想直接應用這些成果,則會碰到一些問題:
- 公有鏈上的身份識別僅能透過公私鑰,是半匿名的,缺乏聯盟治理機制,企業若發生問題無法歸責
- 公有鏈的資料儲存在任意的外部節點,企業之間若涉及商業機密會缺乏隱私
- 公有鏈的交易手續費基於市場機制,企業難以預估成本
企業應用區塊鏈的首要考量就是「提升效率、降低成本」,當碰到上述這些問題時,企業便無法保證這一點。因此,專屬企業的區塊鏈:「聯盟鏈」應運而生。以太坊是目前匯聚最多開發者投入的公有鏈,因此它的企業化也標誌了一個里程碑。
延伸閱讀:企業該選擇哪種鏈? —— 公有鏈 vs. 私有鏈 vs. 聯盟鏈
延伸閱讀:數位人民幣|星巴克 麥當勞等19家企業加盟 DCEP 試驗,雄安新區主攻餐飲零售
企業以太坊聯盟(EEA)在做什麼?
顧名思義,企業以太坊聯盟(EEA)是在企業界推動區塊鏈的一個「聯盟」,它成立於 2017,是一個由成員主導的行業組織(Industry Organization),其目標是推動以太坊於企業間的開放標準,以促進所有企業在同一套標準體系下運用該技術。
具體來說,EEA 在做的事情有:
- 提供開放並基於標準的架構與規格文件
- 創建企業以太坊客戶端規範以及測試和認證計劃
EEA 的成員包含知名企業如 Microsoft/Intel/Fedex、區塊鏈新創如 Consensys/Chainlink、金融業如 J.P. Morgan Chase,還有其他數十個來自不同產業的企業,這裡就不一一列舉。
在閱讀這篇文章之前,你可能還沒聽過 EEA ,但是知道其他兩個聯盟:
- Linux 基金會底下的 Hyperledger
- 由 R3 這間公司建構的 R3 生態系
這些聯盟之間並非只存在競爭關係,它們彼此也會互相合作,例如:Hyperledger 本身是 EEA 成員之一,而 EEA 和 R3 也都加入了 Hyperledger 。
延伸閱讀:武漢肺炎|世衛組織 (WHO) 攜手 IBM 微軟, 打造開源區塊鏈數據平台追蹤全球病例
延伸閱讀:新冠病毒陰謀論?前奧斯卡導演指控:微軟的挖礦專利透露「撒旦訊息」
企業以太坊:它跟以太坊哪裡不一樣?
EEA 為企業以太坊提供了標準化的規格,依照規格實作的客戶端(Client)即為企業以太坊(Enterprise Ethreum, EE)。這些客戶端可以由不同團隊開發,簡單來說就是「一個標準,各自實作」,這一點與以太坊也是如出一轍,例如以太坊 2.0 就有多達 7 種不同的客戶端!
這裡列出兩個比較知名的 EE:
BSOS 同時也是 Quorum 在台灣唯一的技術大使
企業以太坊的技術架構
那麼 EE 跟以太坊到底哪裡不一樣呢? EEA 把區塊鏈整個架構略分為 5 個抽象層(Layer),我們就來看看 EEA 在每個層次分別多做了哪些事情:
- 應用層(Application):應用層是整個區塊鏈架構的最頂層,也是一般使用者與區塊鏈互動的介面(Interface),例如各種錢包(Wallet)、區塊鏈瀏覽器(Blockchain Explorer)、以及如 ERC20 / ERC721 等等代幣標準。
- 工具層(Tooling):工具層是開發工具的組合,開發者可以基於工具層搭建去中心化應用程式(DApp),EE 沿用了大部分以太坊現有的開發工具,能帶給開發者良好的開發體驗。例如:私鑰管理、部署整合程式庫與 JSON-RPC。
- 企業 PPP 層(Privacy/Permission/Performance):企業 PPP 層定義了隱私(Privacy)、權限(Permission)以及效能(Performance)這三個目前公鏈普遍缺乏的要素。EE 的主要功能便是針對企業 PPP 層進行擴充,這些規格也是 EE 的價值之所在,詳細規格筆者將於下文詳述。
- 核心層(Core Blockchain):核心層大致上涵蓋了廣義的「區塊鏈」技術,例如智能合約、資料儲存與共識等等。核心層也是以太坊 2.0 主要改進的對象。EE 沿用了以太坊的資料儲存與智能合約引擎,並且需實作 Clique — 一種權威證明(Proof of Authority)的共識機制。除了 Clique,各家客戶端也可以實作共識機制,以因應實務上對於安全和效率不同的要求,例如 IBFT / RAFT,筆者會在下文詳細說明 Clique 的原理與細節。
- 網路層(Network):網路層對應了區塊鏈的底層網路,EE 也承接了以太坊的網路協定,例如 devp2p。整個區塊鏈其實是覆蓋於 TCP/IP 協定之上的對等網路,如果想知道關於區塊鏈網路層的詳細說明可以參考這篇文章。
企業以太坊的軟體架構
在軟體架構方面,EE 可以視為以太坊的「擴充」,它於既有以太坊客戶端之上增添了以下兩個組件:
- 企業以太坊擴充(Enterprise Ethereum Extension):實作企業所需的聯盟治理與其他模組。
- 私密交易管理者(Private Transaction Manager):實作企業所需的數據交換隱私。
接下來我們就深入看看 EEA 對於企業 PPP 層中的權限(Permission)與隱私(Privacy)的具體規格,以及核心層中 Clique 的運作機制。
企業以太坊的規格
權限(Permission)
權限簡單來說指的是兩件事:「誰可以跟我連線」以及「誰可以發出交易」。具體來說,EEA 支援以下不同層級的權限控管。
例如,在網路(Network)層級,節點可以:
- 啟動時只跟某些節點連線
- 開啟/關閉節點探索(Node Discovery)
- 設定連線的白名單(Whitelist)
而在帳號(Account)層級,每個帳號可以:
- 創建組織(Organization)與次組織(Sub-organization),並支援巢狀組織
- 依照不同的角色(Role)給予不同權限
為了提供開發者最大的彈性及最好的開發體驗,EE 的設計哲學是:使用智能合約實現權限控管,這些合約也稱為權限合約(Permissioning Contract),並且在權限合約中可以使用基於角色的存取控制(Role-based Access Control, RBAC)。
EEA 制定了利用智能合約實作網路層與鏈層權限管理的介面(Interface),例如:權限合約必須實作 connectionAllowed 方法以支援網路層的權限控管,以及實作 transactionAllowed 方法以支援鏈層的權限控管。
相關作法可見於 Quorum 的實作,這裡列出的數個合約共同協作實現了權限控管。
隱私(Privacy)
隱私就是「我知道你是誰,但是我不知道你在做什麼」。隱私可以略分為鏈上與鏈下:
- 鏈上(On-chain):透過零知識證明(Zero-knowledge Proof, ZKP)保護交易資料與區塊資料。
- 鏈下(Off-chain): 讓私密交易的各方組成另一個覆蓋網路傳送資料或者使用可信計算(Trusted Computing)。
雖然隱私性是區塊鏈的其中一個大難題,但近期以太坊社群中也有愈來愈多支援隱私的提案出現,例如 Tornado Cash 與 Semaphore。
EEA 規範了兩種私密交易:
- 受限的私密交易(Restricted Private Transaction):只有交易各方才能傳送/解密交易密文。
- 不受限的私密交易(Unrestricted Private Transaction):所有節點都能傳送交易密文,但只有交易各方能解密交易密文。
EEA 雖然沒有明確規範這一塊的實作方式,但交易各方另組覆蓋網路是比較常見的做法,例如:Alice 跟 Bob 可以在另一個網路中進行 Charlie 無法解密的私密交易,這裡「另一個網路」的意思就是「不透過區塊鏈網路傳送資料」,也就是符合「鏈下」的定義。
類似作法可見於 Quorum 的實作:在發出交易時,A 發起的交易 T1 會經由 A 節點的 TxMgr 加密,這個交易密文會透過「另一個網路」傳送給 B 節點的 TxMgr,而交易雜湊值(Transaction Hash) T1_hash 則會透過區塊鏈網路廣播出去。所有節點在收到 T1_hash 後會檢查這個交易是否為私密交易,以及這個交易自己是否能解開,而只有 A/B 才能解開交易密文。
延伸閱讀:微軟 安永 Intel IBM JPMorgan共組的權威機構,發佈了全球通用的「代幣標準」(TTI)
延伸閱讀:「不只是JPM Coin」——摩根大通的 Quorum 區塊鏈悄悄升級,想在不同領域的未來鋪路?
企業以太坊的共識機制(Consensus)
區塊鏈的共識機制可以略分成兩種:可以是「從樂透機裡面抽號碼球」或者「投票表決」。主流公有鏈採取的工作證明(Proof of Work, PoW)就好比是「從樂透機裡面抽號碼球」,是一個完全奠基於機率的賽局。但正是如此簡單暴力的解決方案造就了加密貨幣數千億美元的市值!如果想了解更多關於共識機制運作原理的話可以參考這裡。
然而,工作證明只能在算力接近上限的條件下保有「安全性」(Safety)與「活躍性」(Liveness)。在算力不足的場景,例如公有鏈的測試網(Testnet),很容易淪為駭客攻擊的目標。為了解決這個問題,以太坊核心團隊提出了「權威證明」(Proof of Authority, PoA)以作為測試網的共識機制,這個實作也被稱為 Clique,是 EE 必須內建的共識機制。
Clique 可視為「有限個出塊節點的中本共識」(Nakamoto Consensus),它最大的特色是:在不修改現有的資料格式之下,重新利用(Re-purpose)區塊標頭(Block Header)的各個欄位。
Clique 的運作方式如下:首先,各節點需維護一份權威清單(Authorization List),這份清單內載明了 N 個具有出塊權力的「簽名節點」(Singer),且各簽名節點需「輪替」出塊,並且都有一個最適合出塊的高度。如果簽名節點出塊的高度正好吻合它最適合的高度,那這個區塊就會具有較高的難度值;反之難度值則較低 — 也就是說,這裡的「難度」不像工作證明是透過算力決定的,而是透過在「權威」清單裡的順序決定,因此可以大幅提升共識形成的效率。
同時,為了不讓所有簽名節點每個高度都「同時出塊」使網路壅塞,出塊後的節點只能在經過 N/2+1 個區塊後才能再度出塊。
接下來各節點收到區塊時,會做三件事:
- 驗證區塊標頭
- 檢查簽名節點是否在權威清單中
- 比較難度值,選擇難度值最大的區塊
另一個 Clique 的特色是:簽名節點可以透過「投票」更新權威清單:
- 出塊時可以「投一票」給一個新節點
- 各簽名節點收到區塊時計算票數,超過 N/2 票的新節點則可加入權威清單中,成為新的簽名節點
在正確性分析方面,由於 Clique 的本質還是中本共識,因此它沒有即時敲定性(Instant Finality),還是有一定機率發生分岔(Fork);並且由於簽名節點只能每 N/2+1 個區塊出一次塊,若有 N/2 個簽名節點離線,或者惡意不出塊,則其他簽名節點也無法出塊,整個區塊鏈會陷入停擺的狀況。
Clique 所具有的「輪替」以及「投票」的特性,很符合企業應用的場景,也使得它適合作為企業以太坊的共識機制。由於 Clique 是以太坊原生就有的實作,因此所有 EE 可以直接使用 Clique。值得一提的是:除了 Clique 之外,大部分 EE 都還會支援其他共識機制,例如 IBFT / RAFT 等等。IBFT 可以視為結合 PBFT 與 Clique 的共識機制:各節點透過類似 Clique 的投票機制維護驗證節點(Validator)清單,而這些驗證節點則輪流出塊並使用 PBFT 達成共識與出塊節點的輪替。關於 PBFT 詳細說明可以參考這篇文章。
企業以太坊 vs Hyperledger Fabric
EE 與 Hyperledger Fabric 這兩者經常被開發者或媒體拿來比較,他們在許多方面都有或大或小的差異,例如:它們有不同的智能合約管理模式、不同的分散式計算模型,並支援不同的橢圓曲線(ECC)。更詳細的技術比較就留待日後詳述,不過這邊筆者想舉出一個他們在設計哲學上的差異:Hyperledger Fabric 使用憑證機構(Certificate Authority, CA)管理身份,並設計了一個稱為「會員服務提供者」(Membership Service Provider, MSP)的組件搭配 CA 控管權限,整體來說比較中心化;EE 則沿襲區塊鏈原生的公私鑰對,具有整合去中心化身份(DID)的發展潛力,並可利用智能合約實現權限控管,比較貼近原生區塊鏈「去中心化」的設計。
除了設計哲學的差異,另一個筆者認為的較大差別是:EEA 奠基於目前世界最活躍的區塊鏈開發者社群:以太坊社群。目前已有超過 1000 個開發者貢獻在各項 EE 專案之上!在這個軟體都是開源的時代,複製程式碼也只是彈指間的事,但唯有「人」才有賦予技術長期發展的能量。
結語
所以企業以太坊到底解決了什麼問題呢?
- 企業以太坊具有聯盟治理機制,企業間及組織內可以有清楚的權責定義
- 企業以太坊具有隱私機制,企業之間的商業機密可以獲得確保
- 企業以太坊可以選擇更高效的共識機制,使企業可以在安全、效率及去中心化的比重上獲得最佳化
儘管 EE 解決了企業對於權限與隱私的問題,企業在真正導入區塊鏈時其實還有一些挑戰,例如:
- 聯盟鏈系統的開發技術門檻仍然很高
- 聯盟鏈如何與關聯式資料庫(RDB)、檔案伺服器(File Server)等企業現有的 IT 服務進行高效協作
- 全球區塊鏈技術人才稀缺
- 各種企業 IT 環境的區塊鏈部署問題
這些問題要怎麼解決呢?這也正是 BSOS 一直在努力的方向。筆者將於接下來的一系列文章中說明 BSOS 究竟提供了什麼解決方案,敬請拭目以待。
參考資料
- Enterprise Blockchain Protocols: A Technical Analysis of Ethereum vs Fabric vs Corda
- Consensus Algorithms: PoA, IBFT or Raft?
- 5 Reasons Why Enterprise Ethereum Is so Much More Than a Distributed Ledger Technology
- Clique: cross-client Proof-of-authority algorithm for Ethereum
- Clique共識算法
- Istanbul BFT
?相關報導?
Vitalik 聊以太坊 2.0:即將過時的以太坊礦機可用於「零知識證明」
產業特輯 VIII「以太坊重大進展與台北以太坊社群」— 台北以太坊社群.邱駿
新手教學|ELI5!區塊鏈到底在幹嘛〈上〉用生活化的例子輕鬆學會區塊鏈技術的重要概念
高調炫富到發文求助!一比特幣富豪 SIM 卡被駭,「13.7億」的 BTC BCH 遭竊引市場恐慌
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務