比特币现金BCC

深度丨Vitalik 提出的EIP-2938将给ETH带来哪些改变?

矿业 2021-08-06 07:06114www.duxinshilongwang.net未知

ETH有两类型型的竞价推广账户。外部自有竞价推广账户(EOA)和合约竞价推广账户(CA)。EOAs由私钥控制,而CA由其中包含的智能合约代码控制。EOAs一直比CA更有特权,由于只有EOAs可以通过支付gas开始买卖实行。竞价推广账户抽象是一个提案,它允许合约像EOA一样成为一个 "顶层 "竞价推广账户,其可以支付成本并开始买卖实行。

竞价推广账户抽象的动机是显著改变用户在钱包、去中心化应用和去中心化的金融等各种场景下与ETH进行交互时的客户体验。竞价推广账户抽象在ETH中提供了一个基础层的功能,来决定什么时间可以支付gas,与对哪个支付gas等问题。

Status Messenger应用集成了一个以隐私为中心的信息管理软件,与一个ETH钱包和一个Web3 DApp浏览器。Status wallet现在是一个EOA钱包,它限制了大家提供只有智能合约钱包才能提供的丰富的客户体验,如多重签名安全、社交恢复、利率限制、允许/拒绝地址列表和无gas的元买卖。现在智能合约钱包的客户体验到了gas 费波动的影响,并且第三方中继器没办法有效解决这个问题。而竞价推广账户抽象旨在解决这个问题。

在本文中,大家提出了智能合约钱包背景下对竞价推广账户抽象的需要。然后,大家通过描述协议变化和对节点的影响深入探讨竞价推广账户抽象的重要方面。最后,大家讨论了一些扩展的建议,并通过合理化与ETH接口的Status项目的计划路线图来结束,这部分项目可能都会遭到竞价推广账户抽象的影响。

竞价推广账户抽象刚开始是在2021年以EIP-86的形式提出的,目的是达成 "买卖出处和签名的摘要",但这一想法的由来可以追溯到更早的2021年。当时有人建议:"与其有一个协议内机制,将ECDSA和默认的nonce策略作为唯一的 「标准 」方法来保证竞价推广账户的安全,不如采取初步手段,打造一个模型,从长远来看,所有些竞价推广账户都是合约,并且合约可以支付gas,用户可以自由概念我们的安全模型。"

刚开始的建议被觉得是具备挑战性的,由于需要改变很多协议并且需要保证安全性。近期,Vitalik等人提出了EIP-2938的草案,该草案概述了一个更容易达成的办法:通过将协议/共识的变化最小化,并通节日点mempool规则强制实行所需的安全保证。由Sam Wilson和Ansgar Dietrichs写作的Vitalik的ETH Engineering Group Meetup presentation和以太币 Online presentation为这个主题提供了更详细的介绍。本文重点介绍了所有这部分出处的重要内容。

动机:竞价推广账户抽象背后的动机原理很简单,但却是根本性的:今天的ETH买卖具备可编程的成效(通过调用智能合约达成),但它们只具备固定的有效性,即只有当它们具备有效的ECDSA签名与有效的nonce,并且具备足够的竞价推广账户余额时,买卖才是有效的。竞价推广账户抽象通过引入一种新的竞价推广账户抽象买卖种类,将买卖从固定有效性升级为可编程有效性。这种竞价推广账户抽象买卖种类一直来自一个特殊的地址并且协议无需对其进行签名、Nonce或余额检查。这种竞价推广账户抽象买卖的有效性由目的智能合约决定,目的智能合约可以实行我们的有效性规则,之后它可以决定为这种买卖付款。

那样,为何这个非常有用呢?大家以ETH钱包为例来强调竞价推广账户抽象有哪些好处。

智能合约钱包:现在大部分ETH钱包都是EOA钱包,它由种子短语生成的私钥保护。 用户应该把种子短语写在安全的地方,由于将来在另一个钱包上恢复密钥时可能需要它。然而,这种钱包比较容易遭到私钥失窃或种子短语丢失的影响,从而致使用户的资金损失。

