讓DLT產生協作:結合R3 Corda,對DAH GSL技術的思考

去年年底,DAH公司發佈了一份優秀的技術預覽白皮書 – 全局共享日誌Global Synchronisation Log
簡稱GSL,這份白皮書有助於我們理解分佈式賬本系統設計的一些關鍵要素。它指出,應用於關鍵金融業務領域的分佈式賬本技術的正確架構應該是基於UTXO模型的,這與我們萬達網絡的設計理念一致。

dah

分佈式賬本技術可以解決什麼問題?構建一個DLT系統的難點是什麼?

分佈式賬本技術允許我們建立一個系統,讓所有的關聯方可以看到相關的數據並使用這些數據。在比特幣和其他分佈式賬本技術出現之前,只有兩種方式來實現這一點:1)我們可以建立一箇中心化的基礎設施平臺,所有人完全遵從它的處理規則
2)我們可以建立屬於我們自己的系統,然後花大量的時間來檢查、覈對所有最終的結果是否一致,這裏可能存在大量的糾紛,也許最終的結果都是通過和解來達成共識的。這兩種方式都不完美。比特幣及受其啓發的分佈式賬本系統向我們展示了第三種方式:我們可以使用密碼學算法、共識算法和其他技術一起來保障我們的系統是全局同步的,這是一大進步。

但依然有一個問題困擾着當前的DLT領域,那就是全局數據共享。比特幣及其衍生系統的解決方案提供了全局數據共享的賬本,一方面,它爲我們提供了許多優點:比如高可用性、數據全局複製、防篡改等等。但另一方面,它也造成了賬本容量臃腫、工作量證明算法大量依賴算力的支持以及賬本匿名使用產生的反洗錢監管漏洞。

這些都是商用化分佈式賬本技術正在着手解決的難題,R3的Corda重構了組成現有區塊鏈平臺的區塊和鏈,他們根據所熟悉的JAVA線程模型、應用場景以及業務可以接受的妥協程度重新組合,形成一種適用於強監管環境的分佈式賬本技術解決方案。在這個場景中,我們發現有兩個典型問題:1)交易驗證
2)兩個已驗證交易是否彼此衝突

Corda將交易驗證的問題交給交易參與方來處理:如果他們中的一個僞造智能合約的運行結果使之與實際結果不同,那麼Corda會將爭議交給“帶外”系統來處理。因爲Corda是一個許可制的分佈式賬本系統,系統中的成員知道彼此的身份,所以通過技術造假來獲益的成本較高。

Corda將交易確認的問題交給一個獨立觀察員,它是一個大家都信任的角色,即仲裁者,他可以在兩個同樣有效但相互衝突的交易結果之間進行判斷,使得哪個交易最終得到確認。在Corda裏,這個觀察者角色被稱爲Notary(公證人),而在比特幣區塊鏈中,我們稱之爲Miner
礦工。

通過這種處理方式,Corda解決了隱私保護和拓展性的問題。但是,作爲一種妥協的方式,Corda方案失去了公有鏈當中全局廣播和有效確認的特性。因此,在我們設計DLT平臺時,首先必須要權衡哪些功能需要,哪些應用場景需要哪些功能並針對性的選擇相關的模塊,DLT作爲一種技術集合,需要高度的模塊化。

GSL的白皮書着眼於說明解決幾項關鍵爭議問題的思路,比如拒絕狀態攻擊、隱私保護和交易驗證等等,兩個典型的問題如下:


如果將一個完整的交易發送給公證人,因爲公證人可以看到交易中的所有相關的數據,這可能導致隱私泄露。但是,如果我只發送需要查看的交易部分給公證人,然後我可以通過在確認“消耗”一個輸入後執行一個拒絕狀態攻擊,停止隨後被確認的有效交易,同時讓公證人確認那些無效的交易。


向公證人發送的交易,公證人如何知道要通知哪些參與方?當我得到一個交易確認結果但是另一方還不知道的時候.(非同時到達交易結果),如果這個結果對我有利,我可以發起一個攻擊使得交易結果不告訴其他方​​。

這些問題都非常棘手,在Corda中,相應的解決方法如下:

•“
公證人隱私與拒絕狀態攻擊問題應該根據應用場景來選擇對應的解決方案。因此,Corda支持需要查看所有數據的“驗證公證人”和只查看部分數據以使他們能夠確認交易的“非驗證公證人”。Corda要求非驗證公證人記錄所有收到的簽名交易,便於系統知道誰在試圖作惡。


不過,如何通知的問題更加棘手:一個公證人需要知道你是誰以及如何聯繫你。如果使用全局廣播,這就會成爲隱私保護問題。因此,Corda賦予用戶權利來決定選擇信任公證人還是交易對手。

我們看到在GSL的白皮書裏,他們的技術主張非常合理,與Corda有許多異曲同工的地方:

• DAH的GSL模型能夠降低拒絕狀態攻擊的風險,而這在Corda的設計裏是天生考慮的。

• GSL裏,公證人只能看到爲確定交易排序/唯一性所需的交易數據,而不是全部數據。

• 被確認的交易,需要保障同時被交易相關者收到。

GSL白皮書重點說明了如何處理通知問題,解決思路如下:

  1. 將應該知道交易的所有各方的身份添加到交易之外。這些信息是公證人可以看到的部分。
  2. 實際上,爲了避免身份信息泄露,GSL並沒有直接把身份信息加上,而是通過類似給交易打標籤的方式把需要知道這個交易的每個人的列表加上。
  3. 雖然公證人無法看到大部分的交易內容,但是公證人可能並不知道這個列表是錯誤的。所以,GSL在交易驗證邏輯中添加了一個附加規則:即如果交易沒有標註正確的接收人列表,那麼這個交易就是無效的。
  4. 所以你會發現GSL很酷:你可以執行任意交易,但是如果沒有標記正確的交易接收人,公證是可以順利通過的(公證人在GSL模型中是非驗證公證人),只是“攻擊者”什麼好處都得不到,因爲每個交易根據系統中的規則都會被認爲是無效的,所以無論你如何作惡都會失敗。如果構建的是有效交易,在公證人通知所有接收方並確認交易後就是不可逆的。所以一個作惡的角色不能拒絕有效、經過確認的交易。

GSL的解決方法將交易有效性問題與通知問題緊密結合起來,它實現了很多現實業務的需求:1)交易內容只有那些允許查看的人才能看到
2)交易驗證掌握在交易參與方手中,公證人沒有看到他們不該看的
3)如果交易被提交,那麼交易參與方都可以接收到結果。GSL對於現實廣泛的應用場景,是一個不錯的權宜方案。

Corda是否是適用GSL的解決方案?

Corda的設計看上去已經具有實現GSL所需要的大部分功能。

• Corda的公證人在非驗證模式下運行時已經記錄了交易提交者的相關信息,因此Corda可以解決拒絕狀態攻擊問題。

• Corda支持僅使用Merkle樹與第三方(如公證人)共享相關信息的機制。

• Corda支持“標籤”功能 – 即給每個交易附帶一個列表,標識可能有關的各方

• Corda的交易驗證引擎已允許智能合約驗證交易接收列表是否正確。

所以,Corda也已經具備將交易驗證綁定到交易通知列表的機制,只是在隱私保護的權衡之下,可能無法確保通知實際發生。透過GSL的白皮書證明這個功能是非常有意義的,所以Corda將在未來的里程碑版本中將該功能添加到代碼庫。

最後提一下,由於Corda不是區塊鏈,所以它的最佳實踐與DAH
GSL白皮書中的設計略有不同,Corda使用一個點對點消息網絡。讓公證人將消息直接告知參與方,這不像傳統區塊鏈平臺通過數據結構供參與方可以被動地瀏覽和查找交易。

開源創新:2017年是Hyperledger各項目聯合創新成爲主流的一年

發文時比特幣標準價格 買價:¥7393.00 賣價:¥7357.00

作者:季宙棟
原文鏈接:https://zhuanlan.zhihu.com/p/25061575 版權聲明: [
![by](http://cdn.8btc.com
/wp-content/themes/8btctest1/custom/images/by.png)
![nc"](http://cdn.8btc.com
/wp-content/themes/8btctest1/custom/images/nc.png)
![sa](http://cdn.8btc.com
/wp-content/themes/8btctest1/custom/images/sa.png)
](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/)
作者保留權利。文章爲作者獨立觀點,不代表巴比特立場。

來源鏈接:www.8btc.com