本文提供了 DAML 的全面视图——智能合约的开源语言。您还将了解 DAML 的优势以及与其他语言的比较。
随着区块链技术的发展,需要改进用户操作和交互的系统。已经有很多改进发生了,尤其是随着企业区块链继续流行。快速变化的区块链环境中的最新发展是 DAML。
自从互联网诞生以来,数据不变性是许多开发人员都无法理解的属性。因此,在线生态系统中的不良行为者利用更改数据的能力实施各种犯罪。
然而,当开发人员展示了在没有中央参与者的环境中进行交易的能力时,区块链被证明更为重要,就像在传统金融世界中发生的那样。
除了这些公共分类账之外,私人、许可分类账的巨大市场也已经起飞。无论是由合法授权的中央方控制,还是由具有共同目标的互不信任的参与者组成的财团控制,私人分类账都提供与公共分类账相同的未来证明和不变性,并增加了维护数据隐私的能力。
无论给定的分类账是公共的还是私有的,支持区块链生态系统中的对等点与隐私保证进行交互的能力是通常被称为智能合约的应用程序类别。
本文稍后将详细讨论什么是智能合约以及它们在 DAML 环境中的重要性。
什么是 DAML?
在技术方面,DAML 代表数字资产建模语言(DAML 完整形式)。但是,技术术语可能会造成混淆。因此,对于更简单的 DAML 含义,可以将其视为智能合约的开源语言。
从本质上讲,DAML 是一种智能合约语言,它使开发人员能够为各种区块链、DLT甚至标准数据库架构准确地编写多方协议。
由 Digital Asset 发起,为这种应用类型(智能合约)注入了新的活力,使同行能够在信任的环境中进行交易。基本上,这是一种从 Haskell 中汲取灵感的编程语言,它有助于为分布式业务工作流创建智能合约。
值得注意的是,该语言使开发人员能够减少处理加密和区块链的具体细节所花费的时间。相反,开发人员将时间集中在为业务流程开发编程解决方案上。
DAML – 简单解释智能合约的语言
DAML 的属性
提供一种编写合同的方法
与程序员用来编写智能合约的其他语言一样,DAML 使对等方能够制定和履行协议。值得注意的是,该语言描述了合同的形成过程、协议中的关键方以及对合同具有授权的各方。
除了定义合同的形成过程之外,该语言还负责对合同、权利、当事人、授权和义务等概念进行编码,因为开发人员只需要处理他们的业务逻辑;任何与密码学中的散列和共识算法相关的繁重工作都被抽象出来并由运行时处理。
这种将契约元素直接表达为本地语言特性意味着 DAML 架构可以在开发周期的早期自动检查系统代码是否存在问题。此外,系统具有自行推理业务逻辑的能力。
它是开源的
2019 年 4 月 4 日,DAML 背后的公司 Digital Asset 宣布,该程序的源代码将免费提供给所有开发人员。该项目的这种开源意味着不同的各方将能够使用 DAML 通过区块链技术来建模和执行合同,而不必担心供应商锁定。
根据公告,开发人员和其他相关方将能够在非常宽松的 Apache 2.0 许可下访问 DAML 语言、源代码、软件开发工具包 (SDK) 和运行时。
可用于私有执行环境
公开分布式账本的一个缺点是平台上的每个节点都可以查看智能合约中存在的数据。因此,需要将交易细节保密的同行发现无法通过公共区块链网络进行交易。
特别是,这是阻碍企业区块链完全采用的主要绊脚石。这就是为什么,如前所述,私人DLT的受欢迎程度飙升。
DAML 和私有 DLT 平台的结合为这种情况提供了补救措施。值得注意的是,这种富有表现力的语言背后的团队优化了 DAML,因为它可以在私有执行环境中完美运行。也就是说,合同中携带的信息是保密的,只有授权方才能访问它。
人类和机器可读
DAML 在不止一种意义上是革命性的。值得注意的是,系统的设计方式是机器和人类可以理解合同中包含的信息。
这种能力的影响是巨大的。由于 DAML 非常人性化,因此参与制定合同的专业人员将很容易了解细节。
例如,律师可以通过阅读和评估合同的 DAML 编码来轻松理解合同的含义。同时,DAML 为开发人员提供了适当程度的特异性来计算合同的重要方面,例如现金流、客户概况和风险敞口。
DAML 是如何工作的?一个快速的函数式 DAML 教程
DAML 的工作方式与所有其他智能合约编写语言非常相似。特别是,该语言在两个主要级别上工作,即语言本身和运行时。
语言就像技术的主要部分。这使开发人员能够在编写协议和促进交易方面完成他们需要做的所有工作。
因为语言和运行时之间有非常干净和抽象的 API,所以运行时可以适应在各种区块链、DLT 和其他平台上执行。
这为 DAML 应用程序提供了跨提供 DAML 支持的平台移植的灵活性。这类似于 JVM 允许 Java 应用程序在任何支持 JVM 的平台上不加改变地运行。
安装软件开发工具包(SDK)后,开发者只需要运行一些特定的文件,设备就可以支持这些操作。
数据建模
编写智能合约时需要执行的主要和最重要的任务之一是对该合约使用的数据进行建模。通常,数据建模功能很复杂,可能会导致非常复杂的数据结构,具体取决于合同的复杂程度和参与方的数量。
与其他智能合约语言不同,DAML 使开发人员能够动态指定他们的数据模式,直接将其嵌入到合约的执行语言中。这大大简化了数据建模的任务,并减少了由于数据模式和应用程序逻辑之间的不匹配而引入错误的机会。
模板大纲结构
DAML 开发人员通过称为“模板”的简单且定义明确的结构来指定合约,其中包含合约的数据模型和参数。
例如,参数包括给定合同的签署人(必须授权对合同执行操作的参与者)和观察者(协议中的那些参与者,他们只是在那里查看合同以及合同的作用,但未获得授权采取行动)。模板结构的另一个方面包括协议,它基本上是协议的细节和合同内容的表示。
模板可以指定一个或多个前提条件,以确保仅当合约的创建者达到某个阈值时才创建合约。模板大纲结构的最后一个元素是“选择”。这定义了合同执行者可以行使的选择范围。
选择结构
模板中的一个主要结构是选择结构,它详细说明了合同方可以根据模板的性质选择的选择。
选择结构识别负责执行选择的控制者或一方。此结构的其他元素包括可消费性、名称、返回类型、选择参数和选择主体。
比较 DAML 与智能合约
了解智能合约
如前所述,智能合约是分布式账本技术(DLT)的重要组成部分。在公共区块链中,两个匿名方可以创建智能合约以促进特定交易,但数据仍存储在公共分类账中。这就是说,网络中的所有参与者都可以查看交易的细节以确定其真实性。因此,信任的执行是可能的。
在私人或许可的 DLT 中,所有各方都是已知的,但只有参与给定交易的各方才能访问该交易的数据。信任仍然通过允许参与者验证他们有权访问的所有交易的机制来维持。
智能合约具有显着特征,这也使它们具有革命性。
例如,智能合约可以有一个自动执行机制,可以在设定的截止日期(也称为触发事件)的提示下启动。在公共网络中,任何相关方都可以分析智能合约的活动,以便识别任何异常情况。
此外,交易者可以使用智能合约来掌握市场脉搏。这包括预测市场趋势和不确定性的能力。
智能合约有许多好处,包括数据的不变性。在基本术语中,不变性是指数据不可能从其原始状态更改。也就是说,不能以任何可以想象的方式擦除或更改数据。
数据的不变性使智能合约始终准确。第三,在某些情况下,智能合约使对等方无需中介即可直接进行交易。因此,这样的交易非常便宜,有时甚至不花一毛钱。
智能合约的属性
义务和权利证明
智能合约必须具备的一个关键特征是,人们不必在不适应整个过程的情况下进行交易。从本质上讲,同意签订合同是完全自愿的,但后果是强制性的。因此,用户必须可靠且巧妙地考虑所签署合同的未来影响。智能合约必须保证始终如此,这可能很难做到。
交易有效性验证
如前所述,有关合同细节的信息很容易从分类账中追踪。因此,这满足了合同的要求,即可以验证其真实性和有效性。
与 DAML 的比较
从本质上讲,从前面可以明显看出,DAML 产生了智能合约的一个子集,它能够纠正现有语言的缺陷。如前所述,公共网络上的智能合约将其数据存储在公共分类账上这一事实使得智能合约对机密交易没有吸引力。
但是,当与专用网络结合使用时,DAML 可确保只有授权合同的各方以及获得查看详细信息的授权方才能访问合同信息。这就是为什么有见识的观察者认为这种语言对于金融机构和其他需要交易保密的机构来说是杀手级功能的原因之一。
尽管如此,在共享书面协议方面,作为智能合约语言的 DAML 与传统智能合约不同。像Solidity这样的智能合约语言公开共享信息,因此整个网络都可以访问详细信息。这就是为什么人们争论 DAML 与可靠性的原因。
相反,以 DAML 编写的协议仅在需要知道的基础上提供。这就是说,不受欢迎的第三方无法访问详细信息。特别是,该语言利用了额外的安全层,因此数据甚至不提供给不受欢迎的各方。
DAML 的好处
开源
区块链平台可能只有 10 年的历史,但它正在迅速发展。今天,技术正在以前所未有的速度彻底改变行业。这种快速增长的原因是区块链是开源的,任何开发人员都可以对其进行修补,以便为某个问题提供最佳解决方案。
有趣的是,DAML 自 2019 年 4 月 4 日起也是开源的。也就是说,在智能合约和区块链生态系统方面,开发人员可以自由修改 DAML 代码以创建最具创新性的解决方案。
启用私人交易
传统的智能合约语言不包含具有严格限制的原生功能,协议可以私有化。本质上,协议中的信息可供所有参与者访问,包括不受欢迎的第三方。
但是,如前所述,DAML 包含额外的安全层,其中此类信息只能由授权方访问。
加速企业区块链采用
随着区块链向企业用例过渡,阻碍技术发展的问题之一是信息的分布式特性。值得注意的是,如前所述,已经有一些努力,比如创建私有区块链平台,所有参与者在进入之前都必须获得许可。
然而,企业仍然面临着竞争对手了解其战略的威胁。但是,DAML 的进入是解决该问题的潜在解决方案。特别是,该语言将协议数据限制为仅授权访问它的那些节点,并且有关协议的信息对其他用户不可用。因此,企业没有任何借口,只能加入并利用企业区块链的潜力。
用于验证模型正确性的内置支持
鉴于区块链的早期性质,大多数操作和模型都是实验性的和新颖的。因此,需要不断验证模型的正确性。幸运的是,DAML 带有内置支持,可以自动验证模型的正确性。
存储抽象
DAML 运行时是健壮的,并执行重要的操作以使该语言优于现有的替代语言。例如,运行时抽象了账本的细节,开发人员可以专注于合约的逻辑。
将 DAML 与其他替代智能合约语言进行比较
区块链生态系统仍在增长,这意味着没有标准的运营系统。这也意味着在智能合约的编写中没有一种单一的语言占主导地位。因此,除了 DAML 之外,还有许多其他替代方案。
DAML 与 Solidity
Solidity是最早流行的用于编写以太坊智能合约的语言之一。这种流行是由于以太坊区块链平台是智能合约的首选网络。
作为一种编程语言,Solidity 主导了以太坊平台。该语言使用类似于 JavaScript 的高级语法和脚本。特别是,该语言对于增强以太坊虚拟机至关重要。Hyperledger Burrow 和 Monax等其他几个私有区块链使用该语言进行初级开发。
此外,以太坊开发人员使用 Solidity 编写了 0.4.0 版软件。这种语言的美妙之处在于它不会破坏区块链网络的功能。
此外,该语言对于创建在以太坊虚拟机 (EVM) 上运行的智能合约至关重要。该语言增强了应用程序自我强化智能合约固有的业务逻辑的能力。因此,以太坊生态系统中的交易方会留下其交易的权威记录,以促进可验证性。
与语言类似于 Haskell 的 DAML 不同,Solidity 使用接近 ECMAScript 的语法。但是,Solidity 具有额外的功能,例如可变返回类型和静态类型的能力。此外,用 Solidity 编写的合约支持通过 C3 线性化促进的多重继承。
Actulus 建模语言
自从区块链开始走企业方向以来,各种金融领域特定的语言出现了,以解决最初语言中发现的一些问题。
除了 DAML 和 Solidity,Actulus 建模语言 (AML) 还帮助解决了养老金和保险领域的计算问题。特别是,AML 是一个多方企业,它包含 Edlund A/S 和哥本哈根 IT 大学。
与 Java 和 C/C++ 等通常适用于各种设置的语言不同,AML 是特定于域的。这就是说该语言对特定目的有用,或者可以创建在特定平台上运行的应用程序。因此,该语言无法创建独立的程序、接口和应用程序。
BOScoin 信托合约
这是另一种使用 Web 本体语言 (WOL) 创建智能合约的替代解决方案。BOScoin 始终采用定时自动机语言 (TAL) 来增强合约的可信度和稳健性。特别是,该语言创建了有助于创建去中心化应用程序(DApp) 的信任合约。从本质上讲,智能合约增强了 DApp 的可信性。
与 DAML 类似,BOScoin 不是图灵完备的。相反,这些语言是可确定的,这将它们与以太坊智能合约的图灵完备特性区分开来。与以太坊智能合约不同的是,BOScoin 信任合约使用了一种综合性更强的本体语言。特别是,这是由于团队需要创建一个平台,开发人员可以在该平台上提出可靠的合同。
DAML 的未来会怎样?
就目前而言,区块链环境充斥着智能合约语言。多种语言使区块链应用程序难以互操作,从而延迟了区块链的大规模采用。
有趣的是,仅Hyperledger平台就使用了超过六种语言,包括在Hyperledger Sawtooth中创建智能合约的 DAML 。
但是,DAML 运行时的抽象能力有助于解决全面创建的智能合约中的许多错误问题。它还使 DAML 应用程序可移植到其他平台。除了 Digital Asset 的平台,VMware Blockchain 和 Sawtooth 还宣布支持 DAML,这表明其他平台可能会采用它。
因此,DAML 语言很可能在未来几十年成为通用的智能合约语言。