智能合约钱包是通过智能合约在链上达成的。这种钱包通过达成多签名安全、社交或基于时间的恢复、买卖或金额的速率限制、允许/拒绝地址列表、无gas买卖和批量买卖等功能,提供可编程的功能缓解风险与用户友好体验。

虽然智能合约钱包暴露在易受攻击的智能合约的安全风险之下,但钱包提供商实行的安全测试和审查可以减轻这种风险。EOA钱包的风险完全在于钱包用户,他们被委托负责种子短语的安全,而在智能合约中没任何可保障安全的程序。

智能合约钱包的例子有Argent、Authereum、Dapper、Dharma、Gnosis Safe、Monolith和MYKEY。如下图所示,这种钱包的使用率好像在增加。

Argent通过他们的Guardians定义达成了无密钥社交恢复功能,其中Guardians是用户信赖的人或设施,可以帮找回用户的钱包。Argent还旨在达成类似银行的安全性(通过每天买卖限额、竞价推广账户锁定和可信联系人等功能)与类似Venmo的可用性(通过用以太坊域名服务名字而非地址和支持元买卖)相结合。

Gnosis Safe是一个多签名的智能合约钱包,专注于团队管理资金,需要团队成员的最低数目(m-of-n)批准买卖才能发生。它还可以通过元买卖达成无gas签名。

所有这部分一流的钱包功能都需要用健全的智能合约。钱包用户要么需要与EOA进行交互,要么依靠钱包提供商通过提供商的中继器或第三方中继器互联网(如 Gas Station Network)来支持元买卖。前者依靠于在KYC后的中心化交易平台购买以太币,而后者旨在通过将用户的负担转移到中继器上,以降低这种上链客户体验摩擦,其本钱由钱包提供商链上/链下和/或用户链下补偿。

然而,基于中继器的构造有三个主要缺点:它们可能会被觉得是中心化的中介机构,大概会对买卖进行审查因为中继者的买卖需要额外的2100菜鸟gas fee,而且它们的业务需要在gas fee以外获得收益,因此在技术/经济上效率低下用中继者专用协议迫使应用依靠非基底层的ETH基础设施,其用户群较小,可用性保证不确定。

竞价推广账户抽象将使智能合约钱包可以同意用户的无gas买卖,并在不依靠中继层互联网的状况下为其支付gas 费。因此,这种基层能力将很大地改变这种钱包的入驻客户体验,而不会牺牲ETH的去中心化保障。

Tornado Cash:一个有关的动机应用是混币器,如tornado.cash,其中Tornado通过用智能合约打破地址之间的链上联系来改变买卖隐私,该合约同意以太币存款,随后可由不一样的地址提取。用户在存款时需要提供秘密的哈希值,之后在提现时提供zkSnark证明,以显示对秘密的认知,而不泄露秘密或之前的存款本身。如此就把提现和存款脱钩了。

但提现存在一个问题,要从新生成的地址中实行提现买卖,用户需要在里面有一些以太币来支付gas。这个以太币的出处(通常是交易平台)会破坏Tornado的隐私。最佳选择的替代策略是第三用中继器互联网,但它有前面概述的缺点。

竞价推广账户抽象将解决这个问题,允许Tornado合约同意用户的提现竞价推广账户抽象买卖,然后验证zkSnark并扣除一些gas费(从之前的存款金额中扣除),然后将剩余的存款金额转到提现地址。

EIP-2938号文件提出的竞价推广账户抽象,允许合约成为支付成本和开始实行买卖的最高级竞价推广账户。这是通过引入协议变化达成的,新的竞价推广账户抽象买卖种类需要两个新的操作码:NONCE和PAYGAS,对mempool的规则进行改变与支持高级使用方法的扩展。竞价推广账户种类仍然有两类型型(EOA和合约竞价推广账户),所有拟议的变化都与目前的买卖、智能合约和协议向后兼容。

竞价推广账户抽象的应用分为两个方面考虑:1)单租户应用,如智能合约钱包,为每一个用户创建一个新的合约 2)多租户应用,如tornado.cash或Uniswap,多个用户与同一套智能合约交互。

