计算机编程中的抽象和数据抽象指的是隐藏除了「对象」相关数据以外的所有数据的过程,目的是减少复杂性并提高有效性。它通过省略不必要细节的方式来表示对象。抽象是面向对象编程的三大原理之一,它与封装和数据隐藏有关。这篇文章将为以下方面提供概览:
以太坊账户抽象
·外部账户/用户账户
·合约
为账户抽象提议的EIP
·EIP-86:事务来源和签名的抽象
·EIP-2938:账户抽象
·EIP-4337:通过入口点合约(EntryPointContract)实现的账户抽象
用例
·钱包
·赞助交易
·混币
·DeFi协议
账户抽象
以太坊的账户抽象以创建单一账户类型为目标,这种账户将包含所有相关方面,而且没有任何无关的方面,让开发人员的工作更加轻松。
以太坊账户类型
目前,在以太坊区块链上有两种类型的账户:
用户账户
用户账户是给一般人使用的。
·这些账户由对应公共地址的私钥所控制,比如用户的钱包账户。
·这些账户又称为外部账户(EOA),不需要ETH余额就可以在区块链上创建一个外部账户。但是,两个外部账户之间可以用ETH进行交易,也可以用ERC支持的其他Token。
·外部账户(钱包)用于加密货币的发送和接受功能存在于以太坊虚拟机的外部。
合约
合约是一组由代码控制的指令。
·因为使用了网络储存,所以创建一份合约通常会产生相关成本。
·用户可以操作多种功能,比如接收来自外部账户和合约账户的事务,以及向它们发送事务。
“西南偏南”以太坊域名“sxsw.eth”以9.5 ETH价格售出:金色财经报道,据NFTGo数据显示,“西南偏南”以太坊域名“sxsw.eth”已经以9.5 ETH(约合15,503.27美元)价格被买家y2k.eth购得,卖家是tba.eth。“西南偏南”SXSW是全球最知名和规模最大的音乐节之一,每年都在美国德克萨斯州州府奥斯汀举办,并且已逐渐发展称一个多元的创新大会。[2022/10/31 11:59:00]
·它还可以启动一个执行多种活动的代码,包括兑换Token或是创建一个新合约。
·合约账户是存在于EVM的「智能合约」。
如果你发送1个ETH到由代码合约控制的账户,那就没有人可以再控制这个ETH了。唯一可以转移这个ETH的是合约的执行,即代码本身。
两种账户类型都具有接收、保留和发送ETH和?Token?的潜能,还有与部署在网络上的其他智能合约进行通信的潜能。
账户抽象提案
以太坊账户抽象(AA)是对这两种账户形式的加强,让它们更具有可比性,还使外部账户的管理逻辑像合约账户一样通用。
它的目的是将合约账户的两种形式减为一种形式。单个账户形式的用途包括铸币和合约转账。开发者和用户将不再需要区别账户类型,因为事务将完全转移到EVM上并脱离区块链协议。
以太坊开发者一直在寻找实现的方法,但一直没有达到?Final?状态的提案。在以下部分,我们将概述迄今为止提议账户抽象的三个以太坊改进提案(EIP)。
账户抽象提案的时间线
2016:
·VitalikButerin为Metropolis提出最初的抽象变化想法。
·其目的是准备一种账户安全抽象。在传统的模型中,ECDSA和默认的nonce方案是保护账户的唯一途径。在此模型中,所有账户都是合约账户,它可以支付gas,且用户可以自由定义他们的安全模型。
DCG CEO:不支持任何以太坊PoW分叉,矿工应将算力转移至ETC:金色财经消息,Digital Currency Group创始人兼首席执行官Barry Silbert发推特称,“我们全力支持ETH PoS,除了ETC,我们也不打算支持任何ETH PoW分叉。ETH矿工应该将算力转移到ETC,以实现长期收入最大化。”
据悉,DCG现有的业务包括资产管理公司Grayscale、交易业务Genesis Global和新闻网站CoinDesk。[2022/8/8 12:08:53]
2017:
·VitalikButerin提出了用于事务来源和签名的抽象的EIP-86。
·其目的是抽象出签名验证和nonce检查机制,允许用户建立账户合约来执行任意所需签名或nonce检查,而不是依赖于传统的方法。
2020:
·VitalikButerin、AnsgarDietrichs、MattGarnett、WillVillanueva和SamWilson提议了用于账户抽象的EIP-2938。
·目的在于允许合约成为可以支付费用和执行事务的「顶级」账户类型。
2021:
·VitalikButerin、YoavWeiss、KristofGazso、NamraPatel以及DrorTirosh提议了通过入口点合约规范进行账户抽象的EIP-4337。
·其目的在于避免共识层协议变更,而是依靠更高层次基础设施。
EIP-86:事务来源和签名的抽象
根据其「摘要」,EIP-86提议实现一系列改变,这些改变服务于「抽象出」签名验证和nonce检查的综合目的,允许用户创建用于执行任意所需签名/nonce检查的「账户合约」,而不是依赖于使用目前这种硬编码到事务处理的机制。
传统模型:ECDSA和默认的nonce方案是保护账户的唯一方式。
新模型:所有账户都是合约账户,它可以支付gas,且用户可以自由定义他们的安全模型。
基于以太坊的游戏Decentraland将举办虚拟现场音乐节:7月3日消息,基于以太坊的虚拟游戏Decentraland将于UTC时间下周日18时(北京时间12日凌晨2时)举办一场虚拟现场音乐节。该音乐节将在 NFT市场KnowOrigin 位于 Decentraland 的虚拟总部举办,组织者承诺提供独家的NFT产品。与会者将获得一个虚拟的POAP(出席协议证明)代币,并可以购买虚拟衣服,包括飞行夹克和帽子。(Decrypt)[2021/7/3 0:25:04]
以forwardingcontract为例,作者VitalikButerin解释道,这种合约会验证签名,如果签名是有效,它开始向矿工发起付款,然后使用给定的值和数据向指定地址发送调用指令。
这个提案的主要优势如下:
多签钱包
·传统方法:多签钱包中的每一笔交易都必须由所有的参与者进行同意。我们可以通过将所有参与者签名结合为单一批准事务对此进行简化,但这种方法还是会增加复杂性,因为所有参与者的账户都必须持有ETH。
·新方法:在这个EIP的帮助下,现在的合约可以持有ETH,直接提交包含所有签名的事务至合约上,合约将会支付这笔费用。
自定义密码学
·传统方法:用户必须遵循ECDSA,这是一种使用椭圆曲线的密码学。
·新方法:用户可以升级至ed25519签名或用户自己希望升级的任何方案;不要求用户采用ECDSA。
EIP-2938:账户抽象
根据EIP-2938的摘要,「账户抽象(AA)允许合约成为可以支付费用和执行事务的「顶级」账户。
·传统模型:事务的有效性直接由ECDSA签名、一个简单的nonce值以及账户余额进行定义。
·新模型:
1.账户抽象通过执行随机的EVM字节码来扩展事务的有效性条件。
2.为了表示有效性,引入了新的EVM操作码?PAYGAS,还设置了合约的gas价格和gas使用上限。
数据:谷歌趋势“以太坊”搜索量达到2018年初以来最高水平:Google趋势数据显示,“以太坊”搜索达到2018年初以来的最高水平。数据显示,自2020年10月以来,美国越来越多人在探讨和研究以太坊,Google趋势“以太坊”搜索量达年度最高水平。世界其他地方的情况很相似。以太坊的受欢迎程度增长显著,搜索数量已经超过2020年和2019年的水平,在科索沃、马其顿和尼日利亚的查询密度更高。(Cryptopotato)[2020/11/25 22:04:53]
3.账户抽象现已分为两类:
单租户AA:这种类型旨在支持钱包或其他参与者很少的用例。
多租户AA:这种类型旨在赋能像Uniswap这种有很多用户的应用。
共识变更
·NONCE操作码:添加一个?NONCE?操作码,推送事务的nonce字段。
·PAYGAS操作码:添加一个?PAYGAS?操作码,创建一个不可逆的检查点,确保?PAYGAS?之前的状态变更无法被逆转。
SamWilson是这个提案的作者之一,它在这里解释了AA事务与其他传统事务的不同之处。
在AA事务中,不会有gas价格或是gas上限、没有发送的值和签名字段,并用??target?代替?to?。在多签合约中,这些字段在calldata中进行传递,并用合约进行处理。
如果一笔事务到达节点,事务的有效性会被检查。但是传统事务和AA事务进行检查的方式不同。
·在传统事务中:节点检查:他们的nonce与账户的下一个nonce匹配、账户余额足以支付他们的价值以及最高的gas费用,并且他们的签名与账户的地址匹配。
·在AA事务中:节点检查:他们的nonce与合约的下一个nonce完全匹配、合约的字节码以标准的前缀开始、验证逻辑在达到验证gas上限之前调用?PAYGAS?、没有禁止的操作码在?PAYGAS?之前被调用,以及合约余额足够支付?PAYGAS?设定的gas费。
以太坊未确认交易为85,313笔:金色财经消息,据OKLink数据显示,以太坊未确认交易85,313笔,当前全网算力为253.51TH/s,全网难度为3.36P,当前持币地址为49,897,513个,同比增加189,280个,24h链上交易量为2,639,421.61ETH,当前平均出块时间为13s。[2020/11/10 12:14:21]
区块广播时间是一个新区块到达网络大多数节点所需平均时间。
当具有AA事务的区块到来时,同一账户的所有待处理事务都将被删除。另一方面,传统事务会被重新验证并可能在收到新区块时发布。
EIP-4337:通过入口点合约实现的账户抽象
这是VitalikButerin和社区提出的最新议案。它作为一项ERC提议出来,而这个提案包括了避免共识层协议的变更,而依靠于更高层的基础设施。
它旨在完成下列目标:
·账户抽象:允许用户使用包含随机验证逻辑的智能合约钱包作为他们的主要账户,而不是EOA。
·去中心化:允许打包交易捆的人参与包含账户抽象用户活动的过程。用户不需要知道任意活动者的直接通信地址,就可以处理发生在整个公共内存池中的任意活动。
·无共识变更:为了更快的采用,这个提案避免了共识变更。
·交易费支付:用ERC-20标准的Token支付交易费,使得开发者为其用户支付费用,以及类似于EIP-3074这样的赞助的交易提案所支持的用例。
这项提案怎么运作?
图片来源:Infinitism
VitalikButerin在这里很好地解释了这项提案的运作。
这是账户抽象最新的提案,现在还是draft状态,等待被合并成为一项EIP。对比常规的以太坊事务内存池,这项设计增添、维护以及牺牲了一些功能。
关键亮点
没有中心化的活动者、移除了用户端钱包设置复杂性,完全支持EIP-1559、具有代替交费的能力,发送一个比旧UserOperation具有更高溢价的新UserOperation来替换操作或保留了让它更快被打包的功能。
有一些增添的新优势:
1.验证逻辑的灵活性
2.足以让执行层达到量子安全
3.钱包可升级性
4.执行逻辑灵活性
然而,尽管协议已经尽了最大的努力,它还是会略微增加DoS攻击的可能性,它还会增加gas开销,并且一次只执行一个事务。
账户抽象用例
钱包
EOA和合约钱包
·EOA钱包:由私钥保护的钱包。
·合约钱包:使用智能合约在链上实现的钱包。
·安全考虑:如果智能合约代码中存在bug,合约钱包将面临来自易受攻击的智能合约的安全风险。这种风险可以通过由钱包提供商完成的安全测试和审查进行最小化。然而,在EOA钱包中,风险会完全由钱包用户承担,就像用户不小心丢失了私钥也由他们自己承担。
Argent,Dapper,GnosisSafe和Monolith都是智能合约钱包的案例。
EOA的元交易
以太坊区块链用户需要一个持有gas的EOA与区块链网络进行连接,或依赖钱包供应商通过他们的中继或第三方中继网络促进元交易。前者依赖于(需要做KYC的)CEX购买的ETH,试图通过将消费者的责任转移给中继者来尽量减少用户体验摩擦,费用由链上/链下钱包供应商和/或链下用户支付。
元交易是一种包含了带有执行交易意愿者所签署的数据信息的交易。
基于中继者的架构有一些缺点:
1.可以将他们视作拥有抑制交易能力的中心化中介
2.由于中继交易需要额外的21,000基本gas收费,及其公司在gas费基础上盈利的需要,他们在技术上/经济上的效率低下。
3.对中继者专用协议权力的使用。
账户抽象允许智能合约钱包在不依赖中继网络的情况下,接受用户的无gas费的元交易并为他们支付gas费。在不失去以太坊去中心化保证的情况下,这种基础层的能力还会大大提升这种钱包的UX。
赞助交易(SponsoredTransactions)
SponsoredTransactions囊括在EIP-2711(状态为已撤销)中,这个EIP提议了一种机制:通过允许其他人代付gas费,可以让人们无需拥有任何ETH就可以进行交易。
一些用例:
1.允许应用开发者代表用户支付费用。
2.允许用户用ERC-20Token支付费用,合约则像中介收集ERC-20Token并以ETH的方式支付网络费用。
运作
这项提案可以通过出纳机制(paymastermechanism)来支持这些用例。
·对于用例1:Paymaster会验证赞助者的签名被纳入在?paymasterData?中,表明赞助已做好为?UserOperation?进行支付的准备。如果签名有效,Paymaster就会接受这项指令,并从赞助者的份额中扣除?UserOperation?的费用。
·对于用例2:Paymaster会检查?sender?的钱包是否有足够的ERC-20余额来支付这项?UserOperation。如果足够,Paymaster会接受这项指令,并在索要?postOp?里的ERC-20Token之前支付ETH费用。
混币
一起探讨TornadoCash混币机制的例子,以此理解我们如何在DeFi协议中使用AA。
传统的TornadoCash合约中的隐私问题
·当用户进行提款时,TornadoCash为其提供隐私保护。他们可以证明这笔款来自一笔独一无二的存款,但除了用户之外没人知道这笔存款来自哪里。
·用户通常不会在自己的提款地址里持有ETH,如果用户使用他们的存款地址来支付gas,这就会在存款地址和提款地址之间生成一条链上链接。
这个问题可以由第三方中继者解决,他们会验证ZK-Snark和nullifier仍然有效的状态,发布使用其ETH支付gas的交易,并从TornadoCash合约中收集用户的返款。
账户抽象提供的解决方案:用户可以提交一个针对TC合约的AA事务,在这之后执行ZK-SNARK验证和nullifier检查,并直接快速地调用?PAYGAS。这可以让提款者直接用发送到他们提款地址的Token中支付gas,无需中继者或连接其存款地址的链上链接。
DeFi协议
一起探讨DeFi协议Uniswap的案例,了解我们可以在DeFi协议中如何使用AA。
可以创建一种Uniswap的新版本,它允许直接进行针对Uniswap合约的交易。
目前,用户可以将Token提前存进Uniswap;Uniswap可以储存用户的余额和公钥,以便验证花费这些余额的事务。
AA的目标在于通过禁止不符合高级标准的事务被打包到链上,从而提高DeFi协议的gas效率。
在传统模型中:正常的交易员会将他们的Token储存在Uniswap的合约之外。
在新模型中:套利交易员会将他们的Token存在Uniswap上,在外部市场发生变化的情况下,他们还可以转移执行套利的交易。最终,另一个套利交易员如果首先执行这笔交易时,这些没有获利的交易不会被打包上链。这让套利交易员避免了支付gas并减少了打包上链的垃圾交易数量。这将会增加区块链的可扩展性和市场效率,因为套利交易者更能做到纠正跨链交易在价格上的差异。
套利交易员指的是利用两个或更多市场之间的差价,由此同时低价购入并高价卖出的交易员。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。