Aiken:智能合约的未来

Aiken: the Future of Smart Contracts (cardanofoundation.org)

Aiken 是一种新颖且易于使用的编程语言,专门用于简化和增强 Cardano 上智能合约的开发。 它具有易于学习的语法,专为与其他工具和语言轻松集成而设计,还包括满足开发人员当前期望的各种最先进的功能。

以真正的开源方式,Aiken 产生于不同个人的不懈努力。 在 TxPipe 的支持下最初启动后,新的开发人员对该项目表现出了兴趣,决定投入时间和精力来协助它。 Cardano 基金会也看到了 Aiken 的潜力,它如何通过提供智能合约开发和优化的开发人员体验来促进 Cardano 生态系统的发展。 我们邀请大家更多地了解 Aiken,并热烈欢迎任何有兴趣参与最近发布的 alpha 阶段的人。

感知差距
众所周知,Haskell Plutus 平台——迄今为止 Cardano 上唯一完全开发的智能合约语言——经常变得难以使用甚至令人沮丧。 事实上,建立一个工作的 Haskell 环境可能具有挑战性,尤其是当它涉及临时编译器插件时,例如 PlutusTx——用于为 Cardano 链编译 Haskell 源代码的 Glasgow Haskell 编译器 (GHC) 插件。 语言服务器等附件——通过与代码编辑器集成来增强编程体验的工具——通常不适用于默认安装设置,并且配置起来很麻烦。 此外,由于 Plutus 平台与 Haskell 的现有语言相关联,但又添加了不同于标准 Haskell 的不同内置库、生态系统和程序语义,因此经常会导致混乱的情况——即使对于经验丰富的 Haskell 也是如此。 最后,Plutus 平台不鼓励将其他语言用于链下代码,从而阻止团队使用他们常用的工具和语言来处理最终代表他们去中心化应用程序的大部分内容。 虽然可以为所有链下基础设施采用不同的语言,但与链上代码的接口可能很笨重且难以排除故障。 然而,即使存在这些障碍,许多项目仍选择为其链下代码采用不同的语言。

然而,这不一定是唯一的方法。 Rust 和 Elm 等语言将编写代码的体验推向了新的高度。 例如,Elm 通过将程序与外部世界之间的边界保持在清晰和安全的分隔之后,从而限制正在编写的代码与外部代码、系统或应用程序编程接口 (API) 交互的方式,从而避免出现运行时错误。 最重要的是,它使编程成为一种乐趣,并大大降低了语言入门门槛,因此任何人都可以立即变得高效——即使是在大型代码库上。

另一方面,Rust 重新连接了手动内存管理和可变性,但采用了一种创新方法,可以防止简单但潜在的灾难性错误。 它还不断突破工具可以为开发人员做什么的界限,以及开发人员如何在日常开发实践中嵌入更多智能。

这些语言和平台为开发人员提供了更加无缝的开发体验,使编写高质量和健壮的代码变得更加容易。 因此,不符合这些标准的生态系统可能难以吸引和留住务实的开发人员。 艾肯的出现正是为了弥补这一差距。

Cardano 的架构和智能合约虚拟机允许在其上创建第三方工具和新语言。 事实上,Cardano 账本并没有在链上执行 Haskell。 每个节点都带有一个 Plutus 解释器,负责在链上运行脚本验证器。 该解释器运行一种称为 Untyped Plutus Core (UPLC) 的低级语言。 这是 Haskell Plutus 平台编译成的语言。 现在,艾肯也是如此。

艾肯代码图

介绍 Aiken 及其运作方式
Aiken 引入了一种新的、易于学习的编程语言,旨在将 Cardano 智能合约开发体验提升到开发人员在 2023 年所期望的水平。由于它是为 Cardano 专门构建的,它包括各种特定领域的便利 使开发过程更简单、更高效。 其中包括:

有用且快速的编译器反馈
自动代码格式化
具有编辑器集成的语言服务器
测试加基准测试框架
从代码注释生成的文档
可互操作和可移植的二进制规范格式 (CIP-0057)

艾肯代码示例1

Aiken 旨在减少开发人员开始和完成项目所需的时间。 该团队希望在不妥协的情况下,将目前需要多天的设置体验转变为 10 分钟的快速入门任何安全和质量方面。 出于这个原因,Aiken 具有熟悉的 C 系列语法,同时仍然是一种纯函数式语言。 在许多方面,它在语法上类似于 Rust 和 TypeScript。

艾肯代码示例2