竞价推广账户抽象对多租户应用的支持需要更多的研究,建议作为将来的工作。所以大家将在本文中重点讨论单租户竞价推广账户抽象的支持。

引入了一种新的买卖种类,与两个支持NONCE和PAYGAS的操作码。这部分是唯一的协议变化。

竞价推广账户抽象买卖:引入了一种新的竞价推广账户抽象买卖种类AA_TX_TYPE。它的有效种类被讲解为RLP,而不是现有些买卖种类。后者的有效种类是RLP。

竞价推广账户抽象买卖中省略的gas_price和gas_limit在实行过程中由目的竞价推广账户抽象合约指定。竞价推广账户抽象买卖中省略的 ECDSA 签名 v、r、s 由特定合约对数据进行验证检查代替。to 地址由目的合约地址代替。之所以省略该值,是由于所有竞价推广账户抽象买卖的始发地址是一个特殊的ENTRY_POINT地址,而不是与之有关联的EOA值。

假如检查失败,则买卖被觉得是无效的,不然,tx.target.nonce将被递增,买卖继续进行。

竞价推广账户抽象买卖的基本gas本钱建议为15000,而不是现在的21000(以反映缺少内在ECDSA签名所节省的本钱)。除此之外,竞价推广账户抽象买卖没内在gas限额。在开始实行时,gas限值仅需设定为该组的剩余gas。

NONCE操作码:NONCE操作码将被调用者的NONCE压入EVM堆栈。因此,Nonce暴露给EVM,以允许对所有买卖字段(包括nonce)进行签名验证,作为竞价推广账户抽象合约中验证的一部分。

PAYGAS操作码:PAYGAS操作码从堆栈中取出两个参数: version_number, memory_start. version_number允许将来的达成改变opcode的语义。现在,该操作码的语义如下。

检查 version_number == 0

提取 gas_price = bytes_to_int

提取 gas_limit = bytes_to_int

检查contract.balance >= gas_price * gas_limit

检查 globals.transaction_fee_paid == False

检查AA实行框架==顶层框架,即假如目前EVM实行退出或还原,则整个事务的EVM实行终止(不然抛出异常)。

设置contract.balance -= gas_price * gas_limit。

设置 globals.transaction_fee_paid = True

设置 globals.gas_price = gas_price 和 globals.gas_limit = gas_limit。

设置目前实行上下文的剩余gas=gas_limit-已经消耗的gas。

在竞价推广账户抽象买卖实行结束时,(globals.gas_limit - remaining_gas)*globals.gas_price转移给矿工,竞价推广账户抽象合约退还 remaining_gas * globals.gas_price。

PAYGAS作为EVM实行检查点。在此点之后的任何还原都只能还原到这里,然后合约不同意退款,globals.gas_limit * globals.gas_price转移到矿机。

新的买卖种类和两个新的操作码构成了协议/共识层面的变化,它们的语义是很容易理解。

"Mempool "指的是ETH节点内部的一组内存数据结构,它在挖矿前存储候选买卖。Geth称其为 "买卖池";Parity称其为 "买卖队列"。无论名字怎么样,它都是一个坐在内存中等待被纳入区块的买卖池。把它看成是一个 "等待区",等待买卖被同意到一个区块中。"

现在,通过固定的买卖有效性规则,矿工和其他节点仅需最小的努力就可以验证其mempool中的买卖,从而防止DoS攻击。比如,假如一个矿工拥有有效的ECDSA签名、有效的nonce,并且有足够的竞价推广账户余额,就可以确定某笔买卖将真的支付成本。该矿工的mempool中的其他买卖只有在来自同一地址,并且,增加nonce或充分降低竞价推广账户余额的状况下,才可能使这个待处置的买卖无效。这部分条件在计算上是最小的,以使矿工和节点对其mempools有足够的信心,分别进行区块等待或重播。

