账户笼统 Account Abstraction 是 以太坊上的一种待完结的技能计划,按现阶段规划,在完结账户笼统之后,一个智能合约账户也能够自动主张买卖,而无需依靠「元买卖」的机制。

布景

以太坊的账户有两种类型,一种是外部账户,另一种是合约账户。外部地址是由用户的公钥经过哈希运算后取的后 20 个字节,形为 0x76D836358E7A2 BB0F26c32Ce61Dc8DD540b02F7D 。现在的以太坊的业务类型只需一种,有必要由外部地址主张,合约地址无法自动主张业务。因而,任何合约本身状况的改变,有必要依靠于一个外部地址主张的业务,不管是一个多重签名账户,还是混币器,或是任何智能合约的配置改变,都需求由至少一个外部账户触发。这样的规划让以下两件工作无法完结。

无需以太的自动业务

因为业务有必要由外部账户发送并付出费用,而该费用是用以太(ETH)为单位结算的,因而该外部地址有必要持有以太。当然,这种说法并不严谨,当 gasprice 为 0 时,业务无需付出手续费。可这种状况十分极端(见 [1]) ,对于普通用户来说,这样的业务或许永久无法入块。

secp256k1 的原生验证方法

因为业务有必要由外部账户主张,因而每笔业务的合法性查看就是在验证业务是否供给了该账户对应的合法的 secp256k1 签名。而假如要在验证中引进杂乱逻辑(例如多重签名或交际康复)或是选用不同的验证算法(例如 Eddsa、BLS、secp256r1 签名算法,运用这些签名算法是因为它们有特别的特性,或是对零常识证明友好,或是便利签名聚合削减带宽开支,或是与现有的硬件验证器兼容),则有必要在智能合约层面完结。这也一起意味着,这种验证仍要由至少一个外部账户主张,并经过以太坊的 secp256k1 签名验证。

上述两条束缚让普通用户很难运用以太坊。首要,不管运用以太坊上的什么应用,用户都有必要持有以太(并承当以太价格动摇的风险)。其次,用户需求处理杂乱的费用逻辑,gas price、gas limit、业务堵塞,这些概念对用户来说过于杂乱。许多区块链钱包或应用企图经过产品优化进步用户体会,但效果甚微。

怎么处理上述两个问题呢?

中心思路在于将「验证一切权」的操作由共识层下放到合约层,即不去查看业务的发送者是否与财物一切人共同,而是查看其是否供给了合法的凭据。具体的做法为:用户对业务内容进行签名,并将签名交由一个第三方操作上链,这个第三方我们在接下来的文章顶用「运营商(operator)」来指代。这种业务被称为「元买卖」。依据规划理念的不同,元买卖计划大致分为两类:

以账户为中心——智能钱包

以账户为中心的计划的方针是为用户创立一个基于智能合约办理的账户,用户能够运用该账户与区块链上的恣意合约交互。智能钱包的理念由来已久,但在近一年来有了长足的进展。依据「智能钱包趋势」的核算(注:作者为本人,特此声明),现在「智能钱包」的运营商超过 10 家,总用户数超过 14 万。其间大部分智能钱包选用了为用户代付链上手续费的运营战略,再经过其它方法向用户收取费用。

以账户为中心的计划本质上是一套区块链账户体系,通用性强,且能够供给包括账户康复、大额批阅、转账白名单等附加特性。智能钱包的运营者协助用户创立、办理区块链上的可编程身份,并供给业务上链服务。一般来说,智能钱包会为用户付出链上的 gas 费,一起经过中心化计费体系向用户收取费用。这套形式和传统国际里的账户服务很像,例如运营商付出基站、光纤等费用,而用户只需充值话费就能够运用通信服务,而无需关怀底层杂乱的逻辑。

智能钱包也有其掣肘。一是安全问题,二是费用问题。

  • 安全:假如账户合约存在漏洞,那么一切用户的财物都会遭受风险。专业的代码编写、安全审计和形式化验证,都只能削减风险发生的或许,而不能确保它不会发生——Argent 现已发生过。

  • 费用:智能钱包的账户创立需求费用,而转账和任何调用任何合约都会比外部地址花费更多费用。这导致智能钱包的用户需求付出更高的业务费用,这影响了他们的运用体会

