了解 Pallas 和 Mithril:Cardano 基础设施之旅
Source: Dev.to
Introduction
在这篇文章中,我总结了我对 Cardano 生态系统中 Pallas 和 Mithril 项目的学习成果。
在深入研究 Mithril 代码库并进行贡献之前,我想先梳理自己的理解,并确认自己拥有正确的思维模型。我的目标是成为一名专注于 Cardano 基础设施的区块链工程师。
Cardano 的主网和核心节点软件是用 Haskell 实现的。虽然 Haskell 功能强大,但它为想要使用其他语言(尤其是 Rust)直接与 Cardano 交互的开发者设置了很高的门槛。要在底层了解 Cardano 的数据格式、网络协议或交易结构,开发者通常需要阅读 Haskell 代码并理解 cardano-node 的内部工作原理。这正是 Pallas 所要解决的问题。
Pallas:Cardano 的 Rust 库
Pallas 是一套 Rust 库集合,以 Rust 友好的方式重新实现了 Cardano 的数据格式和协议。它使开发者能够在不编写或深入理解 Haskell 的情况下与 Cardano 主网交互。开发者可以使用 Rust 解码区块、检查交易、构建交易并与 Cardano 节点通信。
模块
| 模块 | 职责 |
|---|---|
| primitives | 定义 Cardano 数据类型,如交易、区块、数值、脚本和元数据 |
| codec | 处理序列化和反序列化(主要是 CBOR) |
| network | 实现 Cardano 节点间通信协议 |
| txbuilder | 帮助构建 Cardano 交易 |
| traverse | 提供跨时代的方式来检查区块和交易 |
| hardano | 与 Cardano 节点存储格式互操作 |
| crypto | Cardano 使用的加密工具 |
| math / utxorpc | 支持工具和互操作层 |
所有这些模块都围绕一个核心理念:如何在 Rust 中正确地表示、编码、解码并与 Cardano 数据和协议交互。得益于 Pallas,Rust 开发者可以构建钱包、索引器、浏览器、分析服务以及其他基础设施组件,而无需依赖 Haskell 代码,从而显著降低在 Cardano 生态系统中进行系统级开发的门槛。
Mithril:高效验证 Cardano 状态
虽然 Pallas 帮助开发者与 Cardano 交互,但另一个主要挑战仍然存在:验证和同步。要从头完全验证 Cardano 数据,客户端通常需要下载并验证大量区块链数据。实际上,许多应用依赖全节点或受信任的服务器,因为在本地下载和验证所有内容既慢又耗费资源。Mithril 解决了这个问题。
核心概念
- 快照 – 对特定时间点的 Cardano 链状态的压缩表示。
- 证书 – 一个小型密码学证明,表明该快照已得到代表大量 ADA 质押的质押池运营商的批准。
客户端下载快照及其证书,然后在本地验证证书。如果证书有效,客户端即可信任该快照代表了 Cardano 网络在当时达成共识的链状态。
注意: Mithril 并不重新验证单个交易或 UTXO;这些工作已经由 Cardano 节点完成。Mithril 验证的是对最终状态的共识,而不是完整的交易历史。
好处
- 更快的启动 – 客户端可以在不下载整个链的情况下开始使用区块链状态。
- 降低基础设施和存储成本 – 需要存储和传输的数据更少。
- 基于质押的安全性 – 信任来源于 Cardano 的质押权重模型,而不是单一的中心化服务器。
这些特性使得 Mithril 对基础设施工具、索引器、研究系统以及未来的互操作性解决方案尤为有用。
相关主题(简要提及)
桥接、侧链、预言机以及跨链互操作性与 Mithril 密切相关,但它们需要更深入的区块链系统和安全模型的理解。我计划稍后研究这些主题。
未来工作
- 深入了解 Mithril 项目结构。
- 理解每个模块的工作原理、存在原因以及系统的端到端运行方式。
- 为 Mithril 项目做出贡献,并成长为区块链工程师。