究極のCordaチュートリアル2021
コーダの専門家になりたいですか?次のcordaチュートリアルでは、Cordaアプリケーションの開発について知っておく必要のあるすべてをカバーしています。.
ブロックチェーンは長い道のりを歩んできました。分散型台帳テクノロジーのアイデアは、現在の組織が経験している多くの問題点を解決しました。主な目的は、数百万ドルを投資することなく、より効率的、安全、かつスケーラブルになることです。.
Cordaは、グローバルなブロックチェーンエコシステムを提供するオープンソースのブロックチェーンプラットフォームです。スマートコントラクトを使用して厳格なプライバシーを提供します。また、ビジネスが直接取引し、ビジネス運営を合理化するための費用効果の高いアプローチを提供するのにも役立ちます.
主な違いは、Cordaがトランザクションを処理する方法です。これは、各ピアに完全な台帳を持たないことで、ブロックチェーンの実現可能性、速度、およびスケーラビリティを向上させたいDLTです。ネットワーク全体に通知せずに2つのピア間でトランザクションを完了できる場合、Cordaはそのアプローチを使用します。また、トランザクションを簡単に追跡してその有効性を確認できるようにする他の関係者を含めるように設計されています。これは、ビジネス向けの分散型台帳テクノロジーです。.
今すぐCordaブロックチェーンチュートリアルを始めましょう!
近日公開: コーダ開発コースの初心者ガイド
Corda開発チュートリアルの構成方法?
コーダについて詳しく説明します。ほとんどのセクションでは、Cordaの重要な概念について説明します。.
ここで取り上げる重要な概念は次のとおりです。.
- 状態
- 契約する
- フローセクション
このチュートリアルでは、IOUアプリケーションを作成します。 IOUは「IOweyoU」の略です。これは、ある人が別の人からお金を所有しているという事実の簡単な表現です。この概念については、後で詳しく説明します。.
物事を簡単にするために、Kotlinプログラミング言語を使用します。学習者として、Kotlinを知っていれば素晴らしいのですが、チュートリアルに従う必要はありません。.
ツール
初心者向けのCordaチュートリアルを開始する前に、次のツールが必要です。開発者が本当に頻繁に使用するのが大好きなブロックチェーンツールもあります。ただし、本日は取り上げません。.
- Kotlin
- Gradle
- ギット
- IntelliJ
- コマンドライン
統合開発環境では、IntelliJを使用する予定です。それは私たちの開発を簡素化します.
コーダチュートリアル
コーダとは?
Cordaブロックチェーンは、相互運用可能なブロックチェーンネットワークを提供することでビジネス上の問題を解決するオープンソースとして最もよく定義されています。その主な機能には、厳格なプライバシー、効率、スマートコントラクトテクノロジーを使用した直接取引が含まれます.
Cordaで使用されるスマートコントラクトは、JVM言語またはJavaを使用して記述できます。 Cordaプラットフォーム内のdAppは、CorDappsとして知られています。また、Notaryインフラストラクチャを使用する機能を備えたピアツーピアノードネットワークを提供します。インフラストラクチャは、ネットワーク上のすべてのピアにトランザクションの詳細をブロードキャストする必要なしに、トランザクションを検証およびシーケンスするために使用されます.
ブロックチェーンで使用されるもう1つの重要なコンポーネントには、参加者間のネゴシエーションと通信を管理するFlowフレームワークが含まれます。.
コーダ元帳を理解する
Corda Ledgerは、従来のブロックチェーンテクノロジーで使用されている元帳システムとは異なります。そのため、機能の観点とデータの両方の観点から、それがどのように機能するかを明確に把握し、理解する必要があります。.
コーダ元帳はグラフのように機能します。グラフ内のすべてのノードは、直接または他のノードを介して相互に接続されています。必要に応じて、すべてのノードが相互に通信できます。グラフの使用は、トランザクションをグローバルにブロードキャストする必要がないことを意味します.
ノードの発見
では、ノードはどのようにしてお互いを発見するのでしょうか?彼らはネットワークマップを使用してお互いを見つけます。電話帳のように考えることができます。ネットワークマップには、これらの各サービスを見つけるためのメタデータが含まれているため、マップを検出するための優れた方法を提供します。.
それはどのように機能しますか?
非グローバルブロードキャストブロックチェーンネットワークにおける最大の課題は、コンセンサスです。では、ノードはどのようにしてお互いを認識し、その情報を検証するのでしょうか。?
ここでの答えは共有された事実です。各ノードは、何らかの方法で他のノードとオーバーラップします。共有されたファクトはCorda元帳に保存され、情報の検証に使用できます。コーダ元帳には、これらのセットのセットが含まれています。中央ノードがないため、これらのノードは、物事を検証する必要があるときにプロキシとして機能します。その情報を保存するために、各ノードには、変更できないファクトを含むボールトがあります。これは、開発者がブロックチェーンを実装する方法です.
州
Cordaブロックチェーンの状態は不変です。これらは、特定の時点でのトランザクション、契約、または契約に関する共有された事実を保存するために使用されます.
技術的に聞こえますか?もっと簡単な言葉で分解してみましょう.
共有された事実
コーダ台帳を使用して2人を連れて行きましょう。それらにAlphaとBravoという名前を付けましょう.
それらの両方が共有された事実を持っています。共有されている事実はIOU(I Own You)です。 IOUは、貸し手がローン提供者のためにお金を持っている場合に使用されます。事実を共有するために、両方ともIOUで表される同じ共有情報を持っています.
何でも表す
状態は、あらゆるものを表すために使用できます。これは、さまざまなコーダのユースケースに関するあらゆる形式の情報を保存できることを意味します。開発者は、州を使用してKYC情報、金融商品、シンジケートローンなどを保存できます。.
また、状態を使用して複数の属性を格納できます。ただし、州には制限があります。制限は、状態にタイプが与えられると、そのタイプを変更できないことです。 IOU状態を作成する場合は、残りの期間、IOU状態を記述する必要があります。.
不変で進化している
状態は不変になるように作成されます。ただし、それらの不変性は時間に関するものです。状態は特定の時間に提示されます.
これは、元の状態に加えて新しい状態を作成できることを意味します。保存する必要のある状態に新しい変更が加えられたときに実行されます。その後、古い状態は歴史的と呼ばれます.
たとえば、AlphaがBravoへの債務を返済した場合、Alphaが債務を清算したという事実を引用して、新しい州が作成されます。また、状態が完了すると、IOUは期限切れになります。簡単に言えば、この場合の状態のライフサイクルは次のとおりです。.
- 最初の州は、アルファがブラボーに債務を負っていることを示すために作成されます。この州はまた、日付、時刻、金利、貸与額、およびIoUに必要なその他の有用な情報を含む、IoUに関する詳細情報を共有します。.
- これで、Alphaが債務を解決すると、新しい情報を更新する新しい状態が作成されます。古い状態は不変であるため、まったく触れられていません.
- 新しい状態は、2人のユーザー間で共有されている事実で更新されます.
- 現在、古い状態は歴史的と呼ばれています。 1つのトランザクションに複数の履歴状態が存在する可能性があります。これにより、一連の状態が作成される可能性があります.
- 最新の状態を参照するシーケンスヘッドが作成されます。また、最新の州は未消費とも呼ばれます.
続きを読む:Hyperledger vs Corda vsEthereum比較ガイド
開発環境の準備
これで、dApp開発ガイドに従って、環境はCorda開発チュートリアルの準備ができているはずです。開始するには、次のツールが必要です.
- Oracle JDK 8 JVM –v8u171以降.
- ギット
- IntelliJ IDEA
Gitリポジトリのクローン作成
私たちの旅を始める最良の方法は、開発環境でCorDappの例を実行することです。幸いなことに、Cordaは、ダウンロードしてローカルで実行できるCorDappの例を提供しています。.
以下のようにgitcloneコマンドを使用して、リポジトリをローカルに複製できます。.
git clone http://github.com/roger3cev/corda-training-template.git
チュートリアルでは、IntelliJを使用してgitリポジトリをインポートします。 IntelliJを開きます。完了すると、バージョン管理からチェックアウトするオプションが表示されます。それをクリックして、コンピュータにリポジトリのクローンを作成します.
プロジェクトを保存することを選択できます。プロジェクトリポジトリは次のようになります。.
右下に、以下のようなGradleプロジェクトをインポートするという通知があります。 Cordaチュートリアルが機能することが重要です.
「Gradleプロジェクトのインポート」をクリックします。
ProjectSDKも設定する必要があります。プロジェクト設定に移動し、最新バージョンのJavaを選択します。私の場合、Java11.0.5に設定されていました。.
実行するエラーを見つけた場合は、Gradleをアップグレードし、Gradleを機能させるために必要なリポジトリをインポートする必要があります。そのためには少し時間がかかります。だから、後部座席を取り、それが完了するのを待つ.
私の場合、Gradleの依存関係の更新をすべて完了するのに約20分かかりました.
Cordaチュートリアルプロジェクトの構造を簡単に見ていきましょう。私たちのメインリポジトリはsrcファイルです。 Kotlinを使用しているため、Kotlin-sourceフォルダーを使用します。その下にsrcフォルダがあります。 java-sourceフォルダーと混同しないでください.
ここでは、トレーニングフォルダに必要なすべてのファイルがあります。アプリケーションのテストユニットを含む「test」フォルダもあります.
知っておく必要のあるもう1つの重要なファイルは、IOUState.ktです。トレーニング内にあります > 状態.
状態ユニットテストを機能させる
IOUStateクラスは非常に基本的に見えます。まだ完成していません。テスト駆動開発の方法論を使用してクラスを開発し、作業の準備をします。.
テスト駆動開発は、最新の開発手法に関しては優れたアプローチです。バグやその他の問題を最初から解決するのに役立ちます.
そのため、ダウンロードしたテンプレートには、契約、フロー、状態など、各クラスに対応するテストがすでに含まれています。.
開始するには、テストに行く必要があります > Kotlin> ネット > コーダ > トレーニング > 状態 > IOUStateTests
そこにはすでに書かれたテストがあります。また、大量のドキュメントが付属しています。 R3Cordaチームは時間をかけてテンプレートを作成しました.
実行する単一のテストを行うには、以下に示すように、セクションのコメントを解除する必要があります.
コードを選択し、Ctrl + /を押してコメントを解除します。 MACを使用する場合は、CMD + /を使用してコメントを解除します.
さて、ユニットテストを実行する時が来ました.
IOUStateクラスがほとんど空であるため、テストは失敗し、次のテストエラーが発生します。.
ご覧のとおり、NoSuchFieldExceptionが原因でKotlin-source:testが失敗したと言っています。これは、テストが何も見つからなかった場合に量変数を期待していることを意味します.
これを修正するには、IOUState.ktファイルに戻って編集する必要があります。あなたがブロックチェーンアプリを構築する方法を知っているなら、それはあなたにとって簡単な仕事になるでしょう.
先に進む前に、Kotlinをよりよく理解する必要があります。編集するコードを理解するには、紹介を取得することをお勧めします。 Kotlinは高密度のプログラミング言語です。また、KotlinはJVM仮想マシンに変換するため、チュートリアルでの使用に問題はありません。.
- データクラスIOUState→このキーワードは、「IOUState」という名前のデータクラスを定義することを意味します。
- valデータ→変数宣言。フィールドの名前はデータです
- String =“ data”→これは、何も定義されていない場合のデータ変数のデフォルト値を定義します.
- ContractState→インターフェース
テストに従ってIOUState.ktファイルにすべての変更を加えた場合、IOUStateクラスは次のようになります。.
データクラス IOUState(val 金額:金額,
val 貸し手:パーティー,
val 借り手:パーティー,
val 支払い済み:Amount = Amount(0、amount.token),
valをオーバーライドする linearId:UniqueIdentifier = UniqueIdentifier()):LinearState {
/ **
*このプロパティは、有効なトランザクションでこの状態を「使用」できるノードのリストを保持します。この場合、
*貸し手または借り手.
* /
valをオーバーライドする 参加者:リスト 取得する()= listOf(貸し手、借り手)
/ **
* IOUを決済および転送するためのトランザクションを構築する際のヘルパーメソッド.
* – [支払う] 支払われたプロパティに金額を追加します。検証は行いません.
* – [withNewLender] 新しく指定された貸し手で現在の状態のコピーを作成します。転送時に使用します.
* /
楽しい pay(amountToPay:Amount)= copy(paid = payed.plus(amountToPay))
楽しい withNewLender(newLender:Party)= copy(lender = newLender)
}
これで、上記のコメントに従ってヘルパーメソッドを追加できるようになります。.
コーダの専門家になりたいですか?これは、認定プロセスをガイドするR3Corda認定のガイドです。.
コーダの連絡先
私たちは、州が新しい州に進化する可能性があることを学びました。開発者は、契約を使用して元帳状態の進化を制御できます。このセクションでは、契約について詳しく学びます.
R3 Cordaは、ネットワーク全体へのメッセージのブロードキャストに依存しないため、状態タイプごとに共通のトランザクション検証定義を利用します。このようにして、Cordaネットワークはトランザクションを検証し、コンセンサスを獲得します。他のブロックチェーンがトランザクションを記録する方法と非常によく似ています.
コーダコントラクトは関数を介して実装されます。状態はデータストレージユニットと考えることができ、コントラクトはデータとその状態の変化を検証する方法です。これらの検証機能は、状態タイプに固有です。.
状態を検証してサービス可能にするために、各状態を契約で参照する必要があります.
各契約には、契約コードと法的散文を含む2つの項目が含まれています.
それを理解するために、次の画像を見てみましょう.
ご覧のとおり、契約には2つの項目が含まれており、州にはそのコードのIOU契約参照があります。.
法的散文: Legal Proseは、契約の法的契約への参照として使用されます。これは、紛争が発生した場合に既存の法的枠組みと司法制度を使用できるようにするために使用されます.
コーダ契約のその他の主な機能は次のとおりです。
- 複数のコントラクトがコントラクトを参照できます。また、コントラクトには複数の状態タイプを含めることができます
- Cordaは検証機能を利用して、提案されたトランザクションを検証します
- 検証方法の署名は以下のとおりです。
- 楽しい検証(tx:トランザクション):ユニット
- 検証方法は、すべての制約を実行することによってトランザクションを検証します。制約が失敗すると、例外がスローされます。それ以外の場合、トランザクションは有効と見なされます.
- 検証機能は決定論的です.
ブロックチェーンテンプレートには、Cordaコントラクトのコードも含まれています。また、州と同様のコーダ契約にアプローチする必要があります。 Cordaテストユニットに移動してから、必要なコードをコントラクトクラスに追加すると便利です。.
コーダトランザクション
次の目的地はCordaTransactionsです。状態変化を可能にするのはトランザクションです.
では、トランザクションとは何ですか?これは、入力状態参照(0以上)を含むコンテナーとして最もよく定義できます。また、状態(0以上)を生成します.
トランザクションは、複数のピアがリアルタイムで相互作用できるようにすることで、ネットワークが最適に機能することを可能にします。これにより、他のピアアクティビティを妨げることなく、2つのパーティがアトミックスワップを行うことができます。また、トランザクションは本質的にアトミックです。これは、トランザクションを削減または分割できないことを意味します.
トランザクションには、保険、更新、および終了の3つのタイプもあります。それぞれに独自の議題があります。それらを以下にリストしましょう.
- 保険→新しい州を作成します
- 更新→状態プロパティの変更
- 終了→元帳から状態を削除します
コーダフロー
コーダフローは、ピアがトランザクションを成功させる(実行する)ために必要な手順です。.
フローは、CorDappコアビジネスロジックを決定します。トランザクションが正しい順序と正しいパラメータで実行されることを確認する責任があります。トランザクションは本質的に複雑であるため、すべてが意図したとおりに機能することを保証するためにフローが必要です.
フロー制御により、いつ通信するか、何を通信するか、誰と通信するかが保証されます.
これは、トランザクションの詳細をネットワーク全体にブロードキャストすることに焦点を当てている他の分散型台帳テクノロジーとは正反対です。 Cordaは、トランザクションに送信者と受信者の2つの重要なパラメーターが必要なポイントツーポイントトランザクションで成功します.
フローについて知っておくべき重要事項
- フローは数秒以内に完了することも、完了するまでに数日かかることもあります
- 彼らは完全に自律的です
- フローは、応答を待つ前にスリープします
- フローはフローフレームワークに従います。フローフレームワークは、開発者が適切なステートマシンの開発を保証するためのメカニズムを提供します。.
- フローはペアと片側の両方にすることができます
- 開発者は、サブフローをコーディングしてコードを単純化することもできます
ワンランク上の専門家になりたいですか? Pythonでブロックチェーンを構築する方法のガイドは次のとおりです.
コンセンサス
これまで話し合ってきたエキサイティングなことの中で、Cordaが特別なのは、コンセンサスを達成する方法です。コーダは独自のアプローチを採用しているため、世界中の企業にとって実行可能です。.
まず、Cordaは2つのコンセンサスアルゴリズムを利用します。以下が含まれます
- 一意性コンセンサス→このコンセンサス方式により、元帳で競合が発生することはありません。
- 検証コンセンサス→検証コンセンサスはトランザクションを処理し、契約コードに従って競合が発生しないことを確認します。ネットワーク内の共有状態の進化を促進します.
コーダコンセンサスについてあなたがすべき重要なこと:
- 一意のコンセンサスにより、元帳の更新が常に一意であることが保証されます。また、更新が行われているときに元帳が有効であることを確認します.
- 検証コンセンサスは、更新が有効であることを確認します.
コーダノード
ここで説明するCordaの最後のセクションは、Cordaノードです。コーダノードは、コーダの高レベルのビューです.
では、Cordaノードとは正確には何ですか?
Cordaノードは、Java仮想マシンで実行されるエンティティです。それは以下を含みます
- ストレージサービスとボールトを提供します
- SQLDBはボールトとストレージサービスをサポートします
- 専用フォルダは添付ファイルを保存するために使用されます
- CorDappsと呼ばれるカスタム機能と組み込みの拡張機能を提供します
- RPCクライアントフレームワークを提供します
これはCordaノードがどのように見えるかです.
ご覧のとおり、Cordaネットワークを実行するために必要なすべての側面が含まれています。それらはフローと相互作用し、カスタムCorDapp機能を提供します.
結論
これで、Cordaチュートリアルは終了です。ここでは、Cordaを見て、IoUCorDappを見ようとしました。 Corda GitHubリポジトリで利用可能なテンプレートトレーニングを使用して、さまざまなセクションについて説明しました.
私たちの焦点は、Cordaが提供するすべてを説明しようとせずにCordaを使い始めることです。そのためには、いつでもCordaのドキュメントを使用できます。また、Corda開発チュートリアルに関する今後のコースもあります。完全な開発ガイドが必要な場合は、必ずチェックしてください。.