您在寻找 DAML 教程吗?如果你这样做了,那么你来对地方了。在本文中,我们将做一个适当的 DAML 区块链教程。

本教程将介绍对 DAML 的基本了解、为什么需要它以及代码示例以使其更有意义。如果您是初学者,您将找到开始使用 DAML 的教程。简而言之,这是一个适合初学者的完美 DAML 教程。但是,这不是一个完整的 DAML 开发教程,因为我们不会在教程中构建任何完整的应用程序,因为它超出了本文的范围。

DAML 教程:DAML 入门

DAML 教程

那么,什么是 DAML?让我们探索一下。

什么是 DAML?

DAML 是一种用于开发分布式应用程序的开源编程语言。它让开发人员能够简洁、快速、正确地创建这些分布式应用程序。

Hyperledger 维护 DAML 并使其成为其生态系统的一部分。这也使 DAML 成为在领先的区块链平台之上运行的编程语言之一。是的,它被多个平台接受。它还使开发人员可以轻松快速地开发他们的应用程序,然后决定他们想要在哪里部署它。

是什么让 DAML 如此特别?

DAML 是一种用于构建分布式语言的编程语言。随着越来越多的公司了解分布式应用程序的重要性,DAML 为这些公司及其开发人员提供了实现目标的工具。事实上,它是让您控制分布式应用程序的神奇工具之一。

DAML 正面解决了困难的设计问题,因为它为分布式状态同步和密码学等复杂问题提供了解决方案。为了实现目标,它被重新设计。 

当开发人员编写他的区块链应用程序时,底层设计或实现是抽象的。它让开发人员专注于抽象需求,让 DAML 处理所有繁重的工作。通过了解 DAML 的特殊性,您可以更好地了解使用我们的 DAML 教程学习 DAML。

DAML 特征

在我们的 DAML 教程的这一部分中,我们将了解 DAML 的关键特性。

数据模型:DAML 让开发人员可以轻松地为他们的应用程序创建复杂的数据方案。这使得设计和实施复杂的需求或业务流程变得容易。

细粒度权限:DAML 合约经过微调以设置权限。这意味着开发人员可以设置谁可以签署合同,谁可以看到它,以及在什么条件下。

业务逻辑:业务逻辑也可以轻松集成。开发人员可以编写合约、断言、参数等所需的操作!

基于场景的测试:基于场景的测试也可以使用 DAML。它允许开发人员测试您的去中心化应用程序的业务逻辑和其他方面,例如工作流。

运行时功能

除了以上四个核心功能,我们还有 DAML Runtime。运行时是指应用程序在执行期间创建的环境。在这种状态下,它具有使程序高效运行的关键功能。通过在 DAML 教程中了解它们,您将能够巩固您对 DAML 的学习。

让我们在下面谈谈它们。

存储抽象→ 存储抽象提供了一个持久层,确保所有 DAML 程序都与存储无关。简单来说,DAML 程序不依赖于选择的存储,因为它可以将所述数据转换为可消化的格式。

存储抽象

授权检查→授权检查合同中的所有操作。如果动作没有通过适当的授权,那么它就不会被允许执行。

daml 教程授权检查

然后合约将抛出运行时错误并通知买方或开发商。

daml 教程错误。

问责制跟踪 →运行时还负责问责制跟踪。它确保各方自愿签订协议。为实现这一目标,需要签署人签名。这样做是为了保护买家免受组织者或卖家的任何强硬行为。 

原子可组合性 → DAML 支持原子设计。这意味着所有操作都是原子执行的,因此可以提交或根本不提交。在执行合同方面没有中间立场。这样做是为了确保工作流程的安全并让利用者远离。

无双花→ 使用 DAML 运行时,合约旨在确保不会出现双花。这意味着同一份合约不能被执行两次。 

需要知道的隐私 → DAML 提供了一个子事务级别,这使得信息在获得批准后可用。

确定性执行→ 最后,运行时支持确定性执行。这意味着任何动作的效果都取决于账本的当前状态。

DAML 入门

在我们的 DAML 教程的这一部分中,我们将研究 DAML 区块链教程的入门指南。在您可以使用 DAML 之前,您需要安装它。

要使用 DAML,您需要遵循两步过程。

1) 安装依赖

要使用 DAML,您首先需要安装依赖项。为此,您需要下载 SDK 并将其安装在您的操作系统上。

除此之外,最好还具备以下条件

  • Visual Studio Code 或任何兼容的集成开发环境
  • JDK 8 或更高版本。

2)SDK安装

如果您使用的是 Windows,您可以转到链接,并下载可执行文件。

对于 Linux 或 MAC,您需要使用 curl 运行以下命令。

curl –sSL https://get.daml.com/ | xu

它会要求您将 ~/.daml/bin 添加到 PATH 变量中。完成后,您就可以使用 DAML。

DAML 教程初学者指南

您从未使用过 DAML 吗?那么,不用担心,在本节中,我们将介绍 DAML 的基础知识,它的数据类型、模板、函数、表达式等!

但是,在我们这样做之前,我们需要了解(数字资产)DA Ledger 模型。它是我们 DAML 教程的重要组成部分。

DA分类帐模型

