什麼是Corda?
最近我開始了一個需要使用到Corda的專案,那Corda究竟是什麼呢?如果你是在Google上搜到的這篇文章,那你應該已經對它有一些自己的認識,但如果是以其它形式看到這篇文章,那你很可能對它就不是很熟悉了。不管怎樣,我解釋一下它是什麼。
Corda是一種分散式記賬技術(Distributed Ledger Technology),簡稱為DLT。一些人可能會說這是區塊鏈,但我堅信它與以太坊(Ethereum)、比特幣(Bitcoin)這些區塊鏈是有區別的。不過它更像超級賬本(Hyperledger Fabric)和Quorum(以太坊的一個分支)這些分散式賬本技術。這些區別很重要,因為這樣才可以讓Corda在它的用例中表現的更好。我將在這篇文章中簡要介紹影響Corda設計的因素。
總而言之,Corda是一種應用在商業中的分散式記賬技術。例如在金融機構,透過保持一個共享交易賬本,消除了參與者相互交易後不斷檢查賬本一致性的需要。這是Corda正在解決的一個主要問題。
基於這些,它的設計就是為了讓相互交易的各方確信他們賬本的一致性。Corda消除了網路上所有參與者需要了解每一筆交易的需求,因為只有那些參與其中的人才會對它們感興趣。為了更好的展開闡述,我們需要對Corda正在解決的問題進行適當的研究,這樣才可以理解為什麼選擇Corda做這些基本的決策。
為什麼使用分散式記賬技術?
為什麼分散式賬本作為一種可能的解決方案,可以讓每一方的賬簿保持一致,而不需要雙方進行經常性的檢查?
這個問題的答案可以寫很多。資料一致性是分散式賬本的核心功能之一,也對Corda正在解決的問題起到關鍵的作用。我們來更進一步看看Corda為什麼可以消除商業人員在保持各方資料一致性上花費的額外時間和工作。
一個商業或者金融結構,以銀行為例,從一個客戶的賬戶轉一筆錢到另一家銀行的接收者賬戶中,兩家銀行都需要檢查這次交易是有效的,也就是客戶的資金已經被轉走,並且最後被正確接收。
確保一個賬戶的資金已經減少而另一個賬戶的資金增加,需要雙方進行多次的檢查。因為他們需要百分百確定錢不會神奇地消失或者憑空創造出來。此外,一些檢查是手工完成的,需要花費更多的時間和精力來確保一致性。
分散式賬本可以完全消除這種需求,無論是由交易雙方進行還是由第三方完成。這是由分散式賬本的本質決定的,賬本上所有節點(參與者)的狀態必須一致。
具體到Corda,只有當所有相關方都接受了所提交的交易的輸入和輸出是正確時,才會提交交易。如果有任何人不同意,那這筆交易就不會發生,否則,交易將被提交,並且這些資金(或任何輸入和輸出)按照約定在雙方之間移動。
請注意,我還沒有提到任何需要手動檢查交易的需求。其實仍然可以在提交交易的過程中進行手動互動,比如,在流程完成之前需要進行簽名。
來源於r3's的訓練材料
進入下一個問題:
為什麼Corda只允許交易中的參與方進行交易?
首先我們需要理解類似以太坊(Ethereum)和比特幣(Bitcoin)的區塊鏈,為什麼它們的交易都是公開的。區塊鏈的主要吸引力之一就是信任機制,也就是不需要信任你(或者任何人)也可以相信在鏈上的交易都是有效的。這是可以實現的,因為所有的交易都是公開的,一旦它們被包含在一個區塊中,那麼這種狀態將永久保持。一位不懷好意的參與者想要修改一個區塊中的交易幾乎是不可能的,因為它需要在下一個區塊加入鏈之前,將網路中所有節點的區塊副本進行修改。
這樣做的缺點是,使用區塊鏈的每個參與方都必須保留該鏈的本地副本,這樣當一個新區塊被新增到鏈中時,所有參與方都會收到更新並保持在相同的狀態。
降低一個系統的信任機制會對系統效能和可擴充套件性產生很大的影響。例如,以太坊(Ethereum)目前需要每個節點處理所有交易並儲存所有賬戶的狀態與合約程式碼。這會降低網路上所有節點到一個節點可能的吞吐量。如果該模型保持不變,那麼隨著使用者數量的增加,使用者等待其交易被挖掘的平均時間只能增加。
由於上述問題的存在,很多人正在研究提高網路效能的可能方法。以太坊的雷電網路(Ethereum Raiden Network)與比特幣的閃電網路(Bitcoin Lightning Network)都在致力於提高各自系統的效能和可擴充套件性。
以太坊網路例子:單個交易中涉及的節點
Corda很可靠,但是這並不意味著它走向了系統效能的另一個極端,但是一些信任是很明確的,因為必須知道一方的身份才能加入現有的Corda網路。此外,網路上的參與者必須信任賬本上的資產發行人,資產自己在交易中移動。這就是需要信任結束的地方,參與者自己不需要互相信任。賬本保持所有人一致,事實上網路對每個人的身份進行認證授權,身份可以提供一個備份保證以防任何非法操作。
另外,不可靠的區塊鏈或者分類賬都不能在信任級別的最底層找到,因為它們隱含在一致性協議中並且依賴於一個(或一組)參與者不能控制整個網路一半的挖掘能力。
透過消除網路中各方共識需求,僅僅保持交易的參與者的一致性可以加快交易完成速度。由網路認證授權提供的初始信任為這一決策奠定了基礎。如果分散式記賬技術將取代已經存在的金融基礎設施,這將在其中起到重要作用。
Corda網路例子-參與者包含在單獨的交易中
根據這兩個問題的答案我們可以確定,到目前為止,Corda並不是像以太坊(Ethereum)或者比特幣(Bitcoin)區塊鏈那樣分散,但是它也確實允許企業在不需要中心節點的情況下進行交易。這和其它分散式記賬技術保持一致,例如超級賬本(Hyperledger Fabric)。
這是否是一個好的或者糟糕的想法取決於你對離散重要性的看法。雖然,合約程式碼的分佈與區塊鏈中的硬分叉(hard fork)工作類似——在所有升級之前,所有各方都必須同意新程式碼;然後放棄舊版本的程式碼,而不是讓兩個不同的版本獨立執行,但是,這種升級過程使它在分散的規模上減小了一點。
我相信,如果DLTs要向前發展,並且得到更廣泛的應用,這些就是需要做出的設計決策。
綜上,我相信這些因素對Corda的設計產生了很大的影響。他們選擇分散式記賬技術,該技術使用已知的身份向系統注入信任,並且保持交易各方交易私有。這樣的目的在於減少維護資料一致性所需要做的工作,同時仍然允許資料良好地伸縮並處理更大量的交易。如果分散式記賬技術充當商業之間互動的角色或者可能取代當前金融基礎設施,那麼我相信這些決策就是必須的。
如果這篇文章激起了你的興趣,你想親自看看Corda,那麼去看看他們的文件,裡面提供了關於Corda構建的概念以及如何使用這個平臺的教程,這樣你就可以自己拿來試驗了:
Corda文件地址:
https://docs.corda.net/
原文標題:
What Is Corda?
原文連結:
https://dzone.com/articles/what-is-corda-3