1. 首页 > 区块百科  > ​OKX Ventures:系统解析账户抽象赛道的过去现在和未来

​OKX Ventures:系统解析账户抽象赛道的过去现在和未来

自 2021 年 9 月 Vitalik Buterin 提出了 EIP-4337 以来,账户抽象概念正逐步被引入到主流Web3钱包中,OKX Ventures 以这一概念的起源为切入点,系统化梳理了账户抽象的过去、现状以及未来机遇。

• 关于基础信息:

○ 账户抽象(AA),支持 session key 可以将交易来源和签名解耦,同时帮助用户避免备份私钥、gas 费等复杂操作,降低用户参与 Web3 门槛;

○ 为了简化账户类型,给予链上行为更多自由度,同时将账户放置于更高的安全级别,需要账户抽象。

○ 经历 EIP-86 ,EIP-1014 ,EIP-2938 ,EIP 3074 后,EIP 4337 由于无需改动共识层,基本可以认定为以太坊 AA 的定稿方案。

• 多链账户抽象的两个路线:兼容 4337 方案(4337 compatible method),原生账户抽象方案( native account abstraction)。

○ 兼容 4337 方案:目前 Arbitrum、Polygon、Optimism 和 BNB 没有原生集成账户抽象。不过更多是通过 4337 相关产品进行支持(如 Biconomy、Stackup 等),基础设施的搭建依旧处于概念阶段;

○ 原生账户抽象方案:Starknet 和 zkSync 两条链支持原生的账户抽象,区别于 4337 方案。差异:Starknet 无 Bundler 和 Paymaster,由 Sequencer 确定交易顺序、支付 gas 并执行,zkSync 通过 Operator 确定交易顺序、支付 gas,再调用 bootloader 一起操作;

• 发展数据:以太坊、Arbitrum、Optimism 和 Polygon 已部署超过 52 万个 AA 账户,其中 80% 以上的账户在 7-8 月刚刚创建,大多为 Polygon 和 Optimism 两条链借着 AA 产品的推出达成大幅增长。Bundler 和 Paymasters 目前在做的协议较少,目前各个链上都被 Pimlico、StackUp 等项目垄断。

• AA 带来的机会:

○ Paymaster 由 dApp 部署的智能合约,通过 Bundler 触发 Paymaster 让其为指定的 UserOperation 支付 gas。Paymaster 是标准化服务,难以单独构成独立项目,web2 流量方可作为功能集成来服务web3业务。代付方的商业机会:代付流量入口、自动兑换、与 DeFi 游戏项目集成导流,宏观上类似支付行业的创新情况。Paymaster 创新方向较为单一,但是价值捕获最稳定的一环,降低 web2 用户进入web3 的门槛,可能会有大量web2 机构部署 Paymaster 服务。

○ Bundler 是机会最多的组件之一,其本质和 relayer 类似,盈利方向主要围绕着打包交易延伸出的一系列机会(如赚取 gas 差价、MEV 和偏向 B 端需求的隐私池),但交易打包不成功会导致 bundler 亏钱,因此选交易是难题。

▪ 本身具有节点和 Relayer 服务的协议搭建 Bundler 网络会更容易,如 Rpc 作为分部化设施能帮助 bundler 去中心化;

▪ Bundler 跟 searcher、sequencer 合作是一个更好的选择,未来可能通过 mev share 形式在各个渠道将收入反馈给用户,最终会越来越公平化;

▪ Bundler 目前都是私有池,无公共池,目前仅 stackup 运营好且盈利,Biconomy 一般;

▪ Bundler 是一种盈利较难但是生态十分需要的公共物品,但市面上无成熟的公共物品运营方案,且目前多数项目方处于盈利考虑会更偏向将其私有化;

▪ Bundler 面临的技术改进方向有:避免 nonce 碰撞, p2p 网络可通过标记和删除优化此类问题;以及修改合约 storage 导致 bundler 无法获得足够的补偿,该部分需要通过提案进行后续优化。

○ AA 与 MEV 的结合:AA、Sequencer 和 intent 本质上延长了链上操作的链条,MEV 需要贿赂的链条更长,AA 的 Bundler 和 intent solve 都有可能与 MEV 链条中的 Searcher 等角色合作来形成 MEV share 形式。由于 AA 提供了 Bundler 和 entrypoint 合约,理论上 AA 也能去分享 PEV(Prover Extractable Value) 的收入;

