LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 多链博弈,跨链终局之战

多链博弈,跨链终局之战

2022-01-12 区块律动BlockBeat 来源:区块链网络
原文标题:《跨链终局之战》
原文作者:Jackson,先知实验室
本期 SeerLabs(Twitter:@seerlabs_crypto)将带你走进跨链终局之战


前序:


在讨论本文的话题之前,我们需要声明本文只代表作者个人的意见和想法。且分析时切入点为产品和技术设计并无资本运作,市场营销等其他方向的考量。所以本文并非投资建议,也非做空报告,本期所主要讨论的问题更偏基础设施,这类赛道往往具有原子性,要么符合需求极快起飞,要么方向错误无人问津。因此,文中所提的项目更不可以作为作者提供的投资参考。纯属产业研究。希望大家一起来讨论。


01 Synthetix 的 L1 和 L2 数据兼容所引发的信息跨链思考


本篇研报的起因是于今年 7 月以及 12 月分别发布的于 synthetix 社区的 sip156 和 sip165. 链接贴于此:


https://sips.synthetix.io/sips/sip-156/

https://sips.synthetix.io/sips/sip-165/


目前这两篇提案依然处于 Feasibility 的阶段,这意味着虽然还没有实际实施但是可行性已经得到了一定程度的认可。这两篇提案的主要原因是希望解决 Synthetix 的 layer2 和 Layer1 的数据兼容问题。看过我在 10 月份所做的合成资产研报的用户应该都了解。Synthetix 作为以太坊社区最复杂的 DeFi 项目,于今年正式部署在了 Optimism 这个 layer2 解决方案上。但是多链竞争的格局逐渐形成,虽然 layer2 和 layer1 之间可以完成一定程度上的跨链通信,但是这种通信暂时还无法扩展到其他侧链甚至是 solana 这种异构链上。导致 Synthetix 所采用的全局债务无法同步。这造成了极大的「流动性浪费」。


这种「流动性浪费」正是当下这个群雄逐鹿的公链战国时代,各类 DAPP 所面临的最大的问题之一。尤其是像 Synthetix 这样子的全局债务项目(采用类似 pool 2 user 的共享风险的项目都会遇到同样的问题)。在采用多链部署时就不得不将多链的流动性互相割裂。并且从零开始重新激励流动性的产生。


以经常被我们鞭尸的「DeFi For All」基金举例,Polygon 通过这个计划引入了 Aave,Curve,Sushi,最近又引入了 Uniswap。但是这些头部项目依然需要重新在 Polygon 上激励流动性并且沉淀资金。


也许你会说,对于矿工来说,新的经济激励越多越好,但对于有实际需求的用户来说,会造成很大的困扰,如 Aave 的其他链的版本上支持的抵押品和存款品的种类要远低于 ETH,Sushiswap 在其他链上流动性较好的资产也依然远低于以太坊。


再从项目方的角度来说,如果我希望在某个体验较好的异构链或者 Polygon 这种 EVM 的侧链上部署我独创的抵押借贷协议。那么我会面临一个很大的问题,那就是可采用的抵押品种类不足,因为该链上拥有足够流动性可以支撑大规模清算的资产并不多。


还有,目前多个链上都会有一些主流的代币交易对 AMM 池,以 ETH 举例。截稿时,该资产在 Uniswap V3 上的总 TVL 为 1.41B,在 Pancake V2 上的 TVl 大约为 0.3B。而在进行同一笔 ETH 的交易时,在 Pancake 上交易所承受的滑点压力是 Uniswap V3 以太坊版本的近 5 倍。金额越大,滑点差距越大。这也是为什么目前交易聚合器的采用率越来越高,甚至跨链交易聚合器的采用率也越来越高的原因。


再举一个例子,用户使用不同链的 Aave 进行抵押借贷时所承担的利率是不同的,这是由于各个链上的数据无法互通,合约在计算利率时只采纳了该链原生的数据。用起来可能看着差别不大,但换个说法,这就好比,你在用本市的银行存款时的利率为 4%,但是你跑到其他大城市发现存款利率居然为 6%。同样的银行,同样的币种,这种情况在传统金融市场是无法不可能出现的。但是由于区块链的数据孤岛问题,导致类似的情况屡见不鲜。


