Bitget App
交易“智”变
行情交易合约跟单BOT理财Web3
揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代!

揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代!

PolkaWorldPolkaWorld2025/01/07 10:14
作者:PolkaWorld

JAM 的必看系列!

加入 PolkaWorld 社区,共建 Web 3.0!

揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 0

现在,越来越多的技术栈,包括以太坊和 Solana,正在通过实施并行化和分片来应对扩展性挑战。然而,Polkadot 的创始人、以太坊的联合创始人 Gavin Wood 早已走在了前沿,专注于开发 JAM 协议。JAM 灰皮书的目标是将 Polkadot 的卓越性能与 Ethereum 主网的连贯性完美结合,为区块链技术开创一个全新的篇章。


这一未来可能比我们预想的更近。今天的文章,我们将分享 Parity 核心开发 Kian 在 2024 年 sub0 reset 大会上的一次演讲,他与 Gray Matter 团队紧密合作,共同致力于实现 JAM 灰皮书中的蓝图。在这次演讲中,他从分片的故事开始,简单通俗的揭秘了 Polkadot 的进化、JAM 的运作流程、给 Polkadot 带来的变化和解决的问题等。


继续阅读,查看 PolkaWorld 整理的精彩内容!



分片这个秘籍,我们已经看完了


从某种意义上来说,区块链行业和分片技术的发展方向就像一部我们已经看到结局的电影。当其余生态朝着 Polkadot 一两年前的阶段而发展时,Polkadot 正在迈向下一个阶段


我想先从 Polkadot 到目前为止做的非常新颖的几件事开始,然后再重点分析其中几个方面,这里面也涉及一些社会层面的内容。比如 Polkadot 在 OpenGov 和 Fellowship 方面的探索,以及与 SEC 就 DOT 是否为证券达成的共识。这些都是非技术性的创新,并且在 Web3 领域中具有某种程度上的新颖性和独特性。


作为一个对 Polkadot 略有贡献的人,我感到非常自豪,因为我们正在尝试这些创新。在技术方面,如果让我总结我认为 Polkadot 的主要技术进步,即我们已经成功实现了具有共享安全的异构执行分片。这有点拗口,但接下来我会对它进行拆解分析。



核心之力:从劣质分片到顶级架构


那么,让我们来看看这个短语 “执行分片与共享安全性” ,逐个了解它的含义。


我们先来讲讲分片,这是区块链长期以来想要实现的功能。如果我们看看 2017、2018、2019 年的 Ethereum 的文章和博客帖子,讲的全部都是执行分片这个概念。Ethereum 曾经想成为一个拥有 64 个分片的区块链,每个分片都能执行 EVM 合约,并且所有分片最终都会在一个基础层上达成某种形式的结算。


话虽如此,Ethereum 当前的路线图已经从这种执行分片的规划上有所转变。所以,为了理解这种执行分片将如何运作,让我们先从了解什么是非分片式区块链开始。我把它称作顺序式区块链,也就是说,我们把区块链当作一个整体,所有的验证者都参与其中,区块是按顺序依次生成的,每一个被处理的区块都必须由所有验证者进行处理,所以这其中涉及大量的协调工作。如果有一个区块要接入,所有人都必须重新执行它。而这一假设,就是区块链扩容到目前为止如此困难的根本原因。因为我们的假设是,任何接入的区块,任何一批交易都必须由所有验证者来执行。这就是经典的区块链运作方式。


如果只看 Polkadot 的中继链,它就是这样运作的;如果只看 Ethereum L1,它也是这样运作的;实际上 Solana 同样也是这样运作的,只不过 Solana 对此进行了极致的优化。那么,如果想要直接扩展性,最直接的的一种想法会是,我想要对它进行分片,我有这么多的验证者,我把他们分成两部分或者四部分怎么样?这样的话,我就能获得四倍的吞吐量了!


这听起来还不错吧?但我会把这种情况称作“劣质的执行分片”。


