您的位置 首页 快讯

ZK-rollup + 数据分片能给以太坊带来巨大的范式转变

作者 | @canti


可扩展性三元悖论存在于所有区块链网络中。L1 网络的可扩展性越差,运行一个全节点的最低硬件要求就越高。如果用户无法轻易地访问全节点,网络就会变得越来越中心化。很明显,以太坊长期以来都优先考虑安全性和去中心化程度,而基础层的可扩展性成为不可能三角中较为忽视的一项。随着转向以 rollup 为中心的路线图,以太坊正在利用其基础层 (特别是其庞大的全节点) 来提供强大的数据可用性代替 L1 可扩展性,同时保证安全性和去中心化。


%title插图%num

图示:可扩展性三元悖论。cr:Vitalik Buterin


这个路线图的目的是,将发生在以太坊网络上的大部分执行 (DeFi、NFT 等) 将转移到 rollup 上,而不是在主网上进行。虽然 L1 专注于提高速度和安全性而不是去中心化程度有悖于这个行业的精神,但是同样的三元悖论并不适用于 rollup。Rollup 继承了以太坊主网的安全性。由于以太坊处理了三点中困难的部分,rollup 能够专注于成为最佳的执行层。


到目前为止,大家可能已经听说过 Optimism 和 Arbitrum,这两个都是 optimistic rollups。即将出现的是另一种 rollup — ZK-rollup。有一些 ZK-rollup 实例已经存在,但它们都没有提供通用计算 EVM 兼容性,或 zkEVM。这种情况不会持续太久,因为 zkSync 2.0、Scroll、StarkNet 等项目正研究这个问题,并发展迅速。


那么,为什么这很重要呢?当以太坊从单一链转变为模块化系统之后,它改变了竞争的动态。正如 polynya 之前所说,L1 智能合约区块链不再直接与以太坊竞争;他们还与 rollup 竞争。我相信与 EVM 兼容的通用 ZK-rollup 的出现不仅会导致 optimistic rollup 的淘汰,还会导致所有其他 L1 智能合约区块链的淘汰。


现实情况是,rollup 的实现十分具有竞争力,并且它们拥有专注于提高执行效率的自由,因此 rollup 将以极快的速度迭代到自己的最佳版本。由于每个 rollup 项目都发展迅速,因此在本文中,我不会尝试选出最好的一个 ZK-rollup 项目。相反,我将强调合并后、分片上线后,ZK-rollup 的功能和可能性有哪些突破。


安全性


Rollup 所提供的强大安全性保障能够实现一些有趣的动态。


escapeHatch() 函数


如果你将资金放在 Polygon PoS 或 Solana 上,假设该网络离线了几个小时,那么在停机期间你将无法取回资金被困的资金。不同于使用”侧链“ (sidechain,如 Polygon PoS) 或者其他智能合约链 (如 Solana),主网 rollup 合约包含”逃生舱口“ (escape hatches)。这是不可纂改函数,允许用户即便在 rollup 网络离线的情况下也能从 rollup 中退出到主网上。用户始终可以根据需要手动向主要以太坊 rollup 合约提交交易,包括将资金从 rollup 中提出。


%title插图%num

理想情况下,从 rollup 中撤出不会让人感觉像在飞行中撤出飞机…这应该是一个相对舒适的过程。cr: Google


中心化的定序者和证明者 (顺便解释了为什么它们并没有那么吓人)


我知道在我的介绍中,我说过我将涵盖 rollup 必须提供的“最佳功能”…在有人吹嘘之前,我得先说明一点:理想情况下,定序者和证明者的设计应是完全去中心化的。**然而,最初的情况并非如此。**大多数 rollup 在刚启动时,具有不同程度的中心化设计,然后逐步实现去中心化。也就是说,rollup 中的中心化定序者比某条中心化 L1 链要安全得多,这一事实值得强调。


当使用由中心化定序者或证明者运行的 rollup 时,用户不得不在信任和抗审查方面做出妥协,但不会影响安全性。定序者的运营者无法窃取用户的资金,并且用户可以随时将资金撤出到以太坊主网。实际上,用户主要依赖中心化定序者来保证活性。


我们之前都听说过关于某某区块链是一条“数据中心链”的笑话。使用 ZK-rollup,实际上你可以拥有一个由超高规格机器组成的数据中心专门负责证明工作,并且这对网络来说不是一个存在的风险。