因此,引发了我们的思考:


既然多链博弈,兼容并存的生态已成定局,未来的战火甚至有可能更加混乱。那么链间的信息通讯是否是下一个即将迎来爆发的赛道。


为此,我和团队的开发者集中对当前各种类型的解决方案展开了研究(主要挑选了一些有代表性的方案,其他较为同质化的方案并不在此次报告的范围内)。希望能够从各个不同的方面来分析各种解决方案的优劣。


以下内容涉及到多种技术原语,我们会尽量使用浅显的语言帮助大家理解。基础设施赛道听起来非常「技术」但实际上,区块链的解决方案本质上是组织形式和生产关系的哲学问题,了解了基本的流程和逻辑不需要看懂代码也可以明白这些基础设施的实现意义。


02 现有的一些跨链通讯基础设施


(一)轻量级的插件型通讯协议——LayerZero


LayerZero 是 SeerLabs 今年八月份接触到的一个跨链通讯的基础设施,当时引起了我的注意,但是后续因为一些其他事情错过了对其的投资(遗憾)。后来就看到这个协议获得了包括 Binance, Mulitcoin, Delphi Digital 的投资,再去找就不理我了。


1、方案简述


LayerZero 主打一种轻量级的基于通信层的解决方案。主要针对的是各个链上 DAPP。帮助他们解决链间信息的互通问题。


LayerZero 的白皮书大概这样描述这个方案(我尽量翻译)



上图说明了有效传递单个 LayerZero 消息所涉及的步骤,图中每个黑底的数字代表了一个步骤。


步骤 1:链 A(AppA) 上的用户应用程序作为事务 t 的一部分执行一系列的动作。我们通过交易标识符 t 来唯一标识事务 T,t 的格式可能会根据链 A 的类型而有所变化。事务 T 中包含的一个步骤是通过 LayerZero 传输有效传递。为了说明目的,并且不丧失一般性,我们假设在这个场景中 Appa 使用我们的模版中继器。AppA 向 LayerZero 通信器发送一个包含以下信息的请求:


t:代表唯一的事件识别符


dst:代表指向链上智能合约的全局识别符


payload:代表链 A 应用希望传送给链 B 应用的任何消息数据


relayer_arge:代表在链 A 应用希望采用图中所示的模版中继器(layerZero 提供的一个可自定义的中继器)时所提交的支付信息的一些参数


步骤 2:通信器(Communicator)构造一个包含 dst 和 payload 的 LayerZero 数据包,称为数据包 (dst、payload),并将它与 t 和 relayer_args 一起发送给验证器(Validator)。


步骤 3:验证器(Validator)将 t 和 dst 发送到网络。此步骤通知网络,需要将链 A 上当前块的块头发送到链 B。


步骤 4:验证器(Validator)将包(dst、有效负载)、t 和 relayer_args 转发到中继器(Relayer),通知中继器(Relayer)需要预取 T 的事务证明并最终发送到链 B。这与步骤 3 同时发生。


步骤 5:网络将当前事务 (cur_blk_id) 的块 ID 发送给 Oracle。这将通知 Oracle 获取链 A 上当前块的块头,并将其发送到链 B。如果在同一块中发生了多个 LayerZero 事务,则步骤 5 只执行一次。


步骤 6:Oracle 从链 A 中读取块头 (blk_hdr)。


步骤 7:中继器(Relayer)从链 A 读取与交易 T 关联的交易证明(证明 (t)),并在链外存储。步骤 6 和步骤 7 彼此异步发生。


步骤 8:Oracle 确认 blk_hdr 对应的块在链 A 上稳定提交,然后将 blk_hdr 发送到链 B 上的网络。确定每条链何时发生这种情况的机制是不同的,但通常需要等待一定数量的块确认。


步骤 9:网络将指定为 blkJhdrJhash 的区块 hash 发送给验证器(Validator)。


步骤 10:验证器(Validator)将 blkJhdrJhash 转发到中继器(Relayer)。


步骤 11:在接收到 blk_hdr_hash 之后,中继器(Relayer)发送与当前块匹配的所有包(dst、payload)、t、证明 (t) 元组的列表。如果多个用户在同一端点之间同时发送消息,则在同一块内可能存在多个数据包和关联的事务证明。


