DAMLチュートリアル:DAML入門

DAMLチュートリアルをお探しですか?もしそうなら、あなたは正しい場所に来ました。この記事では、適切なDAMLブロックチェーンチュートリアルを行います.

チュートリアルでは、DAMLの基本的な理解、DAMLが必要な理由、およびDAMLをより理解するためのコード例について説明します。初心者の方は、DAMLを使い始めるためのチュートリアルがあります。要するに、これは初心者にとって完璧なDAMLチュートリアルです。ただし、記事の範囲を超えているため、チュートリアルで完全なアプリケーションを構築することはないため、完全なDAML開発チュートリアルではありません。.

DAMLチュートリアル:DAML入門

では、DAMLとは何ですか?探検しましょう.

ブロックチェーンリフレッシャーが必要ですか?始めるには、Blockchain for Beginnersガイドをチェックしてください!また、DAMLの究極のガイドもご覧ください.

DAMLとは?

DAMLは、分散アプリケーションを開発するためのオープンソースプログラミング言語です。これにより、開発者はこれらの分散アプリケーションを簡潔、迅速、かつ正確に作成できます。.

HyperledgerはDAMLを維持し、そのエコシステムの一部にしています。これにより、DAMLは主要なブロックチェーンプラットフォーム上で実行されるプログラミング言語の1つになります。はい、複数のプラットフォームで受け入れられています。また、開発者がアプリケーションをすばやく開発し、展開する場所を簡単に決定できるようにします。.

DAMLが特別な理由?

DAMLは、分散言語を構築するためのプログラミング言語です。分散アプリケーションの重要性を理解する企業が増えるにつれ、DAMLはそれらの企業とその開発者が目標を達成するためのツールを提供します。実際、これは、分散アプリケーションを制御できるすばらしいツールの1つです。.

DAMLは、分散状態の同期や暗号化などの複雑な問題の解決策を提供するため、難しい設計の問題に正面から取り組みます。目標を達成するために、それは再設計されています. 

開発者がブロックチェーンアプリケーションを作成すると、基盤となる設計または実装が抽象化されます。これにより、開発者は抽象的な要件に集中でき、DAMLがすべてのハードワークを処理できるようになります。 DAMLが特別であることを知っていると、DAMLチュートリアルを使用してDAMLを学ぶことをよりよく理解できます。.

DAML機能

DAMLチュートリアルのこのセクションでは、DAMLの主な機能について学習します。.

データ・モデル: DAMLを使用すると、開発者はアプリケーションの複雑なデータスキームを簡単に作成できます。これにより、複雑な要件やビジネスプロセスの設計と実装が容易になります。.

きめ細かい権限: DAMLコントラクトは、アクセス許可を設定するように微調整されています。これは、開発者が契約に署名できる人、契約を見ることができる人、および条件を設定できることを意味します.

ビジネスの論理: ビジネスロジックも簡単に統合できます。開発者は、コントラクト、そのアサーション、パラメーターなどに必要なアクションを記述できます。!

シナリオベースのテスト: シナリオベースのテストもDAMLで可能です。開発者は、ワークフローなど、分散型アプリのビジネスロジックやその他の側面をテストできます。.

ランタイム機能

上記の4つのコア機能とは別に、DAMLランタイムもあります。ランタイムとは、アプリケーションの実行中にアプリケーションによって作成された環境を指します。この状態では、プログラムを効率的かつ効果的に実行するための重要な機能があります。 DAMLチュートリアルでそれらについて学習することにより、DAML学習を強化することができます。.

以下でそれらについて話しましょう.

ストレージの抽象化 →ストレージの抽象化は、すべてのDAMLプログラムがストレージに依存しないことを保証する永続性レイヤーを提供します。簡単に言うと、DAMLプログラムは、選択したストレージに依存しません。これは、前述のデータを消化可能な形式に変換できるためです。.

承認チェック→ 承認は、契約内のすべてのアクションをチェックします。アクションが適切な承認を通過しない場合、実行は許可されません.

その後、コントラクトはランタイムエラーをスローし、購入者または開発者に通知します.

説明責任の追跡→ ランタイムは、説明責任の追跡も担当します。それは、当事者が自発的に合意を締結することを確実にします。それを実現するには、署名者の署名が必要でした。これは、主催者または販売者からの強制的な行動から購入者を保護するために行われます。. 

原子構成性→ DAMLはアトミックデザインをサポートしています。これは、すべてのアクションがアトミックに実行されるため、コミットすることも、まったくコミットしないこともできることを意味します。契約の履行に関しては、妥協点はありません。これは、ワークフローの安全性を確保し、悪用者を遠ざけるために行われます。.

