區塊鏈商務應用深度解析(上):R3緣起與Corda基本架構




  區塊鏈(blockchain)技術近年來受到各界的廣泛注目,應用領域從日常支付、金融交易、醫療衛生、到競賽體育等,近乎無所不包,且各領域的領導品牌也多全力投入,與同業成立聯盟,共同實驗區塊鏈應用的可能性。
由全球70餘家代表性銀行組成的R3 CEV聯盟,是實驗區塊鏈概念在金融業應用的領導者,旗下的Corda專案在稍早更已發布了首個商業化版本、並登錄全球最大的網業服務平台-AWS,標誌著該聯盟創造改變的第一步。以下,筆者將帶大家認識R3 CEV這個全球指標性的金融區塊鏈聯盟,並介紹其發展的產品Corda,暨該組織所面臨的困難與展望。



緒論: R3 聯盟緣起、Corda的誕生
打從區塊鏈的早期應用-比特幣出現開始,該技術在金融產業的應用便已受市場矚目。原因無他,只因這個產業中存在著太多顯而易見的痛點,又洽與區塊鏈的特質相應:分布式帳本可大幅減輕多重中介造成的不效率與高交易成本、降低金融交易的參與門檻、減少特定機構壟斷力,而加密傳輸特性與高交易透明度又能與現存監理規範相容。鑒於應用商機的龐大與潛在的去中介威脅,包含摩根大通、巴克萊銀行、花旗銀行等代表性機構在內的70逾家國際級金融業者,共同籌組了R3聯盟,希望利用本身對金融業務的熟稔,掌握先機並自我蛻變。做為該聯盟成員共同付出的心血結晶,一套程式碼開源的分布式帳本平台:Corda201710月正式上線、並在12月初登陸亞馬遜網業服務平台(Amazon Web Service),朝商業化應用前進。

Corda簡介:特化的分布式帳本平台
首先要釐清的是,Corda不是基於區塊鏈技術的產物,但兩者仍有著共同的根源-分布式帳本技術(distributed ledger)。之所以不直接採用區塊鏈技術,乃鑒於其許多應用面上的限制,包含:
1.  工作量證明機制:以算力浪費換取安全性
目前市值前十大的(類)區塊鏈技術數位貨幣中,有八種採用了工作量證明(proof of work, POW)機制。這是因為在區塊鏈的P2P架構下,節點間彼此缺乏互信基礎、且無法排除惡意節點的加入,故需要強迫節點間進行算力競爭,防止惡意者利用旗下的殭屍節點群輕易取得網絡控制權(亦即Sybil攻擊)。然而,這種制度使驗證交易所需的電力與功耗驚人,若沒有「挖礦」設計,由網絡產出新幣給礦工,則恐全數轉嫁至使用者身上,反而增加交易成本。
2.  交易廣播設計:變向曝露客戶隱私與機構策略
廣播(Broadcast),指一個節點向網絡中的全部或部分其他節點發布交易,以驗證其有效性、形成全網共識。在開放給所有人參與的公有鏈架構下,這個設計頗合理,也確保了網絡的透明性,並方便正直用戶稽查惡意節點。然而,當應用到金融業、由機構擔任節點時,交易廣播意味著侵犯客戶隱私、並將自身策略曝露給對手知道,故金融機構不得不慎。
3.  匿名性問題:易為不法交易所利用
一如筆者曾探討過比特幣的匿名性機制,大部分基於區塊鏈技術的數位貨幣也都有此設計。匿名性,是數位貨幣吸引力來源之一,讓用戶得以真正脫離國家主權的掌控,自在的進行交易。然而,在金融體系中,匿名性帶來的問題遠超過優點,因為無法有效控管用戶身分意味著這個系統可以被用於輸送不法金流、間接促進犯罪,且當客戶財產遭盜竊時,機構與司法機關也難以追查其流向。
4.  可擴展性限制:無法符合真實商務交易需要
無論架構設計再完備、衍生數位貨幣的市值再高,所有區塊鏈應用都面臨著可擴展性(scalability)的問題:隨著網絡規模持續成長,原有的交易成本、效率、安全性能否持續保持?系統承受得了真實世界的交易頻率與複雜性嗎?金融機構採用區塊鏈技術時,需要的不只是理論上的辯證,還要在商務交易的最高標準下有實務可行性。
5.  安全性問題:駭客攻擊的隱憂
匿名的惡意攻擊,是所有數位貨幣的共同隱憂。乙太幣、比特幣等指標性幣種近幾年來接連遭受攻擊、損失金額動輒在千萬美金以上,使數位貨幣的安全性備受質疑。在受到高度監管的金融產業中,任何規模的財產盜竊事件都無法被容忍-因為這關係著客戶對金融機構的信任、及機構的品牌商譽。