○ NFT:本身使用体验的提升就能吸引更多新用户,同时能让市场监测和交易更加自动化。ERC 6551 与 4337 在用户感知层面,都具备了账户能力,可集成全链游戏、DID 和中间件。后续全链游戏需要 ERC-6551 的可组合型,完成多链 可交易装备账号等游戏体验;

○ 社交和游戏:身份基础设施的优化会大大提升产品易用性,且全链游戏操作门槛的降低 账号模型优化 多链账户体系将会带来多链游戏世界观;

• AA 与 intent:

○ 本质上,intent 与 AA 没有必然的绑定关系。Intent 本质上是用户体验层创新、更好更快的理解并分解用户需求,将其变成一个或者多个 UserOperation ;AA 是后端优化,对用户指令的更好执行。telegram bot 是典型的 Intent 创新,但后端仍然采用 EOA 钱包,不影响用户体验。

○ Intent 是对特定目标求解其最优 op 路线的过程。过往的 Intent 偏向简单需求,后续可能形成:多条件、多步骤、多执行环境的复杂问题,甚至引入 AI agent。

○ Intent 机会:操作端可减少签名次数,提升用户体验。应用端可依据意图叙事形成新基建、新语言和新的求解形式,是未来最具潜力的用例之一

▪ 中间商意图池 or 意图公链:基于意图的应用程序不仅涉及与智能合约交互的新消息格式,还涉及替代内存池形式的传播和交易对手发现机制。设计一种既兼容激励又不集中的意图发现和匹配机制较困难。

▪ Solver 多样化实现路径:短期已经较成熟的各类 Super Smart Contract 会率先集成,长期看来自由度更高的 AI 将是最理想的形态,但实现难度非常大;Solver 会带来先链下预处理后上链的新范式,利好一些自动化协议(如 Uniswap X) ;目前 ZK 协处理器 Axiom 可作为隐私 solve 的一种 demo。

▪ 新语言来表达意图:目前已有 Juvix 和 Essential,此类项目先发很重要,需要提前构建用户对其的信任;

○ 钱包和入口机会:钱包完全可以作为意图层构建端,其战略地位大大增加,可以成为各个协议的引流基建和入口。Intent 后端可集成传统的 EOA、MPC 和智能合约钱包;交易类和跨链类应用都将随着入口端的多样化改善体验(如自动化、多方案);

○ ZK 类应用机会:用户的 Intent 有大量加密需求, 4337 本身机制即可满足隐私付费,更深度的集成将在 zkProof 市场中发展。

○ 风险和门槛:意图需要强大的信任预期,对应高准入门槛,导致过于中心化和创新不足。

• 重点项目:

○ 账户抽象市场有两类参与者:一类是具有社交登录与恢复、gas 抽象、交易批处理,以及集成和聚合第三方服务(如法币出入金和 DeFi 协议)等功能的智能合约钱包,该赛道初创项目多,方案初级;一类是 Bundler 和 Paymaster 的模块化提供商,除了 biconomy 和 stackup 外大多处于初期。

○ 重点项目:Biconomy、Stackup 和 Pimlico 是目前市面上较成熟的 4337 方案,继续完善 SDK 和模块化方案有助于占领先发市场,实现技术方案的高市场覆盖率,目前 Stackup 已实现两种类型的 Paymaster 和 Bundler 模式,未来全流程方案 多种组件库将是此类龙头项目继续扩大优势的途径。

▪ Pimlico 的 bundler 市占率(全链 bundle 的 userop 占比52% )和盈利(polygon 上盈利第一, 7 月达 637 MATIC,optimism 上也是正盈利)都领先;

▪ Stackup 各链都有 bundler 业务,Arbitrum(8 月 5 ETH)和以太坊(7 月 0.4 ETH)上盈利领先。bundler 处于失败的多但是赚得也多的状态;

○ 创新项目:隐私是硬需求,如 ZK 协处理器 Axiom 可作为隐私 solve 的一种 demo;Nocturne 是可组合的隐私 AA 层,用户从 EOA 或者合约存入资金后与合约交互,利用 zkp 实现隐私保护。AI 是市场热门,如 Echooo Wallet 结合了 MPC 和 AI 技术,可以达成多签和 AI 风险监测;同时基于传统项目的创新也是亮点,如 uniswap 团队的 Universal Paymaster 可以匹配钱包用户和 Paymaster 运营商双方的流动性市场。