去中心化的定序者和证明者


幸好,由于 rollup 能够在需要时触发“逃生舱门”机制并保障用户的资产不被盗取,因此 rollup 的开发者能够尝试各种方案而不必担心灾难性后果。去中心化定序者和证明者的设计空间相当大。在其最终的形式中,我希望定序和证明工作会向公众普遍开放,并采取各种形式的经济激励措施 (代币、质押、惩罚等等) 来确保网络能正常运行。我们不再依靠单个定序者,而是支持多个!更重要的是,我们将拥有一个去中心化网络帮我们运行证明者,这个分布式网络由企业、rollup 开发者以及爱好者组成。


数据可用性


数据可用性指的是每个以太坊节点需要维护的数据。当我们需要不可纂改这种属性时,链上数据存储很有价值。但是,以太坊上的数据容量是有限的且需要大量资源来维护;存储可不便宜!


一旦以太坊转向具有数据分片的模块化系统,rollup 将享有大量的数据容量,并且只会随着时间的推移而增加。大量全节点和验证者意味着以太坊将拥有高容量的数据可用性。


以太坊数据分片


以太坊将分阶段推出分片升级。分片将充当网络数据存储需求的负载平衡器,为 rollup 执行层释放出巨大的可扩展性。重要的是,这也避免了对全节点的高要求,从而使网络保持去中心化。


最初,将有 64 个数据分片 (也成为分片链),到最后将有 1,024 个数据分片。数据分片不处理交易或智能合约,它们仅为 rollup 提供额外的数据容量。


%title插图%num

实现分片后的图示。cr: Hsiao-Wei Wang


Rollup 作为交易压缩的一种形式,不定期向以太坊主网发布单个状态根更新,其中包含在 rollup 层发生的许多不同交易的结果。由于必须将这些状态根更新发布到主网上,所以 rollup 的 gas 费用会受到区块空间需求波动的影响,而这种费用通常由 rollup 的用户承担 (相关内容请看“摊销”部分)。一旦分片上线,容量将增加近 20 倍。这将使 rollup 的操作更便宜、更快。


同样的,作为接受 rollup 发送的状态根更新最终链,以太坊上的用户同样可以受益于一些替代的数据可用性解决方案。


Volitions


Volition 属于 ZK-rollup,包含一条 rollup 链和一个 validium 实例。Volition 像 ZK-rollup 一样将状态根和证明提交给以太坊,不同的是,Volition 允许用户选择通过其 rollup 链使用链上数据可用性或者通过其 validium 实例使用链下数据可用性。这种权衡仅适用于 ZK-rollup,不适用于 optimistic rollup。


Volition 的其中一个案例是 zkSync 2.0:


%title插图%num

zkSync volition 示意图,cr:Matter Labs


zkSync 的 validium 实例称为 zkPorter。在该方案中,数据可用性由 zkPorter 的验证者提供安全保障。Matter Labs 团队声称这个方案能够实现超过 20,000 TPS (每秒交易笔数) 以及将 gas 成本降低 100 倍。需要注意的是,ZK-rollup 吞吐量的最终上限实际受到其证明者的计算和存储能力的限制。我认为长期来看,20,000 TPS 这一估计过高了。


Adamantium


有像 Adamantium 这样的提案,一个去信任的链下数据可用性解决方案 (TODA, Trustless Off-chain Data Availability)。这个提案进一步寻求数据可用性方面的创新。可以说,TODA 属于 volition 范畴。提案摘录如下:


“…Adamantium,一种拥有自主数据可用性的协议 (Autonomous Data Availability)…它保留了链下数据可用性的扩容优势,同时移除了任何自愿用户的所有信任假设。这些用户自愿做什么?自愿上线;也就是说,即便他们离线了,其资产也不会被盗窃或冻结 —— 相反,这些资产能够从 L2 转移到用户的以太坊主网地址下。”


跟 volition 一样,这个方案仅适用于 ZK-rollup。


交易成本和吞吐量


Rollup 的交易成本已经相当低了,但还不够低。幸好,还有很多可以应用的优化,这将极大降低 gas 成本。此外,还将部署许多技术来提高交易吞吐量。


一支 Rollup 大军