以财物为中心——无气通证

无气通证也存在其问题。从现在的运用状况来看,很少有人运用这种特性 (需求数据支撑)。在「智能钱包,不止元买卖」一文中,我剖析了或许的原因,其间之一在于没有办法建立有用的计费体系。

以财物为中心的计划进步了财物的可用性。不同于智能钱包需求创立智能合约账户,无气通证能够支撑外部账户在不运用以太的状况下进行转账,反而是智能合约账户需求兼容更多规范(例如 EIP-2126,让合约能够识别不同类型的签名格局),不然无法让无气通证的合约验证一切权。

以财物为中心的计划的方针是创立答应由第三方付出费用的财物,完结「无需 gas 的通证」。例如,DAI、USDC 都能够答应恣意外部地址运用元买卖的方法发送财物。这些通证协议都运用 EIP-712 协议验证具有者的合法性。

账户笼统的发展史

依据 Matt Garnett 收拾的账户笼统发展前史 [2],从以太坊 2015 年上线起,账户笼统的评论没有停止。本文将依照时刻次序,对账户笼统相关的 EIP 进行扼要介绍。需求阐明的是,该前史漏掉了 EIP-208,我做了相应补充。

EIP-101:钱银与密码学笼统

November 15 th, 2015

在这个 EIP[3] 中,Vitalik 评论了对 Serenity 中的账户体系的规划。这个计划的首要思维是,每个账户都具有自己的「代码」,也即逻辑部分。因为该计划改动过大,与其时业务的兼容性欠好,会形成许多安全隐患,该计划被放置到分片之后。

EIP-86:业务来历和签名笼统

February 10 th, 2017

经过漫长的评论,Vitalik 提出了 EIP-86。EIP-86 是为账户笼统做技能预备,它定义了一种新的账户类型,答应用户创立基于智能合约的账户,该账户是一个署理合约(forwarding contract),存储 Ether,在入口点查看业务的签名,并将验证合法的业务转发到指定的地址,并付出相应的费用。这种机制对多签钱包、环签名混币、自定义的密码算法(例如 ed25519)等场景的完结有更多帮助。

对 EIP-86 的评论展开了很久,值得阐明的是,Vitalik 丰富了协议细节,提出了 EIP-208。EIP-86/208 计划于 Metropolis 阶段晋级,但在第 19 次中心开发者会议 [4] 上,开发者提出了许多问题,并决议在 Metropolis 中暂缓引进,首要理由如下。

  • 账户笼统带来新类型的业务,与传统业务有必要有一个 EOA 作为发送者相比,这些业务没有发送者。这种业务损坏了业务哈希的仅有性,虽然这不会对 EVM 的履行形成影响,可是一切基于「仅有性」假设的外部操作都会收到影响。例如,一切经过业务哈希来定位业务的 RPC 接口。

  • 此外,账户笼统的「无气付出」是一个优化,可是必要性缺乏。因为其功用能够经过「署理合约」完结,仅有的问题是其开支会比原生完结要大一些。

  • 矿工的挖矿战略会遭到极大影响,在被广泛接收前,这些新类型的业务或许无法被很快播送。

  • 这种新类型的业务依然保存了 nonce、gasprice、value 字段,且被设为 0。这十分不优雅,期望未来用新的业务类型处理,而不是引进技能债。

EIP-859:主网上的账户笼统

January 30 th, 2018

与前两个 EIP 不同,EIP-859 并没有形成确定性的草案,而是始终在评论过程中,没有定稿。该提案期望账户合约有一个相对规范的完结,即(1)查看签名(2)付出手续费(3)调用意图账户。

假如 EIP-859 完结,能够笼统(1)签名算法(2)更杂乱的逻辑,而且不会损坏「业务哈希仅有」的特性,但依然不能答应运用 ERC-20 付出费用。

这个提案在第 34 次和第 40 次中心开发者会议的笔记中被提及。依据会议笔记,第 33 次中心开发者会议上决议放置该提案,而是聚焦于 Casper。而 Vitalik 在第 34 次会议 [5] 上供认该提案仍不成熟,但「不管怎样在分片时会完结」。Hudson 指出,君士坦丁堡晋级包括的内容太多了,因而不再考虑该提案。第 40 次中心开发者会议上,大家决议永久放置该提案,无人反对。