• 其他 EIP 和机会:

○ 与 4337 相关的 EIP,由于官方给定了 4337 的方向,目前大多数提案主要围绕着优化 AA 部署的方向。如 ERC 6551 是 4337 衍生产品的辅助;EIP 6662、ERC 6900、ERC 1271、ERC 6492、EIP 7204 与 EIP 7197 均是优化 AA 方向;ERC 7377 则有助于后期账户迁移;

○ 其他获奖项目:以太坊 23 年一二季度共资助了 4 个账户抽象相关的项目,其中两个为 4337 官方团队出品(AA 官方团队和其开发的 4337 浏览器钱包 trampoline),另外两个主要围绕 4337 与现有协议/技术的组合性产生的创新项目( zkShield 是用 ZKP 和帐户抽象来隐藏帐户所有者的私有多重签名,Uniswap 团队推出的 Universal Paymaster 是作为 ERC-20 Gas 支付的单一流动性匹配市场)

• 未来发展:短期主要是扩张市场,同时和 layer 2 形成共同促进的模式;中期主攻模块化的 Bundler 和 Paymaster 的落地以及 SDK 的部署,同时在细节上优化使用体验(如降低 gas 成本、添加可选的 EOA-to-ERC-4337 转换等);长期则考虑强制转换 EOA 钱包。

1.账户抽象介绍

• 定义和概要:

○ 账户抽象的本质是:交易来源和签名的解耦;

○ 为什么我们需要账户抽象: 1)简化账户类型;2)将账户与签名分离,给予链上行为更多自由度,同时将账户放置于更高的安全级别;

○ 账户抽象的演进:直接区分工程量和复杂度较大,EIP 2938 和 EIP 3074 又需改动共识层,最终选择无需改动底层的 EIP 4337 方案。

• ERC 4337 的原理:

○ 角色:EIP 4337 将智能合约钱包及其相关基础设施标准化为五个合约接口:打包器(Bundler)、入口点合约(Entry Point Contract)、代付合约(Paymaster)、智能合约钱包工厂(Wallet Factory)和签名聚合器(Signature Aggregator)。以及一个新的交易类型(UserOperation)。

○ 交易步骤: 4337 在未修改以太坊共识层的情况下,引入新操作逻辑 useroperation 并加入 Bundler 负责打包 userop。在原先流程后加入 EntryPoint 和 Wallet 合约将验证和执行过程拆分来完成自定义任务执行,最后通过 Paymaster 将 gas 费的支付逻辑抽离。用户发起 userop — userop 被发送到“用户 userop 内存池” — Bundler 负责将选中的 UserOps 打包成一笔交易提交给 EntryPoint — EntryPoint 验证用户操作,智能合约钱包将用户操作执行并纳入区块。

• 4337 与其他方案的对比:

○ EIP-3074 的 AA 方案:需引入两个新的 op code 使 EOA 账户使用合约,涉及到共识层更改,因此被放弃;

1.1 定义和方案概要

• 账户抽象是什么:

○ 以太坊有两种类型的账户:外部账户(EOA)和合约账户( CA),EOA 作为传统方案过于依赖密钥管理和 ECDSA 签名,操作逻辑死板,其让签名权和账户严格绑定的机制会影响新用户的进入和后续发展;

○ 需要一种方案允许用户使用包含任意验证逻辑的智能合约钱包来解决此类问题,这种方案称为账户抽象(Account Abstract, AA),原理是将交易来源和签名解耦。

• 为什么我们需要账户抽象: 1)简化账户类型;2)将账户与签名分离,给予链上行为更多自由度,同时将账户放置于更高的安全级别;

• 账户抽象的演进:直接区分工程量和复杂度较大,EIP 2938 和 EIP 3074 又需改动共识层,最终选择无需改动底层的 EIP 4337 方案。

○ 直接区分:如通过 EIP 86、EIP 101、EIP 859 来增加新的交易类型进行区分;

○ 提升某个类型账户的地位:

▪ EIP 2938 ,让合约账户成为可以支付费用和执行事务的“顶级”账户;