是的,我们的确对执行进行了分片,但我们也对验证者集合进行了分片。而正如你所知,验证者集合为区块链带来了安全性。在权益证明网络中,支持验证者集合的质押总量就是我们所说的网络的经济安全性,它是安全的来源。所以,如果我们把它分成两部分或者四部分,那么我们也就把那个区块链的安全性也分成了两部分或者四部分。所以,这种方法实现了扩展,或者说它对执行进行了分片处理,但同时也破坏了经济安全性。这或多或少就是最初的 Cosmos 模型的情况。我认为大家已经不采用这种方式了,因为我们已经认识到,这并不是一种非常理想的扩展方式。


实际上,如果让我总结 Polkadot 在技术层面的主要创新,那就是破解了这个难题。使我们既能够实现执行分片,同时不再存在这种安全性碎片化的问题。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 1


所以,在上图中,你可以看到验证者下方的这些区块,它们没有不同的颜色,它们都和 Polkadot 本身的颜色一样。通过这种可视化的方式,我想表达的是我们正在共享 Polkadot 的安全性


不过,关于这是如何实现的这个话题不在我们本次演讲的范围。但简单来说,这依赖于某种博弈论设计,验证者之间需要进行相互校验,检查彼此的工作,这一点在 Elves 的论文中得到了正式阐述,这篇论文是由 Web3 基金会在今年发表的。我们为此使用的术语是 “Cynical Rollups(怀疑式 Rollup)”,它在某些方面与 Optimistic Rollups(乐观 Rollup)类似,但在不同验证者组相互检查工作的方式上更具主动性,因此我们称其为 “Cynical Rollups”。


简而言之,Polkadot 带来的是这样两个特性 —— 分片执行和共享安全性。之前我们认为这两个特性是相互排斥的,但实际上我们发现可以同时实现,即我们可以在实现执行分片的同时拥有共享的安全性。



万剑归一:异构分片的智慧


在 Polkadot 的背景下,当我们把验证者组划分成更小的组,并让它们协同工作时,这些较小验证者组的安全性仍然非常高,甚至与所有验证者整体的安全性一样高。我们把这些小组称作 “Cores”(核心),这一点非常重要。这是 Polkadot 中特有的一个术语,我们会在接下来的讨论中使用这个词。


到目前为止,在本次展示的这个图表里还有一个细节,那就是目前你们可以看到这些分片,它们都是灰色的,它们的颜色是一样的。所以,这是一个同构分片系统。这就有点像 Ethereum2.0 的设想,假设有三个分片,这三个分片都是相同的区块链,以太坊网络只是增加了相同链逻辑的吞吐量,而不是为每个分片赋予不同的功能或独立性。


最终,Polkadot 更进一步,通过巧妙使用 WebAssembly 来表示分片,这就引入了另一个概念 —— 异性构(heterogeneous),这是我拆解的短语中的最后一个组成部分。这让 Polkadot 的共享安全分片系统变得异构化。也就是说,每个分片都可以是一个完全不同的区块链。


例如,其中一个分片可以是 Moonbeam,另一个可以是比特币,或者 Ethereum。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 2


Polkadot 的这种设计,已经超出了最初 Ethereum2.0 的愿景,这就是 Polkadot 1.0 的目标。所以,我想再次强调这一技术成就 —— 通过引入一种被称为 “核心(cores)” 的概念,即一组协调工作的验证者,Polkadot 实现了共享安全的分片执行,而且是以一种异构的方式完成的。这是一项开创性的进步!



Polkadot 等级修炼 2.0 阶段


上面这个图展示的是 Polkadot 1.0 的状态,大概是 2021 年中期或年底,首批平行链上线的时候。如果你回顾一下 Polkadot 的发展历程,会发现过去两年的重点主要是让核心(Cores)的使用变得更加灵活


这实际上是对核心技术的认可,承认这种技术是非常出色的,是其他技术栈和区块链生态系统所无法实现的。那么,接下来的目标就是让这些核心更容易使用、更灵活、更便捷,从而让更多人可以更轻松地使用它们。


我这里有许多例子,如果你想从单个核心中获得更多的算力,这就是异步支持(Async Backing)的功能。


如果你想拥有多个核心,那么我们有弹性扩展(Elastic Scaling)的功能,即一个平行链可以使用多个核心,从而获得更高的吞吐量。


如果你不想一次性购买很长时间(例如两年)的核心,那么我们有灵活核心时间(Agile Coretime)的功能。