DA Ledger Model 是 DAML 的核心。它借助虚拟共享分类帐提供多方工作流程。为了更好地了解,您可以查看下面的屏幕截图。

DAML-Tutorial-Ledger-Model

资料来源:DAML 文档

该模型用于定义 DA 账本结构(什么)、完整性模型(谁可以请求)和隐私模型(谁可以看到)。

基本合同

DAML 的核心是一个 DAML 分类帐。我们将通过一个小模板来帮助我们理解基本概念,包括交易、模板合同、签署者、DAML 模块和文件。

提交

DAML Ledger 包含一个“提交”列表。简单来说,提交是向账本提交的交易。至于合约,你可以把它看成是一个需要被执行的活跃交易,它的执行取决于合约的属性和条件。

DAML 模块和文件

在开始之前,您需要提及 DAML 版本。它可以在 DAML 文件的顶部完成。该版本将通知编译器正在使用哪个版本的语言。

亲爱的 1.2

要导入模块,您需要使用“模块”关键字。

模块 Token where

评论

如果要添加评论,可以使用“-”关键字来完成。

——这是一条评论

模板

模板用于定义合同类型。这定义了有权执行合同的实体。您可以将合约视为模板实例。

模板令牌

        拥有者 派对

在哪里

签字

如您所见,我们使用“template”关键字定义了一个 Token 模板。它也需要一个论据。您可以注意到的另一件事是它是面向空白的。如果您以前使用过 Python,您将了解代码的结构和意图。

最后,您可以看到 signatory 关键字,它表示合约实例的签署人。需要这些方的权限才能对合同采取行动,包括存档和创建合同。 

使用模板了解场景

现在我们已经了解了模板的基本结构,现在我们将了解使用 DAML 教程中的其他两个模板的场景。但是,在我们这样做之前,让我们先了解一下究竟什么是“场景”。

设想

一个场景可以最好地描述为一个测试配方,它可以用来检查模板是否按照它们应该的方式运行。它可用于执行事务测试。让我们看一下下面的例子。

token_test_one = 场景

    山姆 <– getParty “山姆”

    提交山姆

owner = sam        创建 Token

以上是处理名为“sam”的一方的代币的基本场景。

要运行该场景,您需要使用 DAML 工作室。 

数据类型

就像任何编程语言一样,DAML 也支持数据类型。数据类型允许您定义一个变量并在那里存储数据。

为了让您更简单,让我们将模板视为数据库表。现在,您可以将数据保存在模板中,并通过模板设计帮助自己轻松管理它们。

DAML 有许多本机数据类型。它包括以下内容。

  • 派对 → 存储实体身份。各方可以提交交易并签订合同。
  • 文本 → 存储 Unicode 字符
  • Int → 存储 64 位整数
  • Decime → 存储定点数
  • 日期 → 存储日期
  • 时间 → 以 UTC 存储时间
  • RelTime → 存储时差
  • ContractId → 对合约类型的引用

下面是理解一些本机类型的代码。

native_test = 场景

  山姆<-getParty “山姆”

  Mysterio <- getParty “Mysterio”

    我的整数 = – 657

    my_dec = 0.001  十进制

    my_text = “山姆”

    my_bool = 假

 

  断言 (Sam /= Mysterio)

  断言(-my_int == 123 

  断言(1000.0 * my_dec == 1.0 

  断言(my_text == “山姆” 

DAML 还支持其他数据类型,包括元组、列表和记录。 

使用选择转换数据

DAML 支持不变性。这意味着每当需要更新数据时;需要使用新数据创建新合同。然而,情况并非总是如此,因为总是有一些非常小的东西需要改变和修改。例如,一家公司可能希望更改其电话号码以使用选项来实现。

让我们看一下 DAML 文档中的示例。

模板联系方式

    拥有者 派对

    派对 派对

    地址 文字

    电话 文字

在哪里

签字

 

控制器所有者可以

      更新电话

ContractId 联系人

          新电话 文字

          创建这个

            电话 = 新电话

上面的大部分代码都是不言自明的。您需要知道的唯一一件事是我们定义了一个称为“UpdateTelephone”的选项。

选择也可以用作委托。最后,它们也可以集成到分类帐模型中。 

向合约添加约束

您还可以使用“ensure”关键字向 DAML 合约添加约束。您还可以使用其他机制,利用 assert、abort 和 error 关键字向合约添加约束。

但是,在您这样做之前,您需要在合同中设置适当的模板前提条件。 

当事人和权威

DAML 有一种适当的方式来处理各方并授权他们访问合同。您不仅可以使用它们来传递权限,还可以编写可以更改分类帐工作方式的高级选项。这种灵活性很重要,因为它为各方提供了足够的工具来改变事物并保持合同的核心理念不变。 

例如,您可以防止 IOU 撤销或更好地使用建议-接受工作流程进行一次性授权。DAML 中有很多选项可以为几乎所有场景提供解决方案。

在此处阅读有关各方和当局的更多信息

结论

这使我们结束了 DAML 教程。在本教程中,我们设法了解了 DAML 以及它的特别之处。我们还了解了 DAML 的内部工作原理和编程语言的其他关键方面,例如数据类型、场景等。这些关键概念将帮助您参与您将在未来进行的 DAML 项目。

发表评论

后才能评论