竞价推广账户抽象买卖以其可编程的有效性引入了更多的复杂性。竞价推广账户抽象买卖不支付任何前期gas,并依赖其目的竞价推广账户抽象合约来支付gas(通过PAYGAS)。从定义上讲,竞价推广账户抽象买卖处置分为两个阶段:较短的验证阶段(PAYGAS之前)和较长的实行阶段(PAYGAS之后)。假如验证阶段失败(或抛出异常),买卖无效(就像今天无效签名的非竞价推广账户抽象买卖一样),不会被包含在一个区块中,矿工也得不到任何成本。

因此,矿工和节点需要一个可预测的机制来防止一个待处置的竞价推广账户抽象买卖的有效性对mempool中其他待处置买卖的依靠性。不然,一个买卖的实行可能会使mempool中的很多/所有竞价推广账户抽象买卖无效,致使DoS攻击。为了防止这样的情况,有两个建议的规则要在mempools中的竞价推广账户抽象买卖上实行(由矿工和节点实行,但不是在协议本身)。

为了预防竞价推广账户抽象买卖的有效性取决于竞价推广账户抽象合约本身以外的任何原因,以下操作码在核查阶段被视为无效:PAYGAS之前):环境操作码(BLOCKHASH、COINBASE、TIMESTAMP、NUMBER、DIFFICULTY、GASLIMIT)、BALANCE(任何竞价推广账户,包括目的本身)、对目的以外的任何事物的外部调用/创建或预编译(CALL, CALLCODE、STATICCALL、CREATE、CREATE2)和读取代码的外部状况访问(EX总拥有成本DESIZE、EX总拥有成本DEHASH、EX总拥有成本DECOPY、DELEGATECALL),除非地址是目的。

节点要放弃mempool中以竞价推广账户抽象合约为目的的竞价推广账户抽象事务,打破这个操作码限制规则。这确保了只须竞价推广账户抽象合约状况不发生变化,mempool中的有效竞价推广账户抽象事务将维持有效。

假如非竞价推广账户抽象事务可以影响竞价推广账户抽象合约的状况,那样就会干扰mempool中竞价推广账户抽象事务的有效性。为了预防这样的情况的发生,竞价推广账户抽象事务应该只允许针对那些在其字节码开头有AA_PREFIX的合约,其中AA_PREFIX达成了对msg.sender是竞价推广账户抽象事务的特殊ENTRY_POINT地址的检查。这有效地预防了非竞价推广账户抽象买卖与竞价推广账户抽象合约的交互。

节点要把竞价推广账户抽象事务丢给在其字节码入口点没这个AA_PREFIX的竞价推广账户抽象合约。

对竞价推广账户抽象合约推行的这两个限制一同确保了:竞价推广账户抽象买卖的有效性逻辑所能访问的唯一状况是竞价推广账户抽象合约内部的状况,这个状况只能被其他针对这个特定竞价推广账户抽象合约的竞价推广账户抽象买卖修改。

因此,只有在另一宗针对同一份竞价推广账户抽象合约的等待买卖中,没有完成的竞价推广账户抽象买卖才会失效。然而,鉴于这部分不是协议/共识的改变,矿工可以自由地在区块中包含打破这部分规则的买卖。

上述协议变更和mempool规则允许基本的竞价推广账户抽象合约充分而安全地达成单租户应用,如智能合约钱包。其他需要放宽上述规则或需要达成多租户应用的高级使用方法,则需要竞价推广账户抽象以扩展的形式提供更多的支持,譬如。

SET_INDESTRUCTIBLE opcode,禁用SELFESTRUCT,允许竞价推广账户抽象合约在验证阶段安全地调用DELEGATECALL的库。

IS_STATIC opcode,假如目前上下文是静态的,则返回true,允许非竞价推广账户抽象事务调用者覆盖之前的字节码前缀限制,安全地从竞价推广账户抽象合约中读出值。

RESERVE_GAS opcode,当从一个非竞价推广账户抽象事务调用时,它打造了一个竞价推广账户抽象合约消耗的gas下限,该下限是寻求写入合约状况的。如此做有哪些用途是迫使攻击者不消耗最低数目的gas,以抑制试图使mempool中任何竞价推广账户抽象事务无效的行为。