如果你也不知道你什么时候需要,什么时候不需要,只是按需使用 Polkadot 核心,那么我们有按需核心时间(On-demand Coretime)的功能。


最后,我还可以补充一点,如果你想将这个核心用于非平行链的用途,那就是 JAM 的作用所在。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 3


总体而言,结论就是,Polkadot 的主要技术成就就是引入了这些具有非常强大特性的执行核心。


而接下来 Polkadot 的发展,基本都围绕着一个问题展开:如何让这些核心对尽可能多的用户群体变得有用?



窥视 Polkadot:内核与链上的双重流派


在我们深入讨论 JAM 之前,最后一件我们需要讲清楚的事情,那就是当一个平行链区块在 Polkadot 上被处理时会发生什么,这将帮助我们更好地理解 JAM。因此,我们来看一下平行链区块的处理路径


首先,这个紫色框表示的是待处理的区块,我们关注的是位于中间的核心,它将处理该区块。再次强调,这些核心是一组协同工作的验证者。如果 Polkadot 有 1000 个验证者,每个核心可能由 5 或 10 个更小的验证者子集组成。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 4


所以,第一步是这个区块将被发送到这个核心,核心会对其进行计算。在接下来的几个图示中,我会使用这个轮子或齿轮符号来表示计算,处理这个区块的大部分计算工作就是在这里完成的,它不是由所有 Polkadot 验证者来完成,而是由这个核心中的一小部分验证者来完成。当这些计算完成后,为了满足 ELVES(Polkadot 的安全性协议)要求的安全性保证,并不是说这小部分验证者做完工作就结束了,我们还需要创建一种机制,确保在其他验证者想要重新执行这个区块时,他们所需的数据是可用的,这正是 Polkadot 的数据可用性系统的作用所在。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 5


所以接下来,Polkadot 已经有一个数据可用性层,执行该区块的核心会将该区块及其重新执行所需的信息通过数据可用性层传播,这样其他核心、其他验证者如果想重新检查任何内容,便可以访问这些信息。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 6


最后,所有 Polkadot 验证者所做的,并不是重新执行整个平行链区块,而是它们只会更新一个关于此次执行结果的小签名。对于一个平行链来说,这通常意味着更新该平行链的状态根。换句话说,就是 Polkadot 状态中的一个哈希被更新。这是所有 Polkadot 验证者都会执行的操作,但仅此而已,不会再做更多工作。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 7


这就是我所说的平行链区块的处理路径。但我想强调的是 Polkadot 的架构中存在一种非常有趣且独特的“核心内与链上(Incore and Onchain)二元性”,即当平行链区块被处理时,它经历了两个具有不同属性的阶段:


  • 核心阶段(In-Core)区块在核心中处理,由部分验证者执行。在这一阶段,大部分计算任务完成,同时也确保数据通过数据可用性层对所有其他验证者可用。

  • 链上阶段(On-Chain):当区块进入链上时,所有验证者只执行一个小规模的签名更新操作。


这就是为什么说在 Polkadot 中,我们做的工作是分阶段的:首先,核心中做了大部分计算,并确保数据可用;然后,在链上,只进行少量的状态更新。通过这个二元性,你还可以看到,在核心中,我们有更多的带宽,可以进行更多的计算并且可以更自由地执行各种操作;而链上则更安全,但速度较慢,因此我们最好在链上尽量少做工作。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 8


顺便说一下,当我们讨论“区块空间(block space)”或者“核心时间(coretime)”时,用 Polkadot 的方式来描述这些概念会稍微复杂一些。


如果你想准确地表达,我们就必须使用这些特定的关键词,因为 Polkadot 的区块空间与其他区块链完全不同。其他区块链通常只有一种类型的区块空间,就是链上的那种。而在 Polkadot 中,存在两种截然不同的区块空间:核心中的区块空间(In-Core Block Space)和链上的区块空间(On-Chain Block Space)。如果你希望进行技术层面的讨论,就需要使用更多的关键词来准确描述这些特性。


