概述

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

背景

以太坊的账户有两种类型,一种是外部账户,另一种是合约账户。外部地址是由用户的公钥经过哈希运算后取的后20个字节,形为

0x76D836358E7A2BB0F26c32Ce61Dc8DD540b02F7D 。

现在的以太坊的业务类型只要一种,有必要由外部地址主张,合约地址无法自动主张业务。因而,任何合约本身状况的改动,有必要依靠于一个外部地址主张的业务,无论是一个多重签名账户,仍是混币器,或是任何智能合约的装备改动,都需求由至少一个外部账户触发。这样的规划让以下两件工作无法完成。

无需以太的自动业务

因为业务有必要由外部账户发送并支付费用,而该费用是用以太(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 15th, 2015]]

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

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

[[February 10th, 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 30th, 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 4th, 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]。

账户笼统的收成

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

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

  • (2)进步混币器的隐私性。

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

  • (3)运用其它代币支付手续费。

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

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

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

账户笼统的价值

(1)加大内存池验证业务有用性的开支

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

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

(2)加大内存池确保业务有用性的开支

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

(3)引进新的业务类型、计费方法、挖矿和播送策略

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

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

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

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

从头评价「收成」?

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

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

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

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

(2)进步混币器的隐私性。

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

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

(3)运用其它代币支付手续费。

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

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

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

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

定论:不是改善,更像是为了链上“干净”的一种固执。

综上所述,这些宣称的改善大多只是对现有完成的“优化”,且短少满足的验证,部分“优化”乃至经不起推敲。

总结

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

参阅文章

[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

视野开拓

即便是俗语所说的明白事理的人也经常犯罪,这就足以证明,某些真理虽可使人信服,却不会对人的行为产生适当的影响。此外还有一些真理,按其性质来说,或许永远不可能由一个人充分传达给另一个人。在葛德文看来,理智快乐优于感官快乐是一条基本真理。若把各种因素都考虑进去,我倾向于同意他的观点;但我如何把这一真理传达给一个从未感受到理智快乐的人呢?这就如同要向瞎子说明颜色的样子。即使我有无比的耐心,不厌其烦地 反反复复地劝导他,我也决不可能达到目的。在我们之间,没有衡量事物的共同尺度。我无法一步一步地使他明白,因为这是一个从性质上说根本无法加以证明的真理。我所能说的只是,一切时代的大仁大智者都无一例外地把理智快乐放在非常崇高的地位;我自己的经验也完全证明他们的决定是正确的;我发觉声色口腹之乐是毫无意义,转瞬即逝的,总是让人感到乏味和恶心;而理智上的快乐却似乎有一股清新之气,总使我感到年轻,使我无时不感到满足,给我的生命注入新的活力,使我的心灵长久地澄明和安宁。如果他相信我,那只是出于对我的尊敬和对我提及的人物的尊崇,这是信赖而不是信服。我所说的不能使他真正信服。这与推理无关,而牵涉到经历。他也许会回答说,你所说的对你自己和其他许多品德高尚的人来说也许是很正确的,但就我自己来说,我在这件事情上却有与此大不相同的感受。我晚上拿起书来读,常常是读着读着就睡着了,但若是参加舞会,或陪漂亮女人玩,我却精神焕发,感到真正享受了人生。 在这种情形下,推理和论证是毫无用处的。也许在未来某个时候,他会真正对感官的快乐感到厌腻,或某一偶然事件会唤醒他的智力,这种经历在一个月内所起的作用,是40年最为耐心细致的劝说也甭想做到的。-《人口论》

发表回复

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