鉴于主网上 rollup 的轻量级特性,可能会有数百个 rollup 并行运行,每个 rollup 都能承载数十万个用户并且都拥有巨大的吞吐量,所有这些都由以太坊提供支持和安全保障。如果某个 rollup 已饱和 (RPC 或定序者无法承载其流量),那么用户能够轻易地跳到另一个 rollup 并开始交易。如果你需要的话,分叉一个 rollup 并自己部署一个副本也很简单。


有效性证明摊销


有效性证明摊销 (validity proof amortization) 指的是,ZK-rollup 上每一个批量交易的验证总成本由该 batch 内的所有交易分摊。


我将提供一种快速理解摊销概念的方法。请记住,为简单起见,此示例在数学上并不准确。我提供公式只是为了说明;实际上,rollup 交易成本的分摊并不是那么简单。以下为我们的想象场景:


  • 更新状态根需要 5,000,000 gas

  • 就像主网一样,用户在 rollup 中进行交易时需要支付 gas 费

  • 每笔交易的价格遵循公式 x = 5000000 / y,其中 x 是每笔交易的价格,y 是任何给定 batch 中的交易数量


你应该能够推断出:


  • 在包含 200 笔交易的 batch 中,单笔交易成本为 25,000 gas

  • 而在包含 100,000 笔交易的 batch 中,单笔交易成本为 50 gas,基本上可以忽略不计


如果向某一 batch 提交越多笔交易,交易的摊销成本就越低。这与单片区块链 (如当前的以太坊) 完全相反。以太坊随着活跃用户数量的增加,对区块空间的需求也会增加,从而导致 gas 价格飙升。


摊销的一个例子:StarkEx 提供了一种称为 SHARP (Shared Prover) 的机制,也就是在所有 StarkEx 部署中摊销成本。


Volitions (再一次提到)


大部分关于 volition 的相关信息都在前面讲到了。由于 volition 与 rollup 的吞吐量有关,因此在这里再提一遍。简要回顾:


  • Volition 让开发者和用户能够通过 validium 使用链下数据可用性

  • 这种链下数据可用性虽然不如链上数据可用性安全,但可以极大地降低交易成本

  • 除了降低成本外,链下数据可用性还额外释放了大量的交易吞吐量


隐私


我们都知道,隐私并非以太坊固有的属性。我们不能期望说,让普通用户和企业放弃自己的金融隐私。默认情况下,ZK-rollup 不具备隐私属性。“ZK-rollup” 中的“零知识”指的是在链下进行计算,然后借助零知识证明在主网上验证计算的有效性。这不意味着“用户的交易活动不被窥探”。当然,隐私问题还有改善的空间。目前,有许多围绕 实现 ZK-rollup 无需许可的隐私方面的工作正在进行。


递归证明