接著,讓我們來簡單了解一下Corda下的基本交易架構、系統中的參與者與他們扮演的角色。
一、新節點加入審核:門衛(Doorman)
鑒於前述的傳統區塊鏈架構安全性疑慮,Corda就新節點的加入採用了認可制、套用目前通型於金融業的客戶識別(KYC, Know-Your-Customer)要求,使每個節點的身分能經過驗證、防堵潛在的惡意節點加入。新節點在提出加入網絡的要求時,必須同時向該網絡的門衛(Doorman)提交必要的身分認證資訊供其認證。認證通過後,門衛可簽署發行專屬該節點的身分憑證,供同網絡內其他節點間交易及識別使用。
此外,為了兼顧交易私密性需求,身分憑證有公開及私密兩種,前者可視為節點的公開基本資料與聯絡資訊,由記載同網絡所有節點通聯與身分資料的網絡地圖(Network Map)所收錄、廣播給同網所有節點;後者涉及較私密的個資,只在交易進行時,分享給相關節點知悉。
二、交易進行與資訊溝通:流程(Flow)
Corda
採用了一種名為流程(Flow)的技術,來將節點間的交易與溝通過程自動化。一個流程中包含了從交易發起到清算完結的所有必要交易與溝通過程,並有已模組化的子流程(subflow)來方便使用者程式化該等過程;一個節點可以同時保有多個運行中的流程,同步處理多筆交易。在流程與子流程的運行過程中,嵌於其內的進度追蹤程式碼(progress tracker)可以持續更新當前動態,方便節點了解目前的進度。若運行過程到一半時須要等待額外資訊(如:發起方管理階層的核准、交易相對方的簽署),流程也可以被暫停、等待必要資訊到齊後再從上次的紀錄點(checkpoint)繼續進行。萬一流程出現重大瑕疵、或必須由人工作業輔助進行,其在被暫停之餘也會被特別回報給所屬節點,由節點決定是否要將整筆流程作廢刪除、或在排除瑕疵後再與重啟。最後,當交易相對方收到其他節點發起的交易時,也可以通過交易驗證流程(ResolveTransaction flow)來自動化驗證交易有效性、與其他交易相依性的過程。


三、交易發起:向其他節點提議改變某項資產的狀態(State)
現金、債券、股票、基金受益憑證、乃至於衍生性商品,都可以在Corda架構下以狀態(State)形式做數位化交易。一項資產的狀態中,包含了資產的基本資料(如:債券之發行者、面額、利率、到期日、付息頻率等)、交易參與者清單、所參照的智慧合約及見證者(Notary)代碼等資訊。Corda上的各種交易(Transaction),即以改變某些資產狀態為目的,經各方參與者同意後,將交易結果記入共識帳本而完成。其中,在交易前的資產狀態稱為輸入狀態(input state)、變更後結果為輸出狀態(output state)。若依照所涉及輸入/輸出狀態的不同,交易又可分為:
1.  發行交易(Issue)
發行某種數位資產,如:公司發行股票與債券、銀行發行存款(現金)憑證。此種交易沒有輸入狀態,是數位資產的創始交易。
2.  變更交易(Update)
改變某種數位資產的某些參數,如:買賣交易,旨在改變現金及標的資產等兩種數位資產的產權;見證者變動,旨在改變某項數位資產相關交易的見證者。這種交易同時具有輸入與輸出狀態。
3.  消滅交易(Termination)
使某種數位資產消滅,如:債券贖回交易,旨在將原先發行的債券消滅。這類沒有輸出狀態。
Corda架構下的交易只會對有需要知道(need-to-know)的節點,如:交易當事人、其他需要做簽署者、及監理機關等進行廣播,以保障交易的私密性。