▪ EIP 3074 ,引入两个新的 op code 使 EOA 账户使用合约;

○ EIP 4337 :引入新操作逻辑 – 用户操作池;

1.2 ERC 4337 基础知识原理

• 简介: 2021 年 9 月,Vitalik Buterin 与来自 OpenGSN 和 Nethermind 的以太坊研究人员提出了 EIP-4337 。EIP-4337 添加了新的 UserOperation 内存池希望完全取代当前的交易内存池,从而实现账户抽象。

角色

• UserOperation: 用户需要发起的交易,会被打包发送给 Bundler ,并与其他 UserOperations 一起打包为一个 Bundle;

• Bundler:负责从交易池中选择交易,打包多个 UserOperations 并创建 EntryPoint.handleOps() 交易的节点。

• EntryPoint:处理交易验证和执行 UserOperations 捆绑包的智能合约,它充当了 Bundler 与智能合约钱包之间的中间人:

• Wallet contract:可为 4337 用户创建合约钱包的智能合约;

• Aggregator:用于验证聚合签名;

• Paymaster:可以帮助用户支付 gas 费的智能合约。

交易步骤

• 交易签名:用户发起一个钱包用户操作,使用任意形式的私钥对用户操作进行签名(指令不变,但内容字段变化,可选用非 ECDSA 签名)产生一个带有签名的用户操作(UserOperations),该 UserOp 会被发送到待执行用户操作内存池等待处理;

• 发送交易:Bundler 将用户操作内存池中的用户操作进行打包,后再单独签名一笔交易来包裹用户的指令,批量将 UserOp 处理成一个事务并提交给入口点合约;在将多个 UserOperations 打包在一起后,Bundlers 首先会模拟交易,检测是否会出现合约执行失败,并计算 Gas 费是否足够。若模拟通过就将这批 UserOperations 作为一个交易提交给出块节点;

• 处理用户操作:入口点合约验证钱包是否存在 – 要求钱包验证用户操作 – 将用户操作发送至智能合约钱包进行执行,它充当了 Bundler 与智能合约钱包之间的中间人;

• 区块上链:智能合约钱包将用户操作执行并纳入区块。

1.3 对比传统钱包和 MPC 钱包

1.4 EIP-3074 的 AA 方案

• EIP-3074 :需引入两个新的 op code 使 EOA 账户使用合约,涉及到共识层更改,因此被放弃;

• 如果说 EIP-4337 是让 CA 的账户钱包可以像 EOA 那样使用,那么 EIP-3074 就是让 EOA 外部钱包可以拥有智能合约账户的可编程功能。核心是通过签名,许可别人使用我的账户发出指令。

• EIP-3074 加入了两个新的 OpCodes,分别是 AUTH 和 AUTHCALL,它倾向让 User(EOA)可以以合约(Invoker Contract,Invoker 是不可升级的)代理自己执行各种动作,同时让开发者能以一个更具弹性的框架来设计交易物件和验证机制(签章演算法),使任何的 EOA 可以像一个合约帐户(Contract Account)一样运作,却不用自己布署任何合约。

• 优点: 1)自由度更高,可实现例如批次交易、包装交易、手续费缴交、多签等方式;2)可多手续费支付,外部账户也能通过其喜欢的代币支付 Invoker 手续费;

• 缺点: 1)EIP-3074 涉及到庞大的共识层的改动,一旦出问题就需要使用硬分叉(hard fork)来解决问题; 2)由于 EIP-3074 是让 EOA 外部拥有账户拥有智能合约账户的特性,在签名机制上依旧使用固定的 ECDSA 签名,无法像 EIP-4337 那样可以使用任意签名方式;

• EIP-5003 :是 EIP-3074 (AUTH 和 AUTHCALL)的扩展提案,它引入了新的 AUTHUSURP 操作码。如果使用 EIP-3074 机制,EOA 地址 A 已授权另一个地址 B 代表它行事,则 AUTHUSURP 允许 B 设置 A 的代码。即将现有的 EOA 升级为合约,并允许其从 ECDSA 迁移到更高效或抗量子签名方案。

2.多链账户抽象方案

总结

• 两个路线:兼容 4337 方案(4337 compatible method),原生账户抽象方案( native account abstraction)。

• 兼容 4337 方案:

○ 目前 Arbitrum、Polygon、Optimism 和 BNB 没有原生集成账户抽象。不过更多是通过 4337 相关产品进行支持(如 Biconomy、Stackup 等),基础设施的搭建依旧处于概念阶段;

○ Arbitrum 在今年 7 月已通过对 AA 的端点支持提案;

○ Polygon zkEVM 在其官方文档中表明后续会支持多代币支付 gas;

○ Optimism 和 BNB 提供了部分帐户抽象基础设施,如 Alchemy、Biconomy、Pimlico 和 Stackup 等。

• 原生账户抽象方案:Starknet 和 zkSync 两条链支持原生的账户抽象,区别于 4337 方案

兼容 4337 方案

• Arbitrum:

○ Arbitrum 已在 23 年 7 月 17 日通过有关对账户抽象端点支持的 AIP-2 提案,目前 Offchain Labs 已正式在 Arbitrum One 与 Arbitrum Nova 上激活对账户抽象端点的支持;

○ 该提案称,以太坊研究者提出一种新的 RPC 端点 eth_sendRawTransactionConditional,使 L2 定序器适应 ERC-4337 捆绑器(bundlers)的特定需求。

• Polygon:

○ Polygon 兼容 4337 ,已经释出有关元交易相关的解决方案,如 Biconomy(多链中继协议)、 Gas Station Network (GSN) (去中心化公共物品协议,能帮助抽象用户支付 Gas 的过程)、Infura(节点提供商)和 Gelato(中继器 SDK,可多代币支付)

○ Polygon 在其官方文档中表明,Polygon zkEVM 通过 ERC 4337 支持帐户抽象并将允许用户使用任何代币支付费用,更多细节待释出。

• Optimism:目前 OP 主网上提供了部分帐户抽象基础设施,如 Alchemy、Biconomy、CyberConnect、Pimlico 和 Stackup 等项目,架构细节暂未释出;

• BNB:在 BNB 链 2023 年技术 roadmap 中,官方表示将会建立账户抽象基础设施,目前 4377 已在 BNB 上兼容,待更多细节释出。

原生账户抽象方案

• Starknet 原生支持账户抽象,即所有的帐户都是智能帐户。

○ 方案目标:签名抽象(不同的账户合同使用不同的签名验证方案)和支付抽象(不同的交易支付模式和代币形式)

○ 流程:交易在放入池中之前先验证 nouce,后被发送到账户智能合约的地址上进行验证,再添加到区块中。这两个阶段被编码在账户合约中的两个单独的函数中 validate 和 execute。

▪ Sequencer 首先要求账户合约验证交易;为了防止 DoS 攻击,接受交易的 Sequencer 在将交易添加到 mempool 并广播给其他 Sequencer 之前,必须根据已知状态进行本地模拟。

▪ 成功完成模拟后,交易被执行,进入池中并在网络中传播。

○ Starknet 和以太坊方案的差异:

▪ Starknet 原生账户抽象中,所有的帐户都是智能帐户,必须包含 validate 和 execution 函数,用户在这两个函数中实现任意逻辑来拓展账户功能。

▪ StarkNet 支持多种椭圆曲线,签名验证高度可编程;validate 通过验证签名确保只有账户所有者才能发起交易,同时保证交易执行者可以获得足够的 gas 费,用户可以在 validate 函数中实现不同的验签算法;

▪ 消除 Bundler 带来的额外复杂性:Starknet 通过指定 Sequencer 来履行 Bundler 的角色从而简化流程;

▪ Starknet 无类似 Paymaster 的交易手续费抽象协议;

▪ Starknet 不区分常规交易和 UserOperations:因为 Starknet 所有交易都是由合约账户触发的。在以太坊中,Bundlers 执行 UserOperation 交易,而在 Starknet 中,序列器(Sequencer)执行所有交易;

▪ 部署合约账户的方式不同:

• Starknet 先部署合约账户才可调用,Starknet 要求有代币余额的账户通过调用一个专门的 deploy_account 函数来创建新的合约账户,这个被部署的帐户合约可以支付 gas;

• EIP 4337 无需提前部署,Bundler 通过执行 initCode 参数不为空的 UserOperation 交易来部署合约账户,部署过程不必须有代币余额的账户,gas 费可以由 Paymaster 代付;

• zkSync:zkSync Era 属于 native account abstraction 方案,但同时 EVM-Compatible。