EIP-2938:账户笼统

September 4 th, 2020

时刻又过了两年,ETH 2.0 的 Phase 0 现已启动,而账户笼统也被从头提上议程。出乎意料的是,该提案主张在 ETH 1.x 上首要完结。

简单来说,账户笼统的方针是让智能合约成为顶级的账户类型,而非受限制的有必要由外部账户调用的账户,这样智能合约账户就能够自动主张业务并付出手续费。这个方针与 EIP-86 现已有了很大差异,其时的提案期望彻底消除外部账户,或者说将一切的外部账户都变成合约账户,而此提案依然保存了外部账户的存在。

以太坊其时的业务合法性只经过三个参数判别:ECDSA 签名、自增 nonce 和账户余额,因而节点十分简单判别一笔业务的合法性。但是,这势必形成了许多限制。EIP-2938 完结后,以下场景能够自动完结:

  1. 智能钱包运用 ECDSA 之外的算法验证签名;

  2. 智能钱包的其它特性,包括多重签名和交际康复;

  3. 维护隐私的体系,例如 Tornado.cash;

  4. 进步 DeFi 协议 gas 功率;

  5. 用户运用其它 token,而不是 ETH 付出手续费。

现在,以上用户场景也能够经过间接的方法完结。该提案认为这种方法在技能和经济上都不高效。

EIP-2938 分为单租户和多租户两个阶段,顾名思义,其差异在于账户的具有者是单个用户还是多个(不特定的)用户。在单租户阶段能满意 (1)、(2) 和 (5) 场景的需求,而只需在多租户阶段 (3) 和 (4) 才干完结。多租户阶段的技能计划仍未成型。有关 EIP-2938 的更多内容,能够参阅 Status 发表,以太坊爱好者翻译的文章 [6]。

价值是什么?——硬币的两面

毫无疑问,假设账户笼统成功布置,能够带来新的功用特性,但也一定有取舍,不或许得到美好的东西,但不付出什么价值。过去五年的评论给了我们足够的经历,其负面影响甚至因为其杂乱性而难以剖析。虽然如此,本文将企图体系评论其潜在收成和价值,以便读者公允地判别。「账户笼统的收成」参阅了中心开发者 Peep an EIP 文档 [7]。

账户笼统的收成

  • 自动发送业务的智能合约账户。

    • 智能合约账户能够无需 EOA 触发而自动发送业务,削减了对运营商的依靠,且 gas 耗费更少。

  • 进步混币器的隐私性。

    • 现阶段,用户从相似 Tornado.cash 的混币器中提款仍需求依靠一个 EOA 账户发送业务,这个 EOA 账户是露出隐私的软弱环节。完结多租户的账户笼统后,任何人提取代币时,均无需额定付出费用,而直接从提款金额中扣除。

  • 运用其它代币付出手续费。

    • 现阶段,用户有必要运用 ETH 付出网络的手续费,在账户笼统完结之后,用户能够运用其它 token 付出手续费。但这不意味着在协议层矿工会接受非 ETH 作为手续费,而是经过和 DEX 交互交换 ETH 付出手续费。

  • 削减链上无效套利买卖,进步可扩展性。

    • 现阶段,在链上发现套利时机时,或许存在多个套利者一起主张套利买卖,而首笔成功的套利业务会让其他业务的套利行为失效,但这些业务依然会被打包在以太坊中(假如 gasprice 足够,且没有运用相同 nonce 替换该业务),这导致以太坊上存在很多的「垃圾」业务。而完结账户笼统之后,因为能够在账户权限验证阶段进行价格判别,那么套利者无需为失利的套利行为付费,链上也不会包括失利的套利业务,能够有用进步链的可扩展性。