二重支払いなし →DAMLランタイムでは、契約は二重支払いが不可能であることを確認するように設計されています。これは、同じ契約を2回実行できないことを意味します. 

知っておくべきプライバシー→ DAMLはサブトランザクションレベルを提供し、承認されたときに情報を利用できるようにします.

決定論的実行 →最後に、ランタイムは決定論的実行をサポートします。これは、アクションの効果が元帳の現在の状態に依存することを意味します.

DAML入門

DAMLチュートリアルのこのセクションでは、DAMLブロックチェーンチュートリアルのスタートガイドを調べます。 DAMLを使用する前に、DAMLをインストールする必要があります.

DAMLを使用するには、2段階のプロセスに従う必要があります.

1)依存関係のインストール

DAMLを使用するには、最初に依存関係をインストールする必要があります。これを行うには、SDKをダウンロードしてオペレーティングシステムにインストールする必要があります.

それ以外に、以下もあるといいですね

  • Visual StudioCodeまたは互換性のある統合開発環境
  • JDK8以降.

2)SDKのインストール

Windowsを使用している場合は、 リンクして、実行可能ファイルをダウンロードします.

LinuxまたはMACの場合、curlを使用して次のコマンドを実行する必要があります.

カール–sSL https://get.daml.com/ | sh

PATH変数に〜/ .daml / binを追加するように求められます。完了すると、DAMLを使用する準備が整います.

DAMLチュートリアルビギナーズガイド

DAMLを使用したことはありませんか?次に、心配しないでください。このセクションでは、DAMLの基本、そのデータ型、テンプレート、関数、式などについて説明します。!

ただし、その前に、(デジタル資産)DA元帳モデルを理解する必要があります。これは、DAMLチュートリアルの重要な部分です。.

DA元帳モデル

DA元帳モデルはDAMLの中核です。仮想共有台帳の助けを借りて、マルチパーティワークフローを提供します。より良いアイデアを得るために、あなたは下のスクリーンショットをチェックすることができます.

出典:DAMLドキュメント

このモデルは、DA元帳構造(何)、整合性モデル(誰が要求できるか)、およびプライバシーモデル(誰が見ることができるか)を定義するために使用されます。.

DA元帳モデルをより深く理解するには、公式ドキュメントを確認してください ここに.

基本契約

DAMLの中核には、DAML元帳があります。トランザクション、テンプレートコントラクト、署名者、DAMLモジュール、ファイルなどの重要な概念を理解するのに役立つ小さなテンプレートについて説明します。.

コミット

DAML元帳には「コミット」リストが含まれています。簡単に言うと、コミットは元帳に送信されたトランザクションです。契約の時点では、実行する必要のあるアクティブなトランザクションと考えることができ、その実行は契約の属性と条件によって異なります。.

DAMLモジュールとファイル

始める前に、DAMLバージョンについて言及する必要があります。これは、DAMLファイルの先頭で実行できます。バージョンは、使用されている言語のバージョンをコンパイラーに通知します.

くそー 1.2

モジュールをインポートするには、「module」キーワードを使用する必要があります.

モジュールトークンここで

コメント

コメントを追加したい場合は、「–」キーワードを使用して追加できます.

—これはコメントです

テンプレート

テンプレートは、契約タイプを定義するために使用されます。これは、契約を実行するためのアクセス権を持つエンティティを定義します。コントラクトはテンプレートインスタンスと考えることができます.

テンプレートトークン

    と

        オーナー:パーティー

    どこ 

        署名者の所有者

ご覧のとおり、「template」キーワードを使用してトークンテンプレートを定義しました。また、議論が必要です。あなたが注目できるもう一つのことは、それが空白指向であるということです。以前にPythonを使用したことがある場合は、コードがどのように構造化され、意図されているかを理解できます。.

最後に、契約インスタンスの署名者を示すsignatoryキーワードが表示されます。これらの当事者の権限は、契約のアーカイブや作成など、契約に対して措置を講じる必要があります。. 

テンプレートを使用してシナリオを理解する

テンプレートの基本構造を理解したので、DAMLチュートリアルで他の2つのテンプレートを使用してシナリオを理解します。ただし、その前に、「」とは正確に何であるかを理解しましょう。シナリオ.

シナリオ

シナリオは、テンプレートが正常に動作しているかどうかを確認するために使用できるテストレシピとして最もよく説明できます。トランザクションテストの実行に使用できます。以下の例を見てみましょう.