总之,在 Polkadot 中,我们已经有了核心内(In-Core)和链上(On-Chain)的二元性。此外,正如我提到的,我们还已经拥有了数据可用性层(Data Availability Layer)。这个数据可用性层的作用是保存重新执行核心中发生的任何操作所需的证据,以备未来使用。


如果你到这里为止都理解了,那么从架构层面来看,你实际上已经了解了 JAM。


为什么这么说呢?因为从某种层面上,我可以将 JAM 描述为对 Polkadot 的一种“解剖”。我们将 Polkadot 的内部逻辑公开,使得在核心(In-Core)中发生的事情、在链上(On-Chain)发生的事情,以及你放入数据可用性层(Data Availability Layer)或从中读取的内容,完全由你自己决定。这些操作不再是为你预先定义的,也不再是硬编码的。



破旧立新:JAM 的自由与去中心化之道


作为开发人员,在 JAM 中你可以编写代码,定义在核心中、链上以及数据可用性层中的行为。我们将这些开发的内容称为 “服务”(Services)。


举个例子,一个 Polkadot 平行链可以控制在核心中发生的事情,比如执行平行链区块的逻辑。然而,它无法真正控制链上发生的事情。链上的行为是固定的,由 Polkadot 决定。对于平行链来说,链上行为只是更新状态根(State Root)以及其他一些哈希值。至于什么被放入数据可用性层,也不是平行链能够决定的。而在 JAM 中,这些部分变得可配置,并向开发者开放。开发者可以决定核心中的执行逻辑、链上的处理方式以及数据可用性层的使用方式。这使得 JAM 为开发者提供了更多的灵活性和控制权。所以这就是 JAM 的主要定义。


除此之外 JAM 所做的另一件事情,就是去除 Polkadot 平行链协议中的许多预设的规则使其不再是一个以区块链为中心的协议。你可以使用 JAM 来做一些不仅仅是区块链计算的服务,更多地接近于普通软件的计算。我们稍后会看到一些例子。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 9


最后,我可以总结,JAM 是一种进化,但它并不是 Polkadot 整个生态系统或整体的进化,而是专门针对 Polkadot 中继链的进化,尤其是中继链中与平行链相关的部分。


需要强调的是,JAM 并不是对系统平行链、治理系统、质押系统、AssetHub 或 DOT 代币的替代或改变。这些部分仍然保持不变。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 10


JAM 核心是对 Polkadot 中继链以及平行链协议相关部分的一次升级。因此,强调 JAM 不是什么也很重要,JAM 并不是对所有与 Polkadot 相关的事物进行颠覆式更新,它只是  Polkadot 协议中某些低层次协议部分的升级。


所以,让我们更详细地讨论一下什么是破旧立新!


JAM 是通过一种叫做 “服务(Service)” 的原语来编程的。


调用或实例化一个服务时,我们称之为“工作项(Work Item),一组工作项被称为“工作包”(Work Package),我并不是随便给你一些术语,而是想强调,JAM 协议在规范层面是多么的去中心化的。


它不再是你熟悉的智能合约或区块,而被称为“服务”(Service)。类似地,“工作包”(Work Package)这个词可能是你能想到的最模糊的术语,但它的模糊性恰恰体现了 JAM 的目标,它并不想决定这些工作项具体是什么,它希望保持通用性


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 11


要理解 JAM 中“核心链”和“链上”二元性是如何体现的,我们可以看看什么是“服务”(Service)。


“服务”(Service)的结构应该是直观的,你可以理解它有三个入口点,其中两个入口点是非常容易解释的 —— “Refine”(优化)和“Accumulate”(积累),“Refine”(优化)指的是在核心(Core)内部发生的事情,“Accumulate”(积累)指的是在链上发生的事情。这些名称不是单纯的叫做 fn in-Core 或者 fn on-chain,但它们的确是对这两者功能的简化描述。简言之,Refine 就是核心中的计算,Accumulate 则是链上的计算。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 12


正如我之前所说的,JAM 就像是 Polkadot 平行链协议的一个升级,你可以完全控制在核心内和链上发生的事情。你现在可以看到这一点,你可以使用 “Refine”(优化)和“Accumulate”(积累)功能,这是目前 Polkadot 模型下所不具备的编程能力。


