Corda - 商業開源區塊鏈

是一個分散式帳本,用於儲存、管理和同步不同金融組織之間的財務義務。
Corda - 商業開源區塊鏈
Corda 有非常好的文件和視訊講座,可以找到 這裡。我將嘗試簡要描述 Corda 的內部工作原理。

讓我們看看 Corda 的主要特點以及它在其他區塊鏈中的獨特之處:

  • Corda 沒有自己的加密貨幣。
  • Corda 不使用挖礦和工作量證明系統的概念。
  • 資料傳輸僅發生在交易/合約雙方之間。沒有向所有網路節點進行全域廣播。
  • 沒有中央控制器管理所有交易。
  • Corda 支援各種共識機制。
  • 參與者之間在單一協議/合約層面達成共識,而不是在整個系統層面達成共識。
  • 交易僅由與其相關的參與者確認。
  • Corda 提供了正式的人類法律語言和智慧合約代碼之間的直接聯繫。

帳本

Corda 中帳本的概念是主觀的。沒有單一的中央資料儲存庫。相反,每個節點維護一個單獨的已知事實資料庫。

例如,想像一個由 5 個節點組成的網絡,其中一個圓是該節點已知的事實。

Corda - 商業開源區塊鏈

正如我們所看到的,Ed、Carl 和 Demi 知道事實 3,但 Alice 和 Bob 甚至不知道。 Corda保證共同的事實儲存在每個節點的資料庫中,並且資料將是相同的。

狀態

狀態是 不可變的 表示一個或多個網路節點在某一時間點已知的事實的物件。

狀態可以儲存任意數據,例如股票、債券、貸款、身分資訊。

例如,以下狀態代表一個 IOU——Alice 欠 Bob X 的協議:

Corda - 商業開源區塊鏈
事實隨著時間的推移的生命週期由一系列狀態表示。當需要更新目前狀態時,我們會建立一個新狀態並將目前狀態標記為歷史狀態。

Corda - 商業開源區塊鏈

交易

交易是更新分類帳的提議。它們不會廣播給所有帳本參與者,並且僅可供那些擁有合法權利查看和管理它們的網路參與者使用。

如果滿足以下條件,交易將被加入到分類帳中:

  • 合約有效
  • 由所有必要的參與者簽署
  • 不包含雙花

Corda 使用 UTXO(未花費交易輸出)模型,其中每個帳本狀態都是不可變的。

建立交易時,前一個交易的輸出狀態(透過雜湊和索引)將傳輸到輸入。

Corda - 商業開源區塊鏈
交易生命週期:

  • 創建(目前,交易只是更新帳本的提案)
  • 收集簽名(需要交易各方透過向交易添加簽名來批准更新提案)
  • 將交易提交至分類賬

一旦交易被添加到分類帳中,輸入狀態將被標記為歷史並且不能在未來的交易中使用。

Corda - 商業開源區塊鏈
除了輸入和輸出狀態之外,交易還可能包含:

  • 命令(指示交易目的的交易參數)
  • 附件(假日日曆、貨幣換算)
  • 時間窗口(有效期限)
  • 公證人(公證人,驗證交易的特殊網路參與者)

Corda - 商業開源區塊鏈

合同

當我們談論交易有效性時,我們不僅指必要的簽名的存在,還指合約的有效性。每筆交易都與接受該交易並驗證輸入和輸出狀態的合約相關聯。只有當事務的所有狀態都有效時,事務才被視為有效。

Corda 中的合約可以用任何 JVM 語言(例如 Java、Kotlin)編寫。

class CommercialPaper : Contract {
    override fun verify(tx: LedgerTransaction) {
        TODO()
    }
}

需要從類別繼承 合同 並重寫該方法 確認。如果交易無效,則會拋出異常。

交易驗證必須是確定性的,即合約必須始終接受或拒絕交易。與此相關的是,交易的有效性不能依賴時間、隨機數、主機檔案等。

在 Corda 中,合約在所謂的沙箱中執行 - 一個稍微修改過的 JVM,可確保合約的確定性執行。

為了自動化網路節點之間的通信,新增了線程。

流程是一系列步驟,告訴節點如何執行特定的帳本更新以及何時需要對交易進行簽署和驗證。

Corda - 商業開源區塊鏈

有時需要數小時、數天的時間才能讓所有當事人簽署交易並進入分類帳。如果斷開參與交易的節點會發生什麼事?線程具有檢查點,在檢查點處線程的狀態被寫入節點的資料庫。當節點恢復到網路時,它將從中斷的地方繼續。

共識

為了進入帳本,一筆交易必須達成兩個共識:有效性和唯一性。

交易有效性的決定僅由直接參與交易的各方做出。

公證節點檢查交易的唯一性並防止雙重支出。

假設 Bob 有 100 美元,並希望使用相同的輸入狀態將 80 美元轉移給 Charlie,將 70 美元轉移給 Dan。

Corda - 商業開源區塊鏈

Corda 不會允許你完成這樣的把戲。雖然交易會通過有效性檢查,但唯一性檢查將會失敗。

結論

Corda 平台由 R3 區塊鏈聯盟開發,並非區塊鏈技術的純粹用例。 Corda 是一款針對金融機構的高度專業化工具。

來源: www.habr.com

添加評論