Tezos 是一个开源去中心化区块链网络,为智能合约和数字资产提供平台。Tezos 的一个关键功能是自我修正:网络参与者可以自己动态升级网络协议。当参与者提出提案并随后进行表决时,将启动此修订过程。在 Tezos 存储堆栈上工作了几年之后,这是我们对提案的第一个贡献。我们希望它将成为许多中的第一个!
正如 Nomadic Labs 在今天的公告中所详述的那样,佛罗伦萨提案包含了几个重要的变化,从引入烘焙帐户到为智能合约开发人员提供重大的生活质量改善。在所有这些更改中,我们对将“子树”(sub-trees)引入区块链“上下文”(context) API 感到特别兴奋。在本文中,我们将简要介绍这些子树将为 Tezos 的未来带来什么。但是首先,它们是什么?
Merkle 子树
Tezos 协议在被称为“上下文”的版本化的树的上面运行,该树保持链的状态(余额,合同等)。自从前 Alpha 时代以来,就已经使用 Irmin (一个开源 Merkle 树数据库,最初是由 MirageOS unikernels 为使用而编写的)执行 Tezos “上下文”了。
对于 MirageOS, Irmin 的主要优势在于灵活性:它可以在任意后端上运行。这对于必须灵活且可广泛部署的 Tezos 非常适合。实际上,从使用 Git 后端的初始原型到如今使用的优化的 irmin-pack 实施,Tezos 的前端已经多次利用了这种敏捷性。
但是 Irmin 不仅可以交换后端,还可以做更多的事情!它还允许用户使用高级 API 来操纵存储的基础 Merkle 树结构。从可合并数据类型( MRDTs )到零知识证明,“树” API 启用了很多有趣的 Irmin 用例。 Tezos 尚未直接使用这些更强大的功能。这就是 Merkle 证明的来源!
证明以及轻量级 Tezos 客户
由于 Tezos “上下文”跟踪记录了区块链的当前“状态”,因此每个参与者都需要自己的树副本来进行交易。该“上下文”可能会变得非常大,因此,尽可能紧凑地存储它很重要:此目标塑造了我们最新的 Irmin 后端 irmin-pack 的设计。
但是,可以通过 Merkle 树的魔力来进一步降低存储需求:个人只需要存储根树的一个片段,前提是他们可以通过向其他参与者发送其成员的“证明”来证明该片段是有效的。
该属性可用于支持超轻量的 Tezos 客户端, TweagIO 当前正在开发此功能。为了使之成为现实, Tezos 协议需要对“上下文”子树进行细粒度访问,以便从中构建 Merkle 证明。幸运的是, Irmin 已经支持了!我们扩展了协议以了解子树,从而为用户提升了 Merkle 树的能力。
我们很高兴与 TweagIO 和 Nomadic Labs 合作,降低进入 Tezos 生态系统的门槛,并期待看到它们通过子树实现的成就!
高效的 Merkle 证明表达
仅在 Tezos “上下文” API 中公开子树是不够的:轻量级客户端还需要有效地对其进行序列化,因为必须通过网络交换证明以在协作节点之间建立信任。进入 Plebeia 。
Plebeia 是由 DaiLambda 开发的 Tezos 替代存储层,具有与 Irmin 互补的优势。特别是, Plebeia 能够生成非常紧凑的 Merkle 证明。这在一方面是由于其专门的存储结构,一方面是由于巧妙的优化,例如路径压缩和内联。
我们正在与 DaiLambda 团队合作,以结合 Irmin 和 Plebeia 的优势,这将为 Tezos 存储堆栈带来内置的 Merkle 证明支持。Tezos 的 Merkle 证明的前途一片光明!
烘焙帐户迁移
树不仅可以启用新功能;它们对性能也有很大的影响!当前,对“上下文”的索引总是从其根开始的,这在访问树中深处的相邻值时会重复工作。幸运的是,新的子树为”上下文”中的“光标”提供了自然的表达,从而使协议可以优化其与存储层的交互。
仅举一例, DaiLambda 最近利用此功能将把烘焙帐户引入网络所需的迁移时间减少了 15 倍!我们将与 Nomadic Labs 和 DaiLambda 合作,以确保 Tezos 从其存储中提取每一个性能。
获得闪电般快速的存储迁移特别令人兴奋,因为这使 Tezos 甚至在生态系统扩展时也能快速发展。
其他语言存储
当然, Tezos 不仅是 OCaml 项目:存储层还具有高性能的 Rust 实施,作为 TezEdge 的一部分。我们正在与 Simple Staking 合作,通过 FFI 工具链将 Irmin 带入 Rust 社区,从而使不同的 Tezos 前端实施之间的联系更加紧密。
结论
总而言之,这是一个激动人心的时刻,与来自世界各地的许多开源合作伙伴一起致力于 Tezos 存储。我们非常高兴看到 Tezos 充分利用 Irmin 的功能,这将加强两个项目并帮助他们共同成长。
如果这一切听起来都很有趣,您可以使用最新发布的 Irmin 2.5.0 亲自体验。感谢您的阅读,并随时关注 Tezos 的未来开发更新!