步骤 12:验证器(Validator)将接收到的事务证明与网络存储的块头一起使用来验证关联的事务 T 是否有效并已提交。如果块头和事务证明不匹配,则将丢弃该消息。如果它们匹配,则包(dst,payload)发送到通信器。


步骤 13:通信器(Communicator)发出数据包(dst,payload)到 AppB。


2、这个方案主打的优势是:


(1)轻量级,成本较低


其方案并不需要如其他方案一样以来一个基于链 A,B 上层的链的节点来提供协议通讯。而是可以由项目方自由部署,可以采用 LayerZero 提供的模版甚至中继器也可以由用户自己设计。且,白皮书中提到一种 ULN 的超轻节点,比轻节点还轻,我也没找到特别详细的实现。不过从描述中来说,这也是超轻量级部署的一个体现。


(2)基于通信层的解决方案


这是项目方主打的一个卖点,LayerZero 认为自身的解决方案是一种基于 Layer0 的新的通信协议。这一点我们并不认同,他所处的级别并非类似 TCP 这样的通信协议,而仅仅只是一种链间的数据传输协议,在层级设置中我更愿意将其置于应用层,介于 layer2 和 layer3 之间。


(3)不依赖第三方信用


白皮书里提到了 Anyswap,THORChain 等跨链协议,LayerZero 认为前述的两种偏公证人机制(下一个例子会提到)的方案,实际上是在依赖一个中间共识层,用户需要信赖这个中间共识层所提供的服务。而 LayerZero 却是一种点对点的通信原语,不需要依赖这个中间共识层。


(4)总结


听起来,LayerZero 所描绘的跨链机制相当有趣,且确实能够解决不少实际问题,并且足够轻量化。但是透过现象看本质,我们也能发现这类非常「技术」的解决方案所犯的一些诱导性的问题。


3、问题


(1)我们并不认同这个是个基于通信层的解决方案


该项目并非一个处于 layer0 的通信协议,他所提供的主要工具包括端点和 relayer 两部分,端点负责通信的验证,relayer 负责传递消息。这仅仅只是一种链间的数据传输协议,在层级设置中我更愿意将其置于应用层,介于 layer2 和 layer3 之间。


(2)LayerZero 同样依赖一个中间共识层


LayerZero 在方案设计时采用了 relayer 这个中继器和 Oracle 预言机互相验证的方式来确保安全性。但是白皮书中也提到了所谓极端情况——中继器和预言机联合作恶的情况。LayerZero 认为保持相对的独立性可以降低这种风险,但是中继器一般由项目方部署。而 LayerZero 认为预言机可以选用 Chainlink 这样的服务。且不说使用 Chainlink 通信的成本问题,本质上这样做还是在信赖 Chainlink 不会与项目方联合作恶,而 Chainlink 也是一个中间共识层。


4、主观的前景判断


(1)大部分用户无法获知技术细节上的差异


因此,宣传上的故事性细微诱导往往无伤大雅。还有的「技术」型项目吹的更狠,对于我们来说,见过的「作家」型创始人实在太多了。


(2)轻量级的部署有利于推广和应用


LayerZero 方案相比起 Anyswap,THORChain,Polkadot,Cosmos,以及另一个要讨论的项目 Axelar 来说技术和生态的投入以及运营成本相对要小得多。不需要自建节点,吸纳其他验证人。组织一个中间共识层所需要的成本肯定是远大于只提供工具。


在同等资源的前提下,我更看好 LayerZero 在跨链生态中有更好的应用。


(3)叙事和生态潜力较低


与 Anyswap,Chainlink 这样的辅助类产品类似,LayerZero 虽然可以发挥很大的作用,但是因为其产品的特性叙事能力和生态扩展能力不够强。


举例来说,Chainlink 自身的中间共识层生态实际上已经足够完善,但由于其预言机这个形象太过于根深蒂固,导致整体的故事性不如 solana 这类 layer1. 实际上以 Chainlink 的能力完全有资格成为所有链的 layer3。


LayerZero 也是如此,工具化的产品定位使其叙事性较差,从后续 medium 发布的两篇文章可以看出一些端倪。创始人和团队在思考 LayerZero 的扩展性问题时第一时间想到的是与 Cosmos 的 IBC 协作的形式。


