零点课堂 | 概述以太坊账户抽象化
什么是账户抽象化?
目前,以太坊上有两种账户:外部账户(externally-owned account)和合约账户(contract account)。前者是由私钥控制的,而后者是由存储在智能合约账户(有时也被称为智能钱包)内的以太坊虚拟机代码控制的。账户抽象化试图将两类账户并为一类,即,让外部账户像合约账户一样运作。
为什么账户抽象化对于以太坊来说那么重要?
账户抽象化可以让更多通用型钱包执行复杂的逻辑。它将签名验证、gas 支付和重放保护等功能从核心协议转移到以太坊虚拟机上。
我们来举个例子,看看抽象化到底有什么用。
假设你要所有代币都放到一个新钱包内,然后你一不小心把所有以太币都发送到这个新钱包里了。这下,没有以太币,你就无法发送任何交易,也就无法将剩下的代币转移到新钱包里了。
正常情况下,你只需要花一点时间和 Gas,将一些以太币发送回之前那个地址即可。但是有些情况下,要挽回这个错误就不是那么容易了。在你把以太币从另一个钱包发送过来之前,钱包内的代币无法转出。我们都有可能遇到这种情况,就不用说这有多不方便了。
账户抽象化能让你使用剩余代币支付 gas 费用,就像一些智能合约钱包那样。
抽象化会带来新的可能性
许多构建在以太坊上的网络和应用都需要依靠中继者在区块链上发布用户交易,并向中继者支付费用。然而,如果有更复杂的钱包和合约,我们没准就不需要用到中继者了。以 Tornado Cash 为例(这是一个通过充当用户资金流转的中转站、混淆资金流向来保护用户隐私的应用),如果需要混币的用户能够使用抽象化的账户,那 TA 可以使用比如 PAYGAS 操作码来支付取款的费用,这就不需要中继者来帮忙取款了(译者注:使用中继者来帮忙取款本意是为了减少取款地址跟其它用户之间的关联,也是为了保护隐私)。如果以太坊网络可以充当你的中继者,你就不需要依靠另外的中继者了,也就无需在 gas 费的基础上按照一定的百分比再支付一笔费用。
这只是抽象化给以太坊网络带来的影响之一。我们不想讨论太多技术细节,不过抽象化的好处不只是在支付 gas 费用方面。将签名验证转移到以太坊虚拟机上之后,签署交易之时就能采用新的密码学工具,多签名钱包和社交找回钱包等智能钱包功能将会跟基础账户功能处于同一层级。
抽象化还有助于下列技术方案的实施:
· 状态通道
· Optimistic rollup
· AZTEC protocol 等二层隐私性方案
· 等等
总之,以太坊社区的开发者可以利用更加智能的以太坊账户创造出更加复杂的流程,提供更流畅的用户体验。
抽象化还需多久能实现?
事实上,关于如何实现账户抽象化仍存在争议。但是,可以肯定的是,账户抽象化很可能会在以太坊 2.0 的 phase 0 阶段之后实现。请记住一点,任何人都可以支持以太坊社区的开发工作。因此,如果你希望尽快看到账户抽象化的话,可以参与该团队,或是为其做宣传。
如果你想要了解更多关于账户抽象化的信息的话,可以查看 ETHHub 上的条目。该条目深入分析了一些可能的实现,并列举了许多有用的资源。