还有第三个入口点,我在这里不会过多详述,那就是“传输”(transfer),它是当“服务”(Service)之间想要互相发送消息和代币时用到的。


接下来,让我再给你详细说明一下“Refine”(优化)和“Accumulate”(积累)的工作机制。


首先,“Refine”(优化)是在核心中发生的。核心中的特点是:Gas 资源充足。要知道,计算资源充足是因为你并没有让所有验证者都进行计算,而是仅仅让一个核心验证者进行计算,这样,计算量变小很多。因此,你在核心中有更多的 Gas,从而可以在 Refine 函数中执行更多的计算。在 Refine 中,你可以访问数据可用性层,你可以从中读取数据也可以写入数据,无论你在那里放入什么内容,最终其他核心也都能获取到。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 13


不过要记住,在 Refine 函数中,你只在一个核心内执行操作。所以你无法访问整体的 JAM 状态。这是只有在 Accumulate 阶段才能访问到的。因此,从某种意义上说,Refine 函数就像是一个可以进行大量计算的地方,你只需要将这些计算结果输出到 Accumulate 中,后者我们接下来会讨论。如果你思考一下,平行链协议实际上也在做类似的事情,在核心内,实际的平行链块被执行,状态根更新或一些类似根的更新(这些最终结果发生在 Accumulate 阶段)由所有验证者执行。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 14


因此,Accumulate 在某种意义上是 Refine 的对立面。所以你在 Accumulate 阶段可以直接访问整体的 JAM 状态。相比于 Refine,它的计算 gas 消耗更少,因为所有验证者都必须一起执行这个阶段的操作,且在完全同步的环境下,所以它的计算更加受限。在这个过程中,所有的工作项都会被同步执行,任何验证者之间的通信也会是同步进行的


最后再总结一次,简单来说,JAM 的最基本概念就是,它允许 Polkadot 核心进行配置和编程,以便决定在核心内发生什么、链上发生什么,以及如何处理数据可用性层,这完全取决于你自己。


现在我们来看看一个 JAM 工作包的处理路径。


这跟我们之前看过的平行链区块路径非常相似,只是做了一些调整。图表上方的深灰色区域代表的是链上的操作,所以我们可以看到整体的 JAM 状态以及它的 Accumulate 阶段,这个阶段可以访问到这个状态,并且可以同步地从中读取或写入。上面部分类似于传统的区块链,基本上是按顺序进行的。


图表下方是核心部分,这部分展示了许多核心。在 JAM 中,实际上有三百多个核心,这些核心都能访问到数据可用性层,你可以看到它们之间是相互连接的。但我想表达的是,一个核心放到数据可用性层的数据可能不会立即被其他核心看到,但最终会变得对所有核心可用,因为数据需要在核心之间传播,它并不像是一个同步的大型数据库。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 15


最后,图表底部展示的是工作包的流动路径。


我现在使用颜色编码来指定每个工作包属于哪个服务。这个流程与平行链模型非常相似,工作包的第一步是被各个核心摄取。也就是说,工作包会被发送到核心,在这个执行阶段,我们是并行处理的,这也是为什么 JAM 可以进行如此大量计算的原因。因为它有这么多核心,所有核心都可以并行执行大量工作。再次强调,我们使用齿轮符号来表示计算发生的地方。我还注明了这是计算的 Refine 阶段。同时,如果你能看到的话,也有一些小的数据包被发送到数据可用性层(DA 层),所以在这个阶段,工作项可以与 DA 层进行通信。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 16


接下来发生的事情是,一旦这些核心都完成了计算,它们就会在整体的 JAM 状态上对每个工作包进行认证,并附带两个属性。


字母 G 代表保证(Guarantee),意味着这个工作包已经被执行。到目前为止,所有三个工作包都已被核心执行,因此它们都有了 G 属性的标记,也就是说,某些核心或验证者群体已经签署了确认并表示“我已经执行了这个工作包,而且我觉得没有问题”。


字母 A 代表可用性(Availability),而这时还没有确认的是,这些工作包是否满足可用性标准。这部分我们需要稍微等一会儿,具体的等待时间取决于网络条件,可能是下一个区块,也可能是几个区块之后。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 17