这约等于将自己定义为与 Cosmos 的其中一个组件相同的叙事级别。


(二)异构跨链通信协议——Axelar


这个项目很有趣,从整体的标题和传递的理念与我们今天所讨论的问题不谋而合,他希望做到的事情就是赋能 DAPP 开发者和区块链生态系统,从设计之初考虑到了一些当前形势下不同异构链生态无法兼容的问题。


1、官方所宣传的愿景


(1)对于底层开发者


将您的区块链插入所有其他区块链


(2)对于 DAPP 开发者


在任何地方部署您的 DAPP,通过 Axelar 实现任何链之间的资产和信息跨链。


(3)对于用户


从钱包直接与所有区块链生态的 DAPP 交互。


2、项目的基本原理如下


这个图来自官方的文档,看起来实在太复杂了。我们将其简化为以下的文字流程。


3、Axelar 跨链协议流程


假设存在链 S、链 D,由 Axelar 提供这两条链的跨链服务


状态信息跨链


Axelar 通过 Axelar network 内的验证者运行不同链的节点获取并同步各个区块链系统中的状态信息,例如某区块哈希、当前区块高度等。状态信息跨链的核心流程如下:


(1)链 D 用户通过 Axelar 提供的 API 向跨链桥账户或直接在 Axelar 区块链发起对链 S 状态信息数据获取请求,记为 Q。


(2)Axelar 的每个验证者必须运行链 S、D 的节点软件。Axelar 验证者查询其链 S 节点软件的 API 以获得答案 A,并将 A 发送至 Axelar 链。


(3)一旦大于一定权重的验证者在第 R 报告相同的答案,则会使用门限签名技术在第 R+11 区块发布对答案的签名 S


(4)任何人都可以从区块 R+11 中取出有带有签名的答案 S 并将其发布到 D 网络。D 网络上的用户可以通过 Axelar 提供的 API 查询该答案。


资产跨链


假设用户要求将源链 S 上的 x 数量的代币交换为目标链 D 上的 x 数量的挂钩 S 代币 S',存放在用户在 D 链上地址 W<sub>D</sub>上。


工作流程如下:


(1)用户向跨链桥帐户发送跨链 transfer 请求 (x, W<sub>D</sub>),该请求由监听器捕捉并路由至 Axelar 网络。


(2)Axelar 当前验证者集群使用门限签名技术共同为在 S 上创建一个新的存款地址 D<sub>S</sub>。并将其广播至 Axelar 网络。


(3)用户通过监控 Axelar 区块链得到 D<sub>S</sub>,然后将 x 数量的 S 代币发送到地址 D<sub>S</sub>。


(4)验证者查询用户是否成功转账,如果在第 R 个区块中大于一定权重的验证者广播转账已成功,则验证者签署交易 tx<sub>D</sub>,该交易将 x 数量的 S'代币从发送到 W<sub>D</sub>, 并将签名结果在第 R+11 区块广播。


(5)任何人都可以从区块 R+11 中取出带有签名的交易 tx<sub>D</sub>并发布至 D 链,至此完成跨链资产的 transfer。


这个方案相较于前述提到的 LayerZero 来说更加复杂,验证的流程和逻辑也更多。总体来说,区别较大的部分是 LayerZero 采用了外部预言机来作为验证人的一部分,由外部预言机来保障安全性并扮演类似中间共识层的角色。而 Axelar 采用 BFT 拜占庭共识构建了一个第三方链,Axelar 通过 CTP 将其他链的信息同步到 Axelar 网络,再由 Axelar 链上的节点通过门限签名在其他链上传递信息。


这个方案本质上与 Anyswap,THORChain 所采用的方案没有太大的区别,也可以用公证人机制来代表。这类方案几乎是所有跨链通信的方案中最重要的一个流派。


4、这个方案的优势


(1)独立的第三方链可以发挥出更大的想象力


针对异构链的 Axelar 网络本质上也是一个区块链网络,虽然其支持,chainA 上的某 DAPP 通过 Axelar 作为中转的方式跨链到 ChainB,但是对于开发者来说最优的解决方案依然是直接将 DAPP 部署在 Axelar 上。这样的话无论后续的版本部署在什么地方,都只是向下的发散,而非向上的对接。