在文章《Rollups 不完全指南》中,Vitalik 列出了 optimistic rollup 和 ZK-rollup 之间的一些主要区别。其中一点就是,两种 rollup 分别如何处理隐私问题。他特别提到了递归证明。递归证明 (Recursive proof) 指在某个证明中验证另一个证明。比如,在某个 SNARK 中验证另一个 SNARK。这是一种便于使用的压缩技术,可以极大地提高效率并降低隐私维护成本。(中文版: https://www.ethereum.cn/an-incomplete-guide-to-rollups)


Aztec 正在研究所谓的 ZK-ZK-rollup 或 ZK²-rollup,利用他们创新的 PLONK 证明和 Turbo-PLONK 以提供隐私交易功能。简而言之:


  • ZK-SNARK 代表着 ZK²-rollup 上的每笔交易。这些是“内部” SNARK。

  • 另一个 ZK-SNARK,即 rollup SNARK,负责证明内部 SNARK 的有效性。


需要注意的是,optimistic roolup 无法实现这一创新,因为它们无法让内部 SNARK 验证安全地在 rollup 外部进行;且数据必须发布在链上。这并不是说 optimistic rollup 不能从零知识证明中受益,但它们的效率和成本效益都会较低。


当前,zkSync 和 Mina Protocol 已经采用了 PLONKs。随着时间的推移,我们期待看到递归证明的进一步创新 (包括其他类型的 ZK-SNARK 证明,如 Groth16、Marlin、Fractal、Halo2 等) 为所有 ZK-rollup 带来更便宜、更强大的隐私方案。


%title插图%num

图示:Turbo-PLONK 多项式逻辑单位。

cr:零知识峰会 (演讲视频)


灵活性


ZK-rollup 能够随意地在各个方面进行创新,而无需面对 L1 链上可能带来的灾难性故障风险。以 rollup 为中心的以太坊路线图的一个关键原则是,自由市场正在寻找构建 rollup 的所有最佳方法,而不是依赖于一小群核心开发者去假设哪种方案最佳。


由于开发和部署 rollup 是一项无需许可的工作,因此我们会看到不同的 rollup 推出各种各样的机制来吸引用户使用。这包括不同风格的治理、代币经济和流动性激励、去中心化范围内的不同权衡、意识形态的不同表述,甚至 VM 环境的不同选择(如 LLVM、自定义 VM 等等)。


当然,本节所提到的所有内容并非仅 ZK-rollup 独有。尽管 optimistic rollup 不具备 ZK-rollup 所提供的某些功能,但 op 也有许多相同的灵活性。然而,其他 L1 智能合约区块链不能像 rollup 那样快速地迭代其中的功能。请记住,现在是 rollup 和其他 L1 智能合约在进行竞争。


如果某条 L1 链试图迭代太快,而没有进行适当的测试和采取安全措施,那么它的用户就会面临很高的风险。这些网络上的所有资金随时都是黑客眼里的赏金。如果 L1 链出现了故障,那么损失可能是灾难性的。停机时间还会影响到 L1 可能拥有的任何扩容执行环境 (rollup、状态通道等)。因此,优先考虑安全性和去中心化是有好处的。


最坏的情况是,当 rollup 宕机时,在系统修复之前都需要手动操作。可以想象,类似于在 Etherscan 上与合约进行交互,rollup 开发者与应用程序开发者可能会提供一个“应对紧急情况”的门户网站,允许用户在需要时快速简便地手动操作 rollup。幸好,这些快速迭代很可能会在早期得到解决,我猜相关开发工作将会得到高度重视。


多种可能


外包计算和数据可用性 (即在 L2 执行计算) 使许多当前无法在主网以太坊或其他智能合约平台上运行的链上应用成为可能。这种新范式还允许我们构建任何现有链上产品的高级版本。


应用专用型 ZK-Rollup


虽然本文主要讲述通用计算型 ZK-rollup 的好处,但对于应用专用型 ZK-rollup 的影响也有许多想要讨论的。


dYdX 交易所

dYdX 由 StarkEx 提供支持,是一个去中心化交易所,支持永续交易、保证金交易、现货交易以及借贷交易。自从推出 L2 版本的交易所,dYdX 的 ETH/USD 代币对产生的流动性已经与 FTX 的相匹敌。虽然其中很大部分是由于其 DYDX 代币奖励计划所产生的流动性,但我相信 dYdX 或其他一些 ZK-rollup 原生 DEX 总有一天会在交易量和流动性方面超越所有永续合约交易所。


%title插图%num

dYdX 的 ETH 流动性与 FTX 相匹敌,数据截止 2021 年 9 月 26 日。cr: Hsaka


在用户体验方面,只需一个以太坊钱包和一些 ETH 即可登录并开始在 dYdX 上进行交易。不同于一般的中心化交易所,由于去中心化交易所是非托管的,使用 DEX 不需要 KYC 以及不需要第三方存储用户的个人信息。用户确实需要将资金转到 rollup 中才能使用这个 DEX,但用户对其资金保有控制权,并可根据需要将资金提回主网。据 dYdX 用户所说,其使用体验与中心化交易所一样灵敏。


这种链引起了一些 HFT (high-frequency trading, 高频交易) 群体的关注。假设 HFT 公司是理性且受利益驱动的实体,我猜随着时间的推移,这项活动将主要在 ZK-rollup 上进行。


Immutable X

另一个迅速获得关注的应用是 Immutable X,这是一种为 NFT 提供巨大可扩展性空间的 volition 用例 (也是由 StarkEx 提供支持)。最近,TikTok 选择 Immutable X 作为发布其 TikTok Top Moments NFTs 的平台。使用 Immutable X,用户无需支付 100 到 1000 美元的 gas 成本来铸造 NFT,而是以几分钱的价格甚至免费铸造 NFT。摘自 Immutable X 的 alpha 交易公告:


Immutable X 提供免 gas 和即时交易:对于任何市场、游戏和去中心化应用程序,Immutable X 提供免 gas 的交易 (免 gas 铸造、交易、赚取、收集)、即时NFT 交易 (每秒最多处理 9,000 笔交易),在保证非托管的前提下,极大地实现了扩容。


你注意到它们说的能够达到 9000+ TPS 了吗?


物理和游戏引擎 (什么时候会在 ZK-Rollup 上爆发?)


一位名叫 guiltygyoza 的推特用户展示了相当多其在 StarkNet 上进行的物理现象相关实验。我预计,随着工具变得更加强大和实验继续发展,未来将有大量从前无法想象的新链上游戏。


%title插图%num

简单点阵 & 重力场中的二体问题,在 StarkNet 上运行。cr: guiltygyoza


其他概念


Volition 将为实现 Web3 的愿景带来新方法。例如,区块链原生社交网络之类的东西应该能够极大地利用链下数据可用性。Jack Dorsey 已经谈论过他的计划:将推特变成一个开源的分布式系统,其中推特只是“推特”协议上的一个客户端。Volition (更具体地说应为 validium) 可以在这个场景中发挥关键作用。


同样,也可以想象一下 Vine 的开源版本,其中用户提交的短视频 (6 秒或更短) 铸造为 NFT。TikTok 和其 ‘Top Moments’ 系列与这个想法相似,但 TikTok 始终是一个闭源实体,搞点其他花样并非坏事。


这场竞争会如何发展?


ZK-rollup 带来了很多好处,以太坊很快就会让它们发挥自身最大的潜力。但是其他竞争链呢?它们在各种意义上都被超越了,其未来发展会怎样?这是一个很好的问题,不可避免地会有许多复杂的答案。对于它们的命运,我有一些想法。


以太坊的实用主义黑洞


在过去的一年里,我们看到了许多“又便宜又快”的兼容 EVM 的链涌现。还有一些声称要在基础层解决区块链三难困境的链上线了,这些链实际上牺牲了去中心化来保证速度和安全性。


现在应该很清楚,通用计算型 ZK-rollup 将比任何 L1 智能合约链都更安全、更快、更去中心化、更具适应性和灵活性,并且更轻量级。这些事实很重要;每条独立的链都将承担不必要的安全开销和风险,同时是劣质产品。


在我看来,未来务实的解决方案是让这些链放弃其冗余的共识机制和数据可用性,成为 ZK-rollup 或意志。他们应该融入以太坊一流的安全性、数据可用性和结算保证。


在我看来,对于这些区块链而言,未来的实用主义方案是放弃其冗余的共识机制和数据可用性,发展成为一个 ZK-Rollup 或者 Volition。它们应该借用以太坊的一流安全性、数据可用性及其结算保证。


将共识和安全的工作外包给以太坊将使这些链能够专注于执行的工作。在分片上线后并且以 rollup 为中心的世界中,这是它们之间保持相关性的机会。否则,它们的安全维护成本将变得更高而难以维持。随着时间的推移,这将是一个变得更加明显的现实。


%title插图%num

以太坊 (左) & 所有其他 L1 执行层 (右), 大约在 2023 年。

cr: NASA/CXC/M.WEISS


可以说,像 Solana、Avalanche、Fantom 和 Binance Smart Chain 这样的网络在任何潜在的 rollup 治理代币中都有优势。这些网络 (以及其他类似网络) 的原生代币:


  • 有时间达到某种程度的分布式

  • 是“已知实体”

  • 有交换支持

  • 具有深度的流动性


也就是说,放弃他们冗余的共识机制和安全开销,然后变成以太坊 rollup 并不意味着他们的代币消失了。相反,他们可以重新利用代币来调整证明者和定序者的激励措施或提供链上流动性激励措施。这些链不需要牺牲它们的身份,只需去掉一些危险指数。这对所有人来说都是积极的调整。


需要考虑现实情况


当然,这些区块链链的设计者、风投和用户不可能那么快接受这一现实。Meme 很强大,圈内的人都不乏傲慢之心,很多风投都有向散户投资者兜售其产品的梦想。


以前的经验告诉我们,区块链的消亡从来都不是一个快速的过程。现在你可以在以太坊经典等类似平台上观察到数千个空块,这表明它们缺乏采用。当然,还有其他类似的链在运行着。


需要一定的时间


即便这些链愿意选择实用主义的方法,也需要投入大量的研究、准备和注意力来实现这种规模的变化。任何人都需要很长时间才能执行。我直觉 Solana 将会是最早采取这种方法的链之一,也许我的直觉是错的。


免责声明


一个以 ZK-rollup 为中心的未来似乎是世界上所有问题的神奇技术解决方案,但需要注意以下几点:


  • 根据不同 rollup 的设计,中心化定序者可能可以优先执行 MEV。


  • 根据 volition 中 validium 的数据可用性委员会的不同实现方式,数据委员会的验证者可能可以恶意冻结用户资金或拒绝更新 validium 的状态。但这种情况并不会影响 volition 的 ZK-rollup 状态。


  • 许多 rollup 出现意味着有更多的流动性场所,无论是代币交易还是 NFT 交易。虽然 ZK-rollup 能够实现在 rollup 和主网之间快速转移资金 (甚至在不同的 rollup 之间也可以),但流动性碎片化还是可能会造成早期的波动。而 dAMM 主要就是为了解决这一问题。


  • 运行一个证明者需要消耗一定的算力,因此我们应该找到降低潜在 KW/h 消耗的方法,同时提供证明效率。


    需要注意的是,这种证明工作并不像 PoW 挖矿那种消耗游戏;它不会随着时间的推移而变得更加困难。因此,运行证明者的能源消耗接近以太坊 PoW 的能源消耗是不大可能的。


在我看来,除了 MEV (矿工可提取价值),我预计市场将会快速地为大多数问题提供解决方案。就 MEV 而言,这是一个棘手的问题,并不是通过单个神奇的解决方案或协议就能解决的。但各种最小化 MEV 和使其民主化的方案将有助于减少其影响。


Optimistic Rollup


虽然我对于 optimistic rollup 的长期可行性的态度不太乐观,但它仍是以太坊目前最佳的兼容 EVM 的扩容解决方案。通用计算型兼容 EVM 的 ZK-rollup 还没上线,也就是说我们还需要一段时间才能实现本文介绍的所有优点。


Optimism 最近推出了一版升级,其执行环境将发生巨大的变化 (中文版),而这些变化对开发者和用户都非常使用友好。Arbitrum 将很快进行 Nitro 升级,它支持 EVM 兼容性并为用户提供更快的速度。


越来越多 DeFi app 在这两种 rollup 上部署,它们两个网络中都存在着数十亿美元的流动性,两者都非常值得尝试。桥接资产至 Optimism 和 Arbitrum 上只需几分钟!


Optimism 桥接:

https://gateway.optimism.io/welcome


Arbitrum 桥接:https://bridge.arbitrum.io/


请注意在与任一网站交互之前验证每个 URL 的有效性。你可以在 Optimism 的 Twitter 和 Arbitrum 的 Twitter 上仔细查看其链接的网站。


在撰写本文时,Optimism 仅限用于通过白名单的智能合约,但用户可以随意使用任何列入白名单的智能合约。我估计这个白名单机制很快就会取消啦。Arbitrum 没有白名单机制;用户和开发者可以自由地交易和部署他们的东西。


需要注意的是,使用这两个 rollup 本身的桥梁将资产从二层提到主网需要 7 天 (这是 optimistic rollup 处理欺诈证明的方式)。当然,你也可以通过第三方桥来在 rollup 和主网之间转移资产,但需要支付手续费。在使用它们中的任何一个方案之前先自己调研一下,并在使用时仔细检查滑点和费率。


总结


我们正面临着一个巨大的范式转变,这将对加密生态系统带来永久的影响。ZK-rollup 将能为以太坊实现扩容,它们会在这方面做到最好。这种范式转变将十分强大,届时会开启所有 L1 智能合约区块链的终结 —— 即便是我们现在所知的以太坊。


关于扩容,有许多不同的提案。为了发明出现在众所周知的灯泡,经历了数千小时的研究和失败,才有后来的成功和实现 —— 当然,这项工作还远未结束。前方的道路充满曲折,但我们的目标却从未如此清晰。


我希望这篇文章能够帮你在思考行业未来时改变自己的思维方式。对于未来格局的猜想令我无比兴奋。


%title插图%num

热门文章

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注