账户笼统的价值

  • 加大内存池验证业务有用性的开支

    • 在现阶段,节点收到一笔业务时,很简单判别其有用性,并将其载入内存池。节点只需求判别三件事:签名的有用性、nonce 的合理性(账户其时 nonce 加 1 或合理的数值)、账户的余额,假如其间恣意一条不满意,节点能够挑选丢掉该业务。非法业务并不会付出手续费,节点是免费「验证」,因为验证 ECDSA 的签名十分简单,开支极低,现在网络的安全性不会遭到挑战。

    • 当引进账户笼统后,判别一笔业务的有用性的难度大了许多,节点需求为无效业务的验证花费更多核算资源,而不能从中收取任何费用。有关 DOS 进犯,拜见 [8]

  • 加大内存池确保业务有用性的开支

    • 现阶段,一旦节点验证某笔业务的有用性,除非该账户运用相同 nonce 发送新的业务并被打包,不然这笔载入内存池的业务将永久有用,直到被打包进某个区块(也或许因为 gasprice 太低而一直没有打包)。而账户笼统之后,判别业务的有用性的难度进步了,内存池中的多笔业务在被打包前能够一起有用,但因为其有用性或许依靠大局状况,存在其间某一笔业务履行后剩余业务悉数失效的或许性。因而,需求建立新的内存池规矩,以防止这种状况的呈现。

  • 引进新的业务类型、计费方法、挖矿和播送战略

    • 首要,引进了新的业务类型。在 EIP-86/208 的评论过程中,一度有一种倾向是「消除」EOA 账户,或者说把 EOA 账户包裹在一个智能合约账户内,这样链上的基本账户类型和业务类型都只需一种。而在本提案中,EOA 账户得以保存,即存在两种类型的账户——EOA 和 AA,也有两种业务类型。一起,AA 业务调用其它合约时有必要加上前缀,以防止 EOA 账户主张对 AA 账户状况的修正,影响业务有用性的判别,这或许会带来兼容性的问题。

    • 其次,计费方法发生了变化。现阶段,矿工无需关怀业务的内容,只需求确认业务的主张方的 ETH 余额大于 gaslimit*gasprice,就能够确保收到手续费。而在账户笼统之后,怎么确保矿工能够收到手续费呢?本提案将一笔业务分拆成两个部分——验证阶段和履行阶段,用一个新的操作符 PAYGAS 间隔。在验证阶段,完结对账户权限的验证,在此阶段不答应调用外部数据或操作账户余额。与现阶段的方法共同,验证经过则付出手续费并开端履行业务,即使业务在履行阶段回滚,也依然会被包括在区块中且付出费用,但验证不经过则丢掉该非法业务。

    • 再者,挖矿和播送战略变得愈加杂乱。为了维护内存池和矿工的安全,引荐的挖矿战略愈加保存。每个账户的待处理业务只保存一个,不再保存更高 nonce 的业务;对验证阶段设置 gas 的容量上限;在 AA 账户主张的业务被打包进入区块之后,需求丢掉掉内存池一切对此账户进行操作的业务。

    • 为了防止前 2 条价值形成的潜在影响,以太坊协议层需求做相应的技能改动。

从头评价「收成」?

要评价账户笼统的必要性,首要无妨来回顾其「收成」。「收成」无非分为两种类型——本来不能做的,现在能够做了;比本来做得更好了。

自动发送业务的智能合约账户。

智能钱包能够做到这件工作,此收成归于一种改善。因为业务的有用性依靠于合格的签名(或其它凭证),而非发送业务的 EOA 账户,因而任何 EOA 账户都能够提交业务,不存在信任或可靠性风险。因为无需转发业务,更少的 gas 耗费是一个合理的「收成」,但能达到整体的最优吗?换句话说,在引进了如此杂乱的技能改动之后,针对相同的业务内容,核算机在相一起间内能够处理更多的 AA 业务还是 EOA 业务?

定论:一种需求技能验证的改善。

进步混币器的隐私性。

现在 Tornado.cash 运用运营商的形式,替代用户提交取款的收据。与智能钱包的运营商不同,隐私运营商或许不够安稳和 ,任何人能够替代提交业务,但隐私场景下的运营商可靠性会低于通用场景,或许形成服务不可用。不过,这需求在多租户阶段才干完结,而现在多租户形式的计划的可行性、安全性依然需求验证。

定论:一种进步服务可用性的改善。但不知道能否上线,何时能够上线。

运用其它代币付出手续费。