简要解释一下这个过程,编译器是一个程序,它将用一种编程语言编写的代码转换成可以由计算机执行的代码——比如 CPU 和低级机器指令。 就 Aiken 而言,编译器采用用 Aiken 编写的代码,对其执行各种检查,然后输出可在 Cardano 区块链上使用的 Untyped Plutus Core 程序。 从技术上讲,Untyped Plutus Core 是一种多态 lambda 演算,添加了特定于 Cardano 链的内置函数,例如用于验证签名。 这些将一种编程语言翻译成另一种编程语言的过程通常不是手写的。 相反,机器应该编写和解释它们。 编译器允许开发人员使用更易于学习和推理的更具表现力的语言,并且仍然可以生成底层执行引擎理解的机器指令。 它们可以在处理台式机或互联网浏览器时应用,或者在我们的例子中,应用在 Cardano 区块链上。

艾肯你好世界

编写我们自己的编译器意味着我们可以寻找特定于编写智能合约的案例,并提供编译器更好的反馈,以及编写合约时的额外指导。 此外,该语言旨在提高可读性,使其易于审核并减少出错的可能性。

除了编程语言,Aiken 还提供了一个工具包,用于处理 Cardano 智能合约,特别是低级别的 Untyped Plutus Core。 Aiken 提供了一种可将链上代码反编译为更高级别表示的方法。 它可以在交易上下文中评估脚本并报告执行成本,类似于嵌入在每个节点中的 Cardano 分类帐如何执行此操作。

艾肯的历史、现在和未来
该项目始于来自不同领域的工程师之间的对话,在 TxPipe 的最初支持下从共同的目标和共同的理念中得以实现。 没过多久,卡尔达诺基金会就决定支持该项目并加速其发展。 如今,该项目的规模已经超过了两个发起人的规模,并开始在整个 Cardano 社区扎根。

“当第一次提到从头开发新语言和工具链的想法时,它看起来相当令人生畏,这需要一个由 10 名工程师组成的团队和多年的开发。

在不到一年的时间里,Aiken 已经准备好发布 alpha 版本,超出了所有预期。 核心团队的技能和专业知识确实非常出色。 结果证明了开源开发的力量和卡尔达诺社区内的协作精神。

在 Cardano 基金会提供的巨大支持下,我相信 Aiken 将对我们的生态系统产生深远影响,促进创新并赋予开发人员权力。”

圣地亚哥卡穆加 - TxPipe

Aiken 是开源的一个典型例子,来自 Cardano 社区的贡献者在许多方面进行合作并分享他们的反馈。 此外,为了围绕该语言建立一个强大的生态系统,Aiken 团队确保提供一个包管理器,以鼓励开发具有干净且易于托管的生成文档的开源库。 我们期待看到社区将开发和共享的 Aiken 库。

为了帮助任何有兴趣开始使用 Aiken 的人,我们创建了一个“hello world”教程,作为那些想要开始使用的人的快速入门指南。 甚至在发布任何公告之前,已有 30 多位先驱完成了本教程,我们鼓励其他人通过亲自尝试本教程来加入不断壮大的 Aiken 社区。 除了教程之外,Aiken 团队还编写了大量关于语言以及如何在 Cardano 上编写智能合约的文档,所有文档都托管在公共存储库中并且易于贡献,因此它也可以随着时间的推移而改进和增长。

我们 Cardano 基金会和整个 Aiken 团队都很高兴看到 Aiken 进入其正式的 alpha 阶段。 虽然这意味着所有主要功能都已实现,但一些粗糙的边缘和错误可能仍需要解决。 同样,即使 alpha 已经具备了为 Cardano 高效编写、测试、记录和基准测试链上合约的基本功能,在生产中使用 Aiken 时也要谨慎行事。 我们不建议在此阶段这样做。

Aiken 团队今年将对 Aiken 进行全面审计,以确保其符合企业级工具包的稳健性标准。 如果艾肯要负责管理大量资产,那么提供所有必要的保证。 稳健性是 Aiken 哲学的一个组成部分,与易用性并驾齐驱。 通往主网的旅程的一部分需要尽早让开发人员入职,因为只有真实的用户反馈才能让我们有希望从长远来看正确塑造这个工具。 从今以后,我们呼吁第一批 Aiken 先驱加入我们的冒险,帮助我们使 Aiken 成为 Cardano 智能合约开发的未来。

经过几个月的紧张工作,我们很高兴达到了这个里程碑,感谢许多确保项目到达这个阶段的人。 没有什么重要的东西是单独建造的。 如果没有多位贡献者的支持,他们付出了时间和精力来改进 Aiken,Aiken 不可能熬过这么多艰难险阻。

无论是通过制作“hello world”教程、提供反馈、展开讨论,还是编写一些 Aiken 代码,Cardano 基金会都邀请每一个人进一步参与构建 Aiken。 我们希望它能为 Cardano 上的智能合约带来光明的未来。