DAML基于哈士奇的区块链语言

471 阅读7分钟

数字资产公司是一家金融科技公司,帮助公司设计和运行下一代的商业应用程序。他们的产品之一是DAML,一种功能性智能合约语言。

虽然我们已经在我们的金融科技功能编程概述中介绍了Digital Asset,但我最近有机会与DAML的开发者倡导者Anthony Lusardi交谈,并深入研究了该产品。在采访中,我们谈到了DAML,函数式编程语言的好处和坏处,以及他们在构建DAML时的实践经验。

你好!你能简单解释一下什么是DAML吗?

当然可以!DAML是一种开源的智能合约语言,根植于Haskell。它的设计使多方/商业实体可以执行工作流程,并在各方之间具有高度的保证和一致性。因此,你有这种事务性语言,每次更新都是原子性的,高水平的,可跨数据持久化后端移植的,并对谁可以在什么时候更新数据有强烈的强制权限。

在更实际的情况下,想象一下你在管理一个操作复杂的工作流程,其中多个不同的利益相关者(即各方)需要看到并与工作流程的不同部分互动,肯定不应该看到其他部分,并且有一个复杂的依赖关系树。今天,实现这样的事情确实很难管理,复杂的访问控制方案在你的程序之外的层面上实现,维护数据隐私也有很大的困难。DAML将这些关注点作为每个类的第一类元素(DAML称之为模板),从而使实现和管理这些类型的工作流变得更加容易。

为什么客户应该选择DAML而不是在以太坊、Tezos或其他公共区块链上建立他们的项目?

这实际上可以归结为他们的需求。如果你建立的东西确实需要无许可、抗审查和完全公开的交易,那么公共区块链可能是一个很好的选择,尽管对于大多数现实世界的应用来说,在低数据存储、低隐私和高成本方面会有很大的折衷。另一方面,DAML不会给你一个无权限的架构,但会让你有高的数据存储,强大的隐私,并大大降低成本。

在实践中,很少有用例真正需要无权限公共区块链的属性。在我看来,公共区块链更适合的是比特币的无权限价值存储/转移。

虽然我认为以太坊上有一些有趣的项目,但我个人认为大多数用例都不需要以太坊的架构,因为除了少数例外,大多数的组件实际上是可以替换的,并由其开发团队进行集中管理。在这种情况下,这些团队是在用操作的便利性来换取去中心化的架构,实际上两者都没有得到。当然,这有待于广泛的理论辩论,这远远超出了这次采访的范围 :)

DAML与Corda和Hyperledger Fabric等其他企业区块链平台的主要区别是什么?

DAML应用程序可以一次性编写并部署在任何支持的平台上,而不需要改变一行代码。这样一来,你用DAML编写的代码与底层后端脱钩,允许更大的架构灵活性。

事实上,DAML实际上是在这些平台(以及其他许多平台)上运行的,它的运行时间与这些平台一起运行,并使用它们进行数据持久化和共识。它甚至可以在PostgreSQL上运行。它是真正的平台无关的。

将DAML建立在Haskell和Scala等函数式编程语言上有什么好处?

很简单。功能性程序员是最好的程序员。

但更严重的是,该语言是基于Haskell的,但它的惯例和差异使其成为独特的自己的语言。一般的好处是高度的可组合性,正如任何用函数式语言写作的人都知道的那样,当你的类型与你的函数和组件相匹配时,就可以很容易地一起工作并相互扩展。函数式语言对于DAML所设计的更多的分布式应用也是有益的,因为它们可以减少错误,并能更好地确保操作是否完成;无论何时你在编写分布式应用,这两点都是非常重要的。

是否有真正有助于智能合约语言开发的语言特点?

最肯定的是。DAML有两个特点确实有帮助。第一个是所有的数据关注点都被布置在模板中,并且是强类型的。在很多方面,这些模板很像指令性语言中的类 但是它们总是会做你所期望的事情。

另一个特点(这确实是针对智能合约的)是DAML把权限当作一等公民,所以我们有观察者、签署者和选择,你可以认为它们分别类似于UNIX的rwx 权限。每个模板都提前指定谁有权在该模板的特定实例上读、写和执行功能(我们在DAML中称之为契约)。

你有没有看到任何非技术上的好处?( 例如,是否更容易雇用优秀的开发人员,等等)

减少代码库的大小和操作的复杂性无疑是好处。它真正的设计是从底层开始的,允许开发人员只专注于业务逻辑,而不必担心后端问题。这些因素反过来使DAML应用程序的维护成本更低,更容易扩展。基本上,所有功能型程序员已经吹捧了很久的好处。

还有一个很大的好处就是可读性。虽然编写DAML需要一个程序员,但许多非程序员只需熟悉一下就能理解DAML合同的大部分内容。这确实是DAML对数据关注和权限的明确性所带来的直接后果。你可以在beer.woah.xyz,查看这种可读性的例子。

缺点是什么?为你的项目选择一种不那么流行的编程语言有什么坏处吗?

当然有,但如果你在读这篇博文,那么你可能已经在使用非主流的编程语言了,这些语言仍然很好,可以让你以主流语言不支持的有效方式完成工作。创新发生在边缘,所以我认为DAML在智能合约领域的好处以及它在我们论坛上的热情和支持的工程师超过了权衡的结果。

实际上,人们最大的担忧基本上是 "如果我选择投入时间学习这种语言,明年它还会存在吗?"对于这一点,答案是肯定的。DAML是一种开源语言,由Digital Asset维护,该公司目前有140多人,并在不断增长。DAML将在未来几年内一直存在。

你对自己选择为项目创建一个FP语言感到高兴吗?

我不认为你可以建立一种非功能语言来完成DAML的工作。它确实是堆栈其他部分的先决条件。所以从这个意义上说,是的,而且这个决定在我加入数字资产之前就已经做出了。

如果你必须给希望进入区块链/DLT领域的客户一个提示,你会怎么做?

如果应用程序需要你首先购买代币来使用它,那就赶紧跑吧。