现在智能钱包在做相似的工作,例如 Argent、MYKEY 都答应用户运用 DAI 付出手续费,但这一操作并非原子的。运用安稳币等财物经过 DEX 兑换 ETH 付出手续费,乍看处理了本来不能处理的问题,但我想表达的是,真实需求并非是技能齐备性,而是运用安稳的钱银来对抗不安稳的手续费(ETH 价格动摇、gasprice 价格动摇、gas 耗费不确定)。运用链上业务直接置换手续费,有一种每次运用手机联网前,先买充值卡充话费的感觉,好像回到了投币电话的年代。况且这笔业务还有巨大的失利风险,因为链上状况的改变或许影响价格。当然,这并不是说投币电话没有用处。

定论:一种能够完结原子化运用非 ETH 财物付出手续费的改善。但不处理价格动摇问题,真实需求存疑,且计费方法功率低下。

削减链上无效套利买卖,进步可扩展性。

在研究过程中,关于「削减链上无效业务能够进步链扩展性」的论述甚至让我怀疑整个账户笼统的动机。在现有的模型下,套利者追求套利时机,但因为战略公开,或许导致不同的套利者竞赛,举高网络费率并引进很多失利的套利业务。但是,套利者更明白这个道理,因而也会评价套利失利的后果,不然就要付出手续费的价值,恰恰是这个本钱让体系处在动态博弈中。假如竞赛套利的行为不需求付出本钱,那么虽然不会呈现无效的链上业务,但整个体系却会容纳更多的套利行为,让节点承受更多的无法收费的核算使命,何谈添加体系的可扩展性?

定论:不是改善,更像是为了链上「干净」的一种顽固。

综上所述,这些声称的改善大多仅仅对现有完结的「优化」,且缺少足够的验证,部分「优化」甚至经不起推敲。

总结

本文总结了以太坊「账户笼统」的布景,「账户笼统」首要为了处理两个问题,一是无需 Ether 发送业务,二是完结自定义的验证逻辑和算法。为了处理这些问题,以太坊前史上提出了多个提案,本文剖析了这些提案的企图和终究未采纳的原因。本文的重点是针对 EIP-2938 这个最新的关于账户笼统的剖析,评论了其「收成」和「价值」。「账户笼统」能够将一些现阶段需求引进「信任」才干完结的功用变得愈加可靠,例如为混币器供给更好的隐私,或是运用例如安稳币在内的财物付出手续费,但也不可防止地带来技能架构的大改动,其安全性也需求更齐备的验证。引证阿剑的一段话「而假如某些技能,既没有添加人们可选的东西,又牺牲了人们实际上挑选了的东西,那就没有理由对这些技能怀有信心。」

原文标题:《账户笼统的动机、前史和剖析》
撰文:姚翔,MYKEY 研究部门负责人

参阅链接:

[1] https://etherscan.io/tx/0x4f719da4e138bd8ab929f4110e84d773b57376b37d1c635d26cd263d65da99cb

[2] https://hackmd.io/@matt/r1neQ_B38

[3] https://github.com/ethereum/EIPs/issues/28

[4] https://github.com/ethereum/EIPs/pull/208#issuecomment-313872489

[5] https://github.com/ethereum/pm/blob/master/All%20Core%20Devs%20Meetings/Meeting%2034.md

[6] https://ethfans.org/posts/account-abstraction-eip-2938-why-and-what

[7] https://tinyurl.com/peep-an-eip-2938

[8] https://ethresear.ch/t/dos-vectors-in-account-abstraction-aa-or-validation-generalization-a-case-study-in-geth/7937

视野开拓

而我还愿意承认这一事实,欲望有时牵涉到沉迷,引起自我中心主义,或敲响辛酸的音符。我怀疑,如果人类这样一路随着欲望狂奔的话,最后可能进入一个死胡同。追逐欲望、为胃口所驱使的消费社会于个性文化均会碰壁。从这种意义上说,今天我们应该将价值赋予可接受的质量:节制、让步以及超然的理性。接受会不会是一种具有更高一级自由的形式呢?接受包含着屈从和轻度不满,而提高接受宽度则会将二者彻底消除。-《MUJI 無印良品》

发表回复

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