四、用戶數位錢包:金庫(Vault)
如同所有基於區塊鏈技術的數位貨幣一般,Corda也有專屬的錢包(Wallet)設計-金庫。金庫中保存著所有與用戶相關的數位資產狀態(State)、用於簽署的私鑰(Private Key),並能被用於發起付款、收款等簡單交易。由於Corda架構下除發行外的數位資產交易皆必須有輸入狀態(Input State)、且每個輸入狀態只能被使用一次,為了讓錢包內的財產能被同時應用於各種金額不等的交易,金庫有著名為選幣(Coin Selection)的功能,使原始財產狀態可被分割成許多個金額較小的狀態、或將複數同類資產狀態結合,以因應不同交易需求。
五、交易內容檢查:智慧合約(Smart Contract)
數位資產的狀態(State)中,可以包含欲引用的智慧合約參照碼,讓智慧合約自動檢查交易的輸入、輸出狀態、簽署等內容是否合理而有效。由於智慧合約具有開源性、可模組化,不論引用它的是哪筆交易的哪個狀態、於何時被執行,其皆可以提供一致性的驗證結果,讓交易參與者免於對每項數位資產狀態做瑣碎的檢查。每種資產均有專屬的智慧合約,並分別與適用的法律文本(Legal Prose)連結,以方便進行交易內容驗證。必須注意的是,Corda架構下的智慧合約無法檢查未包含在交易中的資訊,如:交易雙方約定的交易價格、交易單位數等,故節點可能仍須交換一些補充資訊、並添加額外的驗證機制。
六、附加補充資訊:附件(Attachment)與指令(Command)
除了作為主軸的數位資產狀態外,交易(Transaction)及狀態(State)本身還可以包含許多補充資訊,如:交易的商務意義、適用的法令條文等。在交易層級,這些補充資訊可被附在名為附件(Attachment)ZIP格式附檔中,如同傳統電子郵件附件般被傳輸;在數位資產狀態層級,則可以藉由添加指令(Command),來提示與此狀態相關的交易目的、與必須就本狀態進行簽署者,方便智慧合約查驗簽署是否與之相符。
七、部分交易資訊加密:剝離技術(Tear-offs)
私密性的欠乏,是傳統區塊鏈架構常見的問題-為了確保交易流程透明性、有效發揮算力驗證(Proof of Work)機制對網絡安全的維護效果,一個節點發起交易時必須向其它節點進行廣播(broadcast),同時洩漏了部分的交易內容乃至於用戶個資。
有鑒於金融業對客戶隱私的重視,Corda採用了基於莫克勒雜湊樹(Merkle Tree)原理的剝離(Tear-off)技術,讓節點可以在進行廣播時,隱藏某些敏感資訊而仍能讓交易順利被簽署、認證。舉例來說,在請求第三方服務者(如下述之神諭 (Oracle))驗證某些交易資訊時,除了需要被驗證的訊息欄位外的所有資訊(如:輸入及輸出狀態)都可以被以雜湊(hash)後結果呈現,而第三方服務者僅需就整筆交易的雜湊值進行驗證與簽署、毋須得知私密性資訊內容。