但是最终,这些工作包(可能是一个、两个或者三个)会变得可用。而这个时刻,JAM 就可以开始将这些工作包累积并整合,这是执行的最终阶段。所以,在我的例子中,我假设只有前两个工作包在未来某个时刻变得可用,最后我们进入 Accumulate 阶段,这时这两个工作包会被执行。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 18


同样,这里有齿轮图标,表示仍然有计算发生,但因为此时我们仅在执行这些服务的 Accumulate 函数,所以计算量要小得多。在这个阶段,我们还引入了“转移方法”(transfer method)和“转移钩子”(on-transfer hook),“服务”(Service)之间可以通过这些机制来传递消息。


总的来说,我认为从这个例子来看,JAM 的工作包路径和 Polkadot 平行链的路径非常相似,但它的可配置性更强,可编程性也更强


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 19


功夫奥义:PVM 的内功修炼


接下来是关于 JAM 的一些补充说明。PVM 是 JAM 的一个重要组成部分,许多新颖的特性都来源于 PVM。


我想强调一下 PVM 的一些特点,首先,PVM 是有计量的如果你是一个 Substrate 开发者,你可能有过做基准测试但却不得不面对 WebAssembly 没有计量这一事实的困扰,而 PVM 是有计量的。因此,在整个演示中,我再次提到了“Gas”这个关键词,因为在 JAM 中,我们会重新引入 Gas。


PVM 是有计量的且它的计量非常高效,几乎没有损失。实际上,今天早上我有些疑虑,不确定这个数字是否准确。我们可以再核对一下,我认为它在进行计量时大约能达到 50% 原生 x86 的速度,这对于一个虚拟机来说是非常非常好的性能。


PVM 实例可以调用子 PVM。所以我们可以有这样的情况,一个服务本身就是一个 PVM blob,它可以调用一个平行链(平行链本身也是一个 PVM blob),这个平行链又可以调用一个智能合约(智能合约也是一个 PVM blob),所以我们可以有所有这些嵌套的调用。


最后,PVM 还有一个特点,就是它的内存可以被“转储”(Dump),也就是可以暂停并将其存储到某个地方,之后再恢复运行。这就是 CorePlay 计划利用这个特性的地方。


这种暂停和恢复的功能也是 JAM 非常依赖的一个特性,JAM 希望借此实现一些新的功能。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 20


最后,我想介绍一个可能会被称为 Core Chains 或者 Polkadot 平行链服务的服务。JAM 的首批服务之一将是能够运行平行链的服务。也就是说,我们可以将所有现有的平行链迁移到 JAM 上,当 JAM 的原型准备好后,就会着手开发这个服务。再次强调,JAM 并不是对 Polkadot 生态系统的颠覆或替代,而只是作为一个核心协议存在。


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 21


武林新篇:从「同步异步自由切换」到「无交易链」


作为最后一张幻灯片,我想分享一些在整理这次演讲时脑海浮现出来的一些见解和观点。


首先,我认为我们作为一个社区,现在面临的一个难题是,如何随着时间的推移,弄清楚什么应该用 JAM 作为服务来构建,什么应该处于更高层的应用。我认为我们在做平行链和智能合约之间选择时也面临类似的困境。我们已经认识到,如果你做出了错误的选择,那就意味着你用一个大功率工具去做一个不需要那么复杂的事情,通常这不是一个好的选择,因为那样的话你就会为一些你并不需要的结果付出很多成本。


就目前我对 JAM 服务的理解是,它们主要用于一些底层的任务。所以对我来说,想象在 JAM 上构建一个 Meme Core 服务是比较困难的,虽然我确信总有一天会有人这么做,但我认为 JAM 的服务更应该被看作是执行模式、操作系统,而不是操作系统上的应用程序。


另一个我已经提及多次的有趣见解是,如果从架构层面来看,Polkadot 已经包含了 JAM 的大部分功能,除了像 PVM 这样最近一年才开发出来的部分。所以从架构上讲,Polkadot 就是 JAM,只是它没有被完全暴露出来。所以说 JAM 的很多功能已经在 Polkadot 中存在,我强调这一点,主要是为了去神秘化,同时也想让大家意识到,如果你了解了 Polkadot,大部分情况下,你也能理解 JAM,它并不是一个完全从零开始的概念。