token_test_one =シナリオdo

    サム <– getParty“ sam”

    samdoを送信します

        所有者= samでトークンを作成します

上記は、「サム」と呼ばれるパーティーのトークンを扱う基本的なシナリオです。

シナリオを実行するには、DAMLスタジオを使用する必要があります. 

シナリオの詳細については、 シナリオドキュメントページはこちら.

データ・タイプ

他のプログラミング言語と同様に、DAMLもデータ型をサポートしています。データ型を使用すると、変数を定義してそこにデータを格納できます.

簡単にするために、テンプレートをデータベーステーブルと考えてみましょう。これで、テンプレートにデータを保存し、テンプレートの設計を通じてデータを簡単に管理できるようになりました。.

DAMLには多くのネイティブデータ型があります。これには次のものが含まれます。.

  • パーティ→エンティティIDを保存します。当事者は取引を提出し、契約に署名することができます.
  • テキスト→Unicode文字を格納します
  • Int→64ビット整数を格納します
  • Decime→固定小数点数を格納します
  • 日付→日付を保存
  • 時間→UTCで時間を保存します
  • RelTime→時差を格納します
  • ContractId→コントラクトタイプへの参照

以下は、いくつかのネイティブタイプを理解するためのコードです.

native_test =シナリオdo

  サム <- getParty“ Sam”

  ミステリオ <- getParty「ミステリオ」

  しましょう

    my_int = –657

    my_dec = 0.001:10進数

    my_text =“ Sam”

    my_bool = False

 

  アサート(サム/ =ミステリオ)

  アサート(-my_int == 123)

  アサート(1000.0 * my_dec == 1.0)

  アサート(my_text ==“ Sam”)

DAMLは、タプル、リスト、レコードなどの他のデータ型もサポートします. 

DAMLのデータ型については、ドキュメントページをご覧ください。 ここに.

選択肢を使用したデータの変換

DAMLは不変性をサポートします。つまり、データを更新する必要があるときはいつでも。新しいデータを使用して新しい契約を作成する必要があります。ただし、変更や修正が必要なものは常に非常に小さいため、常にそうとは限りません。たとえば、会社は電話番号を変更して、 選択肢.

DAMLドキュメントにある例を見てみましょう.

テンプレート連絡先

  と

    オーナー:パーティー

    パーティー:パーティー

    住所:テキスト

    電話:テキスト

  どこ

    署名者の所有者

 

    コントローラの所有者はできます

      UpdateTelephone

        :ContractId連絡先

        と

          newTelephone:テキスト

        行う

          これを作成する

            電話= newTelephone

上記のコードのほとんどは自明です。ここで知っておく必要があるのは、「UpdateTelephone」と呼ばれる選択肢を定義したことだけです。

選択肢は、委任として使用することもできます。最後に、それらは元帳モデルに統合することもできます. 

DAMLの選択の詳細については、公式ドキュメントページをご覧ください。 ここに.

契約への制約の追加

「ensure」キーワードを使用して、DAMLコントラクトに制約を追加することもできます。 assert、abort、errorキーワードを利用する他のメカニズムを使用して、コントラクトに制約を追加することもできます。.

ただし、その前に、契約で適切なテンプレートの前提条件を設定する必要があります. 

制約と制限の詳細については、ドキュメントを確認してください。 ここに.

締約国と権威

DAMLには、パーティを処理し、契約へのアクセスを許可する適切な方法があります。それらを使用して、権限を渡すだけでなく、元帳の動作を変更できる高度な選択肢を作成することもできます。この柔軟性は、当事者に物事を変更するのに十分なツールを提供し、契約の核となるアイデアをそのまま維持するために重要です。. 

たとえば、提案-承認ワークフローを使用して、IOUの失効を防止したり、1回限りの承認を実行したりできます。 DAML内には、ほぼすべてのシナリオにソリューションを提供するためのオプションがたくさんあります。.

政党と当局についてもっと読む ここに.

結論

これで、DAMLチュートリアルは終了です。このチュートリアルでは、DAMLとそれが特別な理由について学ぶことができました。また、DAMLの内部動作と、データ型、シナリオなど、プログラミング言語の他の重要な側面についても学びました。これらの重要な概念は、将来行う予定のDAMLプロジェクトに参加するのに役立ちます。.

では、DAMLについてどう思いますか?分散型アプリケーションを作成するためのユビキタスプログラミング言語になる可能性があると思いますか?以下にコメントしてお知らせください.