八、補充資訊提供與認證:神諭 (Oracle)
為了減輕企業輸入交易資訊的負擔、並確保交易雙方就數據的認知一致,Corda架設了名為神諭 (Oracle)的節點。
作為公正的第三方資訊提供者,神諭節點可以直接提供某些公認的數據,供交易參與者引用,從而減少其需自行輸入的資料量。若交易參與者有自行輸入之帳本外數據,也可請神諭節點對其進行簽署,使該數據成為公認的事實,為交易對手省去驗證的時間、並減少舞弊的可能。節點可以在交易的附檔(Attachment)或相關數位資產狀態的指令(Command)中引用來自神諭節點的資料,並在請求神諭節點簽署某些交易資訊時,利用剝離(Tear-offs)技術對交易的其他部份資訊進行加密,以確保私密性。
九、重覆花費攻擊防範與終局認證:見證者(Notary)
重覆花費(double-spending),是所有分散式帳本應用都必須面對的潛在威脅,Corda自然也不例外,從而有了見證者節點(Notary)的設計。見證者的主要功能為檢查交易的所有輸入狀態(一路溯源至數位資產發行交易為止),確保其並未被其他交易重覆使用(consumed)。實務上,見證者會維護一份名為輸入狀態圖集(Input State Map)的資料庫,其中收錄著所有已被使用過的輸入狀態;若待驗證交易的輸入狀態都還未被收錄進圖集中,即表示相關資產還未被花費過,故交易有效。一般而言,輸入狀態認證會是交易的最後一道關卡,由交易發起者在所有參與者皆達成共識、進行簽署後,請求見證者進行。一旦見證者完成簽署,這筆交易便被視為終局確定、可以被收錄進共識帳本中。
除了驗證輸入狀態這個基本功能外,見證者還可以充當公正第三方,對交易整體進行認證。若節點不希望對見證者揭露某些私密資訊,同樣可利用剝離(Tear-offs)技術對該部分資訊作加密。
最後,對於某些帶有時間限制的交易,見證者也可以在驗證整體交易時一併檢查當下時間是否落在限制範圍內,並在交易中的時間戳(Timestamp)欄位進行簽署。

  經由以上介紹,我們可以經由歸納得知Corda架構相較傳統區塊鏈架構具有以下優點:
一、減少無謂算力消耗:算力可被有效應用、但仍有交易成本
Corda
捨棄了傳統區塊鏈常用的算力證明(PoW)機制,而以兩層次的網絡共識(consensus)取代:
在有效性(validity)層次,由交易當事人及第三方公證人(神諭(Oracle))通過簽署來表彰其承諾、並由各項數位資產狀態(State)所引用的智慧合約(Smart Contract)進行確認,確保本筆交易中所有資產的狀態皆來自過往的有效交易(一路追溯至發行交易為止)、也可防止不法取得的資金或財產藉由一般交易洗白;
在獨特性(uniqueness)層次,由公證人(Notary)負責確認交易中所有輸入狀態(Input State)有無被重覆使用,以防範重覆花費行為。

C2現金狀態所參照的智慧合約,將一路溯源檢查所有相關交易(直到發行交易為止)是否有有效簽署;若某債券發行人想以C2數位現金贖回債券,且該現金來源為公司SEO,則智慧合約會檢查發行人付款之簽署、股東認股繳款的簽署、及銀行發行數位現金之簽署

見證者會檢查交易中的每個輸入狀態是否已被使用過;假設擁有數位現金C1的某人想同時用C1繳付認購公司(I)及公司(II)股票之股款,C1只能被兩筆交易中其中一筆所使用