还有其他的如多个待处置的买卖、验证的缓存结果、验证的动态gas限制和赞助买卖,这部分都是支持多租户应用和zk证明所需要的,如Tornado Cash。关于它们的详细内容不在本文的讨论范围内。

竞价推广账户抽象EIP-2938现在处于草案模式,正在ETH研究平台中进行讨论。EIP的下一步是被考虑纳入即将来临的硬分叉之一。EIP作者的目的显然是Berlin之后的硬分叉(Berlin暂定于2021年初的某个时间),其时间表现在还不是非常明确。所以对于EIP-2938来讲,目前还为时过早。

除此之外,也不了解是不是有必要在ETH基础第1层(L1)加入EIP-2938。鉴于第2层(L2)解决方法的相对灵活性(如大家之前的文章所述),竞价推广账户抽象可以在特定的L2上达成,而无需升级整个L1。然而,即便一些L2达成了我们的竞价推广账户抽象版本,在L1上统一支持竞价推广账户抽象也有好处。因此,竞价推广账户抽象在哪儿达成,怎么样达成,还有待察看。

“竞价推广账户抽象不太要紧是由于不管L1是不是支持,都可以在L2上达成。”--- Vitalik在他关于以大全为中心的ETH路线图的文章中谈到了在基础层将继续起用途的事情)。

Status:Status钱包现在是一个EOA钱包,它有什么区别在于捆绑了一个以隐私为中心的短信系统,并达成了聊天中的支付或Keycard的增强安全性等集成。正在考虑智能合约钱包的功能,如多签和社交恢复,竞价推广账户抽象 EIP-2938的支持或有助于消除对集中式和低效的基于relayer的构造的依靠,如前所述。

Status也在评估L2解决方法,既要支持其钱包中的多链,又要为各种用例提供所需的扩展,如大家在前面的文章中所述。比如,Keycard正在探索一个支付互联网,其信用卡级别的可扩展性和近乎即时的终局性的设计需要是现在ETH互联网没办法满足的。除此之外,还有很多其他的计划,如推荐计划、Tribute-to-Talk和以太坊域名服务名字,所有这部分计划都将受益于L2扩展性,以达成可行的部署和适当的客户体验。假如一个可行的L2解决方法达成了竞价推广账户抽象,那样打造在该L2基础上的项目将可以借助竞价推广账户抽象的优势,而不必依靠L1。

ETH协议的一个基本方面是,只有外部自有竞价推广账户可以支付gas费并开始实行买卖。合约竞价推广账户(CA)不可以如此做。竞价推广账户抽象(AA)是一个提案,旨在改变这种不同,允许专门构建的CA以编程方法检查新型竞价推广账户抽象买卖的有效性,决定代为支付gas费,从而有效地启动其实行,而无需EOA。

竞价推广账户抽象对于显著改变钱包、混币器、去中心化应用和去中心化的金融等各种场景下的客户体验具备意义,而不需要依靠中心化和低效的基于relayer的构造。基本的单租户场景,如智能合约钱包,通过引入一种新的买卖种类、两种新的操作码和两种mempool规则,竞价推广账户抽象可以安全地支持。高级多租户应用,如Tornado Cash,需要对这部分协议变化和节点规则进行扩展。

在这篇文章中,大家提到了智能合约钱包背景下对竞价推广账户抽象的需要。大家通过描述协议变化和对节点的影响来强调竞价推广账户抽象的重要方面。大家触及了一些针对高级作用与功效的拟议扩展,最后,大家在ETH目前的路线图和Status的优先事情中对竞价推广账户抽象进行了定位。

在Web3中降低摩擦和改变客户体验是这个生态系统中所有项目的最重要任务。竞价推广账户抽象,以某种形式,可能一定会在将来的努力中发挥要紧用途。

此文出于传递更多信息之目的,并不意味着同意其看法或证实其描述。本网站所提供的信息,只供参考之用。

比特币现金BCC-BCC今日价格_比特币现金最新消息_BCC行情走势图_比特币现金交易平台 Copyright © 2002-2021 比特币现金BCC (http://www.jlzxjy.com) 网站地图 TAG标签 备案号