By George Z. September 5, 2021
5. Plutus 工具
Alonzo 硬分叉通过建立基础设施并添加使用 Plutus 进行功能智能合约开发的工具,为卡尔达诺分类账带来了核心智能合约功能。 这意味着用户、开发人员和组织现在可以基于智能合约解决方案安全地构建去中心化应用程序 (DApps)。开发人员可以使用不同的工具在 Cardano 上评估和部署智能合约。 下面我们来看看这些工具、它们的主要功能并指出使用它们的确切来源。
5.1 Plutus Playground
Plutus Playground 为在 Cardano 区块链上发布智能合约之前编写和测试智能合约提供了一个环境。它是一个用于探索性 Plutus 开发的轻量级、基于 Web 的环境。除了提供用于编写和执行智能合约的基于 Web 的模拟器外,Plutus Playground 还允许开发人员访问已编写的流行智能合约。 Plutus Playground 中提供了可帮助您入门的教程。
Plutus Playground 可通过网络浏览器访问,无需安装软件。界面分为三个部分:
- 编辑
- 模拟
- 交易 模拟器显示了合约在 Cardano 区块链上的表现。这样做的一个重要方面是,它可以作为不具备高级开发人员技能的人的培训工具,因为它展示了工作原理。用户可以定义和修改与合约交互的钱包,以及影响结果的操作。然后可以评估结果以查看区块链上发生了什么以及交易如何发生。有关更多信息,请观看 Plutus 应用程序编译和测试教程或访问 Plutus GitHub 存储库。
5.2 Plutus 应用程序后端(Application Backend)
Plutus 应用程序后端 (PAB) 使开发人员能够与智能合约进行交互。它是一种链下后端服务,用于在整个生命周期中管理和处理应用程序实例的需求。该服务包括与外部客户端(例如钱包前端)的交互,并充当 Plutus 应用程序、节点、钱包后端和最终用户之间的中介。这种交互是通过 PAB 命令和模拟组件实现的,这些组件可以方便地模拟和集成 DApp。在接下来的几周内,随着我们迭代和添加新功能,我们将推出一系列版本的 PAB。
PAB 的目的是:
- 提供 Plutus 应用程序运行的标准化环境
- 提供纪律严明的状态管理
- 向外部客户端提供可发现的接口
- 跟踪智能合约使用的链上信息
- 在模拟环境中工作
- 处理请求,例如运行合约实例,将用户输入转发到这些实例,以及将分类帐状态更改事件通知这些实例。
下图提供了 PAB 架构的概览:
figure-3
PAB 可用后有两种部署模型:
- 托管 - 此选项将在 PAB 的初始版本中得到支持。在这种情况下,DApp 提供者/开发者在链索引和 Alonzo 节点旁边托管一个 PAB 实例。 Plutus 应用程序的链下代码在 DApp 提供商的基础设施上运行。
- 浏览器内 - 此选项将在初始发布后可用。
除了 PAB 本身之外,还需要以下组件:
- 链索引——链索引是从卡尔达诺交易中收集的数据的数据库。它使用卡尔达诺节点的链同步协议,需要与卡尔达诺节点共存。链索引是 PAB 的只读组件。因此,PAB 的多个实例可以共享链索引的单个实例。所有链索引查询都通过 HTTP API 提供服务。
- Alonzo 节点——PAB 使用套接字协议从节点订阅账本状态更新。 PAB 是 Cardano 上另一个强大的工具,它使 DApp 的开发更简单、更安全且更具成本效益。通过以可用的形式提供来自规范来源的信息,它减轻了开发人员的许多日常任务。当这些链接可用时,我们将适时分享这些链接。
5.3 PLutus 费用估算 (Fee Estimator)
Plutus 费用估算器是由 IOG 性能专家开发的,作为价格基准和比较的内部工具。它使用来自真实世界 Plutus 交易的信息来预测交易将收取的费用。估算器可用于计算实际交易的费用(例如,确定网络参数发生变化时将收取的费用),也可用于估算开发前或开发过程中单个脚本交易或完整 DApp 的费用。确定脚本更改或优化对费用的影响可能很有用。
费用计算需要三项信息:
- 以字节为单位的链上交易总大小:例如,一个简单的交易约为 300 字节,带有元数据的交易约为 650 字节,而 Plutus 脚本通常为 4,000-8,000 字节(未来的优化将减少这一点)。
- 脚本使用的计算 (CPU) 步骤数:每个步骤代表基准机器上 1 皮秒的执行时间。典型的脚本应该消耗少于 1,000,000,000(1 毫秒)。
- 脚本使用的内存单元数:这表示脚本分配的字节数。典型的脚本应该消耗少于 1,000,000 个内存单元(1MB 的内存分配)。 使用estimator,用户只需要填写相关信息,在Plutus编译器中构建脚本后,即可从Plutus编译器中获取。也不需要为此运行节点,这大大简化了普通用户的过程。
当这些链接可用时,我们将适时分享这些链接。