计算机编程中的抽象和数据抽象指的是隐藏除了「对象」相关数据以外的所有数据的过程,目的是减少复杂性并提高有效性。它通过省略不必要细节的方式来表示对象。抽象是面向对象编程的三大原理之一,它与封装和数据隐藏有关。这篇文章将为以下方面提供概览:
以太坊账户抽象
·外部账户/用户账户
·合约
为账户抽象提议的EIP
·EIP-86:事务来源和签名的抽象
·EIP-2938:账户抽象
·EIP-4337:通过入口点合约(EntryPointContract)实现的账户抽象
用例
·钱包
·赞助交易
·混币
·DeFi协议
账户抽象
以太坊的账户抽象以创建单一账户类型为目标,这种账户将包含所有相关方面,而且没有任何无关的方面,让开发人员的工作更加轻松。
以太坊账户类型
目前,在以太坊区块链上有两种类型的账户:
用户账户
用户账户是给一般人使用的。
·这些账户由对应公共地址的私钥所控制,比如用户的钱包账户。
·这些账户又称为外部账户(EOA),不需要ETH余额就可以在区块链上创建一个外部账户。但是,两个外部账户之间可以用ETH进行交易,也可以用ERC支持的其他Token。
·外部账户(钱包)用于加密货币的发送和接受功能存在于以太坊虚拟机的外部。
合约
合约是一组由代码控制的指令。
·因为使用了网络储存,所以创建一份合约通常会产生相关成本。
·用户可以操作多种功能,比如接收来自外部账户和合约账户的事务,以及向它们发送事务。
USDD:以太坊合并后将仅支持PoS链:9月6日消息,波场去中心化稳定币USDD宣布以太坊合并完成后,USDD将仅支持以太坊PoS。是否在以太坊PoW上发行USDD有待评估,如何支持也需要进一步讨论。[2022/9/6 13:10:57]
·它还可以启动一个执行多种活动的代码,包括兑换Token或是创建一个新合约。
·合约账户是存在于EVM的「智能合约」。
如果你发送1个ETH到由代码合约控制的账户,那就没有人可以再控制这个ETH了。唯一可以转移这个ETH的是合约的执行,即代码本身。
两种账户类型都具有接收、保留和发送ETH和?Token?的潜能,还有与部署在网络上的其他智能合约进行通信的潜能。
账户抽象提案
以太坊账户抽象(AA)是对这两种账户形式的加强,让它们更具有可比性,还使外部账户的管理逻辑像合约账户一样通用。
它的目的是将合约账户的两种形式减为一种形式。单个账户形式的用途包括铸币和合约转账。开发者和用户将不再需要区别账户类型,因为事务将完全转移到EVM上并脱离区块链协议。
以太坊开发者一直在寻找实现的方法,但一直没有达到?Final?状态的提案。在以下部分,我们将概述迄今为止提议账户抽象的三个以太坊改进提案(EIP)。
账户抽象提案的时间线
2016:
·VitalikButerin为Metropolis提出最初的抽象变化想法。
·其目的是准备一种账户安全抽象。在传统的模型中,ECDSA和默认的nonce方案是保护账户的唯一途径。在此模型中,所有账户都是合约账户,它可以支付gas,且用户可以自由定义他们的安全模型。
2017:
·VitalikButerin提出了用于事务来源和签名的抽象的EIP-86。
以太坊开发者:将预留出更多时间来稳定代码和确保安全过渡:金色财经消息,ETH2.0核心开发者@dapplion 更新 Gnosis 信标链合并信息,其表示,在与 Nethermind 核心开发者讨论之后决定预留出更多时间来稳定代码和确保安全过渡。9 月 15 日之后,我们将就合并时间进行电话会议。另外,Gnosis Chain 目前有 Nethermind 和 OpenEthereum 两个客户端,合并后仅保留 Nethermind。[2022/9/2 13:03:46]
·其目的是抽象出签名验证和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,且用户可以自由定义他们的安全模型。
以forwardingcontract为例,作者VitalikButerin解释道,这种合约会验证签名,如果签名是有效,它开始向矿工发起付款,然后使用给定的值和数据向指定地址发送调用指令。
前Dharma及Harbor员工推出基于以太坊的艺术品市场:金色财经报道,基于以太坊的艺术品市场Foundation今天正式启动。Foundation可以帮助艺术家发行代表其作品的ERC-20代币。购买代币的用户可以稍后进行兑换以接收物品,或在二级市场上进行交易。艺术家还可以通过平台为每笔交易收取的交易费而受益。该初创公司的领导者分别来自以太坊借贷平台Dharma及证券型代币初创公司Harbor。[2020/5/27]
这个提案的主要优势如下:
多签钱包
·传统方法:多签钱包中的每一笔交易都必须由所有的参与者进行同意。我们可以通过将所有参与者签名结合为单一批准事务对此进行简化,但这种方法还是会增加复杂性,因为所有参与者的账户都必须持有ETH。
·新方法:在这个EIP的帮助下,现在的合约可以持有ETH,直接提交包含所有签名的事务至合约上,合约将会支付这笔费用。
自定义密码学
·传统方法:用户必须遵循ECDSA,这是一种使用椭圆曲线的密码学。
·新方法:用户可以升级至ed25519签名或用户自己希望升级的任何方案;不要求用户采用ECDSA。
EIP-2938:账户抽象
根据EIP-2938的摘要,「账户抽象(AA)允许合约成为可以支付费用和执行事务的「顶级」账户。
·传统模型:事务的有效性直接由ECDSA签名、一个简单的nonce值以及账户余额进行定义。
·新模型:
1.账户抽象通过执行随机的EVM字节码来扩展事务的有效性条件。
2.为了表示有效性,引入了新的EVM操作码?PAYGAS,还设置了合约的gas价格和gas使用上限。
3.账户抽象现已分为两类:
单租户AA:这种类型旨在支持钱包或其他参与者很少的用例。
多租户AA:这种类型旨在赋能像Uniswap这种有很多用户的应用。
Tether向以太坊网络增发6000枚USDT(已授权未发行):据Whale Alert数据显示,北京时间04月02日02:43,Tether公司新增发6000枚USDT,价值约5998.4万美元USDT,交易哈希为:0xa3fca7989e934701554ef21fe85e7104062fe976e90a0f6e714bb99c303fa80d。Bitfinex首席技术官Paolo Ardoino表示,请注意,这是一笔已授权但未发行的交易,这意味着该金额将用作下一次发行请求的库存。[2020/4/2]
共识变更
·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费。
区块广播时间是一个新区块到达网络大多数节点所需平均时间。
当具有AA事务的区块到来时,同一账户的所有待处理事务都将被删除。另一方面,传统事务会被重新验证并可能在收到新区块时发布。
声音 | V神:以太坊2.0不是一个“局” 未来一周或写有关研究文章:针对于此前关于以太坊2.0的报道,以太坊创始人V神发推表示,这篇报道很不公平。在标题中暗示以太坊2.0可能是一个“局”,不尊重几十个人多年的辛勤工作,特别是距离第0阶段还有几个月。他随后表示,对于如何从以太坊1.0迁移到以太坊2.0,“没有明确的计划”是不对的。大纲很清楚:将以太坊1.0状态根放入以太坊2.0中,让以太坊1.0作为执行环境继续存在于以太坊2.0中。现有的以太坊1.X工作已经使我们朝着这一目标迈进。V神还称,他可能会在接下来的一周写一些关于他觉得人们有误解的事情(包括以太坊1.0与2.0转换、DeFi可组合性、过渡)的研究文章。[2019/10/9]
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并减少了打包上链的垃圾交易数量。这将会增加区块链的可扩展性和市场效率,因为套利交易者更能做到纠正跨链交易在价格上的差异。
套利交易员指的是利用两个或更多市场之间的差价,由此同时低价购入并高价卖出的交易员。
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。