Axelar 如果能将其自身的生态系统发展的很好,那么 Axelar 也许将具备成为所谓 Layer3 的能力。这种地位类似于 Polkadot 生态当中的中继链。届时,ETH,BTC 甚至有机会被称作 Axelar 的子链。


(2)不必依赖第三方预言机,效率和综合成本可能更低


LayerZero 的方案虽然端点和 relayer 部署成本较低,且很轻量。但是预言机的使用成本以及效率将成为影响 DAPP 开发者选择的重要因素。


举例说明:如果项目 A 希望通过 LayerZero 以及 Chainlink 传递 ChainA 上主合约的债务数据到 ChainB。但是 Chainlink 的调用可能需要付费,且 Chainlink 推送数据并非如 Axelar 一样直接监听各个链的区块数据,而是定时或者定规则的推送。比如一分钟推送一下,或者债务波动不高于 1% 不推送。


这部分的行为需要向 Chainlink 支付费用,Chainlink 有一个市场叫 Chainlink market,这里有许多数据提供商,数据提供商针对每种数据有一个合约,你需要数据,就调用这个合约并支付 link,数据提供商链下查询后再将数据喂到你的合约里来(因此查询是异步的,至少有一个区块的延迟),支付的 link 大概是喂数据的 gasfee 再多一点点利润,比如 Ethereum 一次大概收 1 ~3 link,在 bsc 上一次大概 0.1 link。

这种异步异构链通信的频率是很高的,相应的成本也会很高。所以,Axelar 的通用方案综合成本也许会低得多。


5、主观的前景判断


(1)从整体的产品设计思路上来说,Axelar 这个项目的产品形态更加接近于 Anyswap 这样的项目,因为大部分用户对于中间共识层的去中心化程度容忍度较高。Chainlink,anyswap 所在链的服务商和生态情况,99% 的使用者可能都不太清楚,用户只会关注所在链推荐的采用率最高的跨链通信方案是哪个。这就说明通用的异构跨链解决方案真正考验的是项目方的 To Layer1 的能力。暂时,我们还未看到 Axelar 有太多的动作。且技术方案上,我们不认为其拥有足以产生自传播效应的优势。


不过,相较于 polkadot 来说,Axelar 生态的推进难度也会大大低于其他的 Layer1。可以将其作为工具层也不是再创生态。


(2)从叙事能力来说,Axelar 暂时显现的叙事能力上限要远低于 cosmos,polkadot。虽然都是跨链,且 Axelar 甚至可能更加实用,但是 Polkadot 和 Cosmos 由于都提出了标准化的区块链协议。这使其整体的叙事能力要远超 Axelar。


(三)Polkadot 和 Cosmos


1、基础信息


Polkadot 和 cosmos 是这个市场上声量最大,生态也最丰富,市值最高的项目。总体上来说,这两个项目所阐述的价值观和产品观都远高于前述的 layerZero 和 Axelar。


这里不讨论 Polkadot 和 Cosmos 的具体方案,各种语言的文档多如牛毛。我们从整体方案来做展示。


Polkadot 和 Cosmos 的叙事中都提到了异构链之间的跨链方案,比如 substrate 和 Tendermint 链与 ETH,BTC 等链之间的跨链,基本原理与 Axelar 和 LayerZero 并无太大不同,均需要一个中间共识层通过公证人机制完成跨链。


但是 Polkadot 和 cosmos 讲了另一个看起来更加有吸引力的故事——标准化区块链和同构跨链方案。换个说法:再创生态的万链互联。


2、与 LayerZero&Axelar 形态比对


从上图可以看出,我将复杂的流程极简(线程上标识的并不精确,如 Polkadot 的异构跨链需要桥接链,而非与中间共识层的中继链直接交互)之后可以得出的结果:上述的三种类型的方案在异构跨链这个问题上并无本质不同,但是针对跨链这个大的话题上三种的思考各不相同。


Polkadot 和 Cosmos 认为同构的跨链安全性稳定性都最好,且后发产品技术债务低,因此,虽然也支持异构跨链,但是重点确是 substrate 和 Tendermint 的系统内的同构跨链。


Axelar 认为统一的标准才是解决异构跨链最高效最安全的办法,因此建立了 Axelar 的 Network。它继承了跨链通信和中继器服务,并且提供了一个与异构链交互的中间共识层。