○ 方案目标:签名抽象(不同的账户合同使用不同的签名验证方案)和支付抽象(不同的交易支付模式和代币形式)

○ 流程:用户从本地将签名的 Transaction 送给 Operator ,Operator 把 Transaction 送给 bootloader 进行验证,完成验证和获取手续费后,booteloader 会呼叫 Account Contract 上的 executeTransaction 来执行交易

○ zkSync 方案与 4337 的差异:

▪ zkSync 不区分 EOA 和合约账户;

▪ zkSync 允许 validateTransaction 函数调用已部署的外部合约:因为已部署的合约在 zkSync 中是不可更改的(immutable);而以太坊禁止验证函数调用外部合约,以防止状态更改(state change)造成交易验证通过而交易执行失败;

▪ zkSync 允许 validateTransaction 和 Paymaster 调用发出此交易合约账户的外部存储:如合约账户在外部合约上的代币余额,而以太坊禁止。

zkSync、Starknet 和 4337 方案比较

• 相似:

○ zkSync、Starknet 和 4337 的 AA 机制流程都相仿,皆为 Verification Phase → 手续费机制(由 Account Contract 支付或者 Paymaster)→ Execution Phase;智能合约钱包接口分为 validateTransaction 和 executeTransaction;

○ 面相 DoS 威胁:zkSync 的合约逻辑只允许触碰自己的 slots,其合约逻辑不可以使用到 Global 变量;Starknet 的 Sequencer 在将交易添加到 mempool 并广播之前,要求其必须进行本地模拟;4337 的 UserOperation 为 validateUserOp 步骤做了 gas 限制,且 Paymaster 需质押代币。

• 差异:

○ 原生 AA:zkSync 和 StarkNet 都是原生账户抽象,架构区别于 4337 ;

○ 链上 Gas 消耗: zkSync 和 StarkNet 都是 layer 2 ,需要考虑 Rollup 费用;

○ 执行 AA 的角色不同:zkSync 架构中 Operator 和 bootloader(System Contract)配合完成 User operation; StarkNet 中 User operation 由 Sequencer 负责,没有 Bundler 和 Paymaster 机制;4337 中 Bundler 与 EntryPoint 协作执行 User operation;

○ 是否可以在 Account Contract 部署前送出交易:在 StarkNet 和 zkSync 中都没有像 4337 的 EntryPoint 有 initCode 这个 field 能让其替用户部署 Account Contract,所以都不可以在部署账户前送出交易;

○ 调用外部合约:zkSync 允许 validateTransaction 函数调用已部署的外部合约;而 4337 和 Starknet 都不可以;

○ Paymaster 的验证规则:

▪ Starknet 无 Paymaster;

▪ 4337 Paymaster 接口定义了 validatePaymasterOp 和 postOp 两个函数,前者定义了 Paymaster 代付交易的逻辑,后者可以确保在交易执行后,Paymaster 能够抽取 gas 费补偿。Paymaster 需要在入口点合约上存入以太坊(支付 gas)和质押以太坊(防止机器人恶意批量创建);

▪ zkSync 类似 4337 ,接口定义了 validatePaymasterOp 和 postOp 两个函数,逻辑和 4337 一样,但这部分功能尚未实现。且 zkSync 的 Paymaster 在 gas 足够时调用 postTransaction 才会开始执行,这个部分有别于 4337 , 4337 如果在 validatePaymasterUserOp 没有回传 context 的情况下不会呼叫 postOp,反之才会。

3.发展数据

• 总结:

• 以太坊、Arbitrum、Optimism 和 Polygon 已部署了超过 52 万个 ERC-4337 账户,其中 80% 以上的账户是 7 月刚刚创建的;

• Polygon 和 Optimism 在 7-8 月借着 AA 产品的推出达成大幅增长:Polygon 是由 CyberConnect 网络的推出带来一波流量,Optimism 是由 Beam 钱包和 ZeroDev 带来的增长;

• Arbitrum 和以太坊的热度较低,仅有几百至几千的 userops;

• Bundler 和 Paymasters 目前在做的协议较少,目前各个链上都被 Pimlico、StackUp 等项目垄断。

欧易安卓下载:立即前往

欧易IOS下载:立即前往

打开APP,领取最高价值60,000元数字货币盲盒

免责声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。