作為重要的第三方驗證者,公證人與神諭節點在每個網絡中都有複數個,負責提供驗證算力、並依照所提供的服務內容收費。
最後,為了確保服務提供者的參與意願、防止神諭簽署認定之「事實」被其它節點免費引用,神諭只會針對「(經剝離後的)交易整體」、而非「待驗證的特定事項」進行簽署。公證人認證則為大部分交易所必須,惟在數位資產發行交易、或常態性簡單交易中,可能由參與節點作自行公證(Self-Notary)
二、交易私密性保障:身份隱藏、廣播對象限制、交易內容剝離
本架構下對交易隱私的保障體現在三方面:
首先,節點本身的身分受到保障,可在加入時僅提供基本聯絡與識別資訊給同網絡的其它節點知悉、而較敏感的身分資訊可以僅向交易對手與監理單位揭露,以兼顧交易安全維護;
其次,傳統區塊鏈的交易廣播(Broadcast)設計,被調整成僅向與交易有關的節點(包含第三方中立節點:終局驗證者-見證人(Notary)及資訊正確性的公證者-神諭(Oracle))進行,防止有心人窺測;
最後,剝離(Tear-off)技術的引入,讓被廣播的交易資訊也可依對象調整揭露的程度,確保交易細節只會傳達給有必要知道(need-to-know)的節點。
三、網絡安全性:網絡准入管制、公證人節點驗證
就針對區塊鏈應用的常見攻擊態樣,Corda分別採取了以下防護措施:
1.  匿名惡意節點(anonymous malicious node)
區塊鏈的根本精神之一-去中介化,在許多應用中也帶有「公眾參與」的意含,使個人用戶也能擔負起維護網絡安全、促進社群發展的職責,但也同時使有心人容易潛入其中,構成安全性的隱憂。有鑑於此,Corda採用了門衛(Doorman)的設計,對新加入的節點進行身分認證、並可能與政府機構的身分識別資料庫進行整合,以防範惡意節點的滲透。此外,節點間的連結也被分入多個分立的網絡(Network),每個網絡各設有獨立門衛進行把關,以降低惡意行為的影響程度。
2.  重覆花費攻擊(double-spending)
要達到重覆花費,代表須有多筆交易同時使用一個數位資產狀態為其輸入狀態(input state)。在見證人(Notary)機制下,在交易雙方達成合意、取得必要簽署後,須由見證人作輸入狀態是否已被使用過(consumed)的確認,從而偵查有無重赴花費行為。由於見證人簽署是交易終局確定的必要條件,重覆花費交易將無法獲得承認、不會被收錄進共識帳本中。
(
另,由於用戶金庫(Vault)在選幣(Coin Selection)過程中也可能因同步交易而構成重覆花費問題,Corda也就數位資產狀態加上了軟鎖(Soft Lock)的設計,使金庫內儲存的狀態一但被使用即暫時鎖定以做防堵)
3.  服務阻斷攻擊(DOS, Denial of Service)
惡意節點可能利用Corda架構下的見證人制度,發起無意義的交易、大量使用網絡中現存的數位資產狀態,以達到癱瘓網絡的目的。見證人節點的交易認證功能,是一種可能的因應手段。雖然目前設計令節點可以選擇只令見證人驗證交易有無重覆花費問題,向強迫揭露額外的交易資訊,卻有助於見證人進一步就交易的「實質意義」進行研判,從而拒絕為惡意交易進行簽署。
四、高度相容性:容許自訂驗證規則、整合既有系統
考量到企業用戶本身多有慣用的系統與作業模式,Corda架構具備良好的兼容性,能讓用戶自行定義包含交易驗證規則、資訊揭露程度、適格交易對手等核心元素在內的交易規則,並能與產業界常用的資訊處理系統對接降低用戶採納分布式帳本的門檻。

小結:Corda是一套針對企業客戶、為商務需求特化的分布式帳本平台
  Corda,是分布式帳本技術在商務領域實際應用的一種嘗試,旨在建立一種新的交易常規,改善現有的交易流程。由於Corda的開發團隊成員多為政、商界巨擘,其制度設計上具有濃厚的企業向色彩、故不如目前市場上許多區塊鏈應用般直接發行數位貨幣,而更著重在基本架構的設計,以針對交易實務需求與因應監理規範。


附錄:Corda架構下債券轉手交易示意圖
 



留言