我经常被问到关于服务互操作性的问题。我认为问“服务如何互操作”这个问题本身其实有些不太准确,因为服务并不像智能合约那样具有任意的入口点。智能合约可以被随意调用,服务只是由两个函数组成。它们之间如何互操作,实际上并不容易定义。并不像有一个随机的函数可以调用,如果它们恰好在同一时刻被执行,它们的累积器就会在同一时刻被调用。我认为我们应该问的问题是:如果一个服务的“驻地”(residency)较小,比如智能合约或平行链,它们能否进行互操作?这取决于服务的具体实现。JAM 在这里的立场是保持无偏见性,并提供所需的灵活性来支持这种互操作性。你们中的一些人可能已经听说过 Gav 构想的服务 —— Coreplay。它是一个智能合约环境,旨在实现同步,因此其驻留体之间可以进行同步组合,但我也可以创建一个不具备同步组合的 Coreplay 变体。所以我想说的是,这个互操作性的问题,实际上是关于服务的驻留体,而不是服务本身


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 22


另一个点是“半一致性”这一术语,它描述的是一些系统,它们是完全同步的且采用垂直扩展的方式,目标是保持系统同步并尽可能提高速度,就像 Solana 模型。另一方面,也有一些系统走的是完全不同的道路,像 Polkadot 或者 Ethereum 以及 Rollups 发展方向,这些系统更具可扩展性,但它们有分界和分片,系统就不再是完全一致的,也不再是同步的。


JAM 则提供了两种方式:它既有内核计算部分,这大部分是异步的,比如核心内发生的事情,一个核心无法真正直接看到相邻核心发生的什么,也就是异步组件;同时,JAM 还提供了同步的部分,也就是 accumulate 阶段链上的部分,所有一个服务发生的事情都对其他服务可见。


所以,你既可以访问这个异步部分,也可以访问同步部分。


这也是为什么引入了“半一致性系统”这一术语。我真的认为这是 Rollup 领域中的一个全新且重要进步。这也是我所说的,其他生态系统正在完成我们已经看过的电影,而我们正在进入下一个章节。因此,我认为“半一致性”也是一个重要的部分。


最后一点,我想提的是,JAM 是一个无交易链,也就是说,唯一可以提交到 JAM 的交易是我们在 Substrate 和 Polkadot SDK 中所称的 “继承交易”(inherence),也就是由验证者提交的信息,用于执行工作,用户永远不会直接与 JAM 进行交易。在这里,我想特别强调的是个很好的设计,因为我们知道,很多像基础设施链一样的区块链都遭遇了一个普遍的诟病,说他们没有兑现承诺之类的,而我认为,真正的问题之一是我们将基础设施暴露给了终端用户。


就是说,开发者、终端用户、普通用户都在使用同一个基础设施,我认为这是一个巨大的错误


回想起来这个问题是显而易见的,但我觉得往后能纠正这个问题是个好事。所以,我认为 JAM 认识到这一点并明确表明:我就是一个底层的基础设施区块链,我不是为了让用户在上面交易或者发送 DOT 代币的,这种功能可以在应用层实现


我认为这是一个非常有洞察力的设计选择。


原视频:https://www.youtube.com/watch?v=eGLCedIT94U&t=1926s


  • PolkaWorld Telegram 群:

    https://t.me/+z7BUktDraU1mNWE1

  • PolkaWorld Youtube 频道:

    https://www.youtube.com/c/PolkaWorld

  • PolkaWorld Twitter:

    @polkaworld_org


揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 23

更多内容


WUD 2025:推出 AI 代理,与 EasyA 开发手机游戏!

波卡周报 | Parity 发布其 2025 主要工作!Hyperbridge、雪桥将联合申请一百万 DOT,拉升波卡 TVL!

Plaza 是 Polkadot 迈向大规模采用的重要举措!2025 将交付 Plaza 的所有组件!

揭秘 JAM:分片这个秘籍我们已经看完,未来是兼具「异步」和「同步」的时代! image 24

关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

0

免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。

PoolX:锁仓获得新代币空投
不要错过热门新币,且APR 高达 10%+
立即参与!