Corda - ビジネス向けのオープンソース ブロックチェーン

ロープ は、異なる金融機関間で財務上の義務を保存、管理、同期するための分散型台帳です。
Corda - ビジネス向けのオープンソース ブロックチェーン
Corda には、ビデオ講義を含む非常に優れたドキュメントが用意されています。 ここで。 Corda が内部でどのように動作するかを簡単に説明してみます。

Corda の主な機能と他のブロックチェーンの中での独自性を見てみましょう。

  • Corda は独自の暗号通貨を持っていません。
  • Corda はマイニングと Proof-of-Work システムの概念を使用しません。
  • データ転送は、取引/契約の当事者間でのみ行われます。すべてのネットワーク ノードへのグローバル ブロードキャストはありません。
  • すべてのトランザクションを管理する中央コントローラーは存在しません。
  • Corda はさまざまなコンセンサス メカニズムをサポートしています。
  • 合意は、システム全体のレベルではなく、個々の合意/契約のレベルで参加者間で達成されます。
  • トランザクションは、それに関係する参加者のみによって確認されます。
  • Corda は、正式な人間の法律言語とスマート コントラクト コードの間の直接的な接続を提供します。

台帳

Corda の台帳の概念は主観的なものです。単一の中央データ リポジトリはありません。代わりに、各ノードは、既知の事実の個別のデータベースを維持します。

たとえば、円がノードに既知の事実である 5 つのノードからなるネットワークを想像してください。

Corda - ビジネス向けのオープンソース ブロックチェーン

ご覧のとおり、エド、カール、デミは事実 3 について知っていますが、アリスとボブは事実にさえ気づいていません。 Corda は、共通の事実が各ノードのデータベースに保存され、データが同一で​​あることを保証します。

状態は 不変 特定の時点で XNUMX つ以上のネットワーク ノードに知られている事実を表すオブジェクト。

国家は、株式、債券、ローン、識別情報などの任意のデータを保存できます。

たとえば、次の状態は IOU、つまりアリスがボブに X の金額を支払う契約を表しています。

Corda - ビジネス向けのオープンソース ブロックチェーン
時間の経過に伴うファクトのライフ サイクルは、一連の状態によって表されます。現在の状態を更新する必要がある場合は、新しい状態を作成し、現在の状態を履歴としてマークします。

Corda - ビジネス向けのオープンソース ブロックチェーン

取引

トランザクションは台帳を更新するための提案です。これらはすべての台帳参加者にブロードキャストされるわけではなく、それらを表示および管理する法的権利を持つネットワーク参加者のみが利用できます。

次の場合、トランザクションは台帳に追加されます。

  • 契約上有効な
  • 必要な参加者全員の署名
  • 二重支出は含まれません

Corda は、各台帳の状態が不変である UTXO (未使用トランザクション出力) モデルを使用します。

トランザクションが作成されると、前のトランザクションの出力状態 (ハッシュとインデックスによる) が入力に転送されます。

Corda - ビジネス向けのオープンソース ブロックチェーン
トランザクションのライフサイクル:

  • 作成(現時点では、トランザクションは台帳を更新するための提案にすぎません)
  • 署名を収集する (トランザクションの必須当事者は、トランザクションに署名を追加することで更新提案を承認します)
  • トランザクションを台帳にコミットする

トランザクションが台帳に追加されると、入力状態は履歴としてマークされ、将来のトランザクションでは使用できなくなります。

Corda - ビジネス向けのオープンソース ブロックチェーン
トランザクションには、入力状態と出力状態に加えて、以下が含まれる場合があります。

  • コマンド(トランザクションの目的を示すトランザクションパラメータ)
  • 付属品(祝日カレンダー、通貨換算機)
  • 時間枠(有効期間)
  • 公証人 (公証人、取引を検証する特別なネットワーク参加者)

Corda - ビジネス向けのオープンソース ブロックチェーン

契約

取引の有効性について話す場合、必要な署名の存在だけでなく、契約上の有効性も意味します。各トランザクションは、それを受け入れて入力状態と出力状態を検証するコントラクトに関連付けられています。トランザクションは、そのすべての状態が有効な場合にのみ有効とみなされます。

Corda のコントラクトは、任意の JVM 言語 (Java、Kotlin など) で記述されます。

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

クラスから継承する必要がある 契約 そしてメソッドをオーバーライドします 確認する。トランザクションが無効な場合は、例外がスローされます。

トランザクションの検証は決定論的である必要があります。契約では常にトランザクションを受け入れるか拒否する必要があります。これに関連して、トランザクションの有効性は時間、乱数、ホスト ファイルなどに依存することはできません。

Corda では、コントラクトはいわゆるサンドボックスで実行されます。これは、コントラクトの決定的な実行を保証するわずかに変更された JVM です。

ストリーム

ネットワーク ノード間の通信を自動化するために、スレッドが追加されました。

フローは、特定の台帳の更新を実行する方法と、どの時点でトランザクションの署名と検証が必要かをノードに伝える一連のステップです。

Corda - ビジネス向けのオープンソース ブロックチェーン

取引がすべての当事者によって署名され、台帳に記録されるまでに数時間、数日かかる場合があります。トランザクションに参加しているノードを切断するとどうなりますか?スレッドにはチェックポイントがあり、スレッドの状態がノードのデータベースに書き込まれます。ノードがネットワークに復元されると、中断したところから続行されます。

コンセンサス

台帳に登録するには、トランザクションが有効性と一意性という 2 つの合意に達する必要があります。

取引の有効性に関する決定は、取引に直接関与する当事者によってのみ行われます。

公証ノードはトランザクションの一意性をチェックし、二重支出を防ぎます。

ボブが 100 ドルを持っていて、同じ入力状態を使用して 80 ドルをチャーリーに送金し、70 ドルをダンに送金したいとします。

Corda - ビジネス向けのオープンソース ブロックチェーン

Corda ではそのようなトリックを実行することはできません。トランザクションは有効性チェックには合格しますが、一意性チェックは失敗します。

まとめ

R3 ブロックチェーン コンソーシアムによって開発された Corda プラットフォームは、ブロックチェーン テクノロジーの純粋なユースケースではありません。 Corda は金融機関向けの高度に専門化されたツールです。

出所: habr.com

コメントを追加します