而 LayerZero 则认为针对开发者的轻量级跨链通信协议才是刚需,因此只提供了中继器和通信协议,而借用预言机来充当中间共识层的角色。


究竟哪一种方案在 2022 年的市场竞争中能够获取更多的关注,具备更大的前景呢?


(四)前景综合分析


1、当前的市场竞争格局


a. 异构链竞争激励,多链并行已成定局


b. 巨鲸沉淀于 ETH,用户沉淀在多个成本更低体验更好的 Layer1——BSC,AVAX,Solana。


c. 组合式创新成为创新的主流


d.EVM 生态占有率极高


2、参考模型对标


从生态发展的角度来说,这三种方案在叙述,生态发展策略等方向都各不相同。我们以一个表格的形式来对各个维度对照分析:




从表格中我们可以看出,各个方案所面临的最大困难的未来的前景究竟如何。以及需要去重点拓展的用户群。


Polkadot&Cosmos 由于野望更大,雄心勃勃,所面临的考验也更大。


可以较为肯定的做出结论,除非其自身的各项工具足够完善,生态足够活跃,自成一派。不然很难完成其在白皮书里所描述的愿景。


至少在当前的多链竞争中,看起来 Polkadot 和 Cosmos 的同构链核心解决方案并不符合现在的主流。


不过,Cosmos 和 Polkadot 在一些设计上还存在一些细微的差别。比如 Cosmos 提供了一套使用 IBC 与钉子(pegs)来完成异构链跨链的方案。


简而言之,约等于 Cosmos 提供的功能已经可以非常快速和高效的建立一个类 Axelar 的网络。且这个网络未来还具备与其他同构链之间再交互的可能性。


这样做的好处是即使核心的同构跨链还无法完成,异构跨链的高效采用也可以当作是 Cosmos 生态的成果。


而 Polkadot 的 XCMP(还没做完)与中继链的共识耦合较大,很难独立拆分。开发者需要自己再去建立一套与 BTC,ETH 等异构链跨链的体系。虽然这使得中间共识层的开发成本降低,但是与所描述的愿景确实相去甚远。


所以,综合来看,Polkadot 的设计在当下可能会困难重重,插槽拍卖完成之后,Polkadot 需要大量激励与原生 substrate 链上的 DAPP 才可以从当前激烈的厮杀中突围。这种难度应该是目前所看的所有项目中最大的。


当然 Parity 和 Web3 foundation 的能力毋庸置疑,本文只是从产品和技术层面来分析难度。不作为投资意见。


03 Seer 观点


(1)LayerZero 的方案也许最快推上市场


因为 LayerZero 的方案更贴近当前市场当中 DAPP 开发者的实际需求,以文首 Synthetix 的情况举例,Synthetix 可以采用 LayerZero+Chainlink 的方式来快速的完成 Layer1&2 的债务池整合。


(2)Axelar 所面临的同质化竞争最大


相比于 LayerZero 这样轻量级快速部署的切入点来说,Axelar 的方案更加同质化,上有 Polkadot&cosmos,平行的还有 Anyswap&THORChain 等。Layer1 的采用率将是其最大的障碍,在这方面我不看好 Axelar 能胜过 Anyswap。因为后者虽然目前主攻资产跨链,但从方案设计上向消息跨链升级的难度并不高,且已经拥有了极高的 Layer1 采用率。向下 Axelar 并不甘于仅仅成为一个轻量级通信组件,因为整体的叙事性和价值捕获能力较差。


(3)Cosmos 的预计采用率将高于 Polkadot


Cosmos 更加灵活的架构使得其技术难度更低,更偏向应用的设计风格使得目前基于 Tendermint 的生态已经跑出了许多出色的产品,包括最近大火的 LUNA(Terra)。


(4)Polkadot 生态所面临的考验巨大


所有上述的方案中,Polkadot 所面临的宣传压力最大,则复杂的技术方案导致了一次次的延误也在不断的消耗用户的信心。真正能够证明 Polkadot 期许的可能得是那种「充分发挥链间组合性的杀手级产品」。当然,Polkadot 生态所涉及的利益方众多,也许后发优势会帮助 Polkadot 做得更好。


原文链接


—-

编译者/作者:区块律动BlockBeat

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...