1. 首页 > 知趣科技

DAOrayaki Podcast|账户抽象:再次兴起的背景、工作原理

DAOrayaki Podcast|账户抽象:再次兴起的背景、工作原理

下载欧易查看core币2023年最新价格

DAOrayaki DAO研究奖金池:

资助地址: DAOrayaki.eth

投票进展:DAO Committee 2/0?通过

研究种类:Account

贡献者:[email protected]

审核者:shaun @DAOrayaki

播客地址:https://m.ximalaya/sound/609315295?from=pc

简介

账户抽象的概念最早于2017年在协议EIP-86中提出,其目的是实现“交易来源和签名的抽象”。人类账户的改进是一项为期多年的实验。需要自我托管的钱包地址,既是用户在链上世界的「账户」,但又同时是阻碍用户进入Web3世界的一大障碍。

账户抽象使我们能够使用智能合约逻辑来指定交易的效果,费用支付和验证逻辑。这提供了许多重要的安全优势,包括多重签名,智能恢复钱包、无需更改钱包即可更改密钥的能力以及量子安全性。

账户抽象再次兴起的背景是怎样的,如何理解账户抽象中关于抽象的定义,其工作原理又如何?带着这些问题,我们今天特别邀请了来自AstroX的联合创始人Brutoshi,跟大家一起开启本期的播客话题:账户抽象,以太坊账户,去中心化的新路径。

主持人:Shaun

(DAOrayaki 负责人)

嘉宾:Brutoshi

(AstroX的联合创始人,深耕金融科技领域)

正文

Q:我们在聊账户抽象之前,可以先从以太坊现有的账户类型开始,那想请教您,以太坊现有的账户类型大概有哪些呢?它们大体是如何工作的?

大家持有的钱包在以太坊白皮书里叫EOA(Externally-owned account),简称外部账户,这属于正常用户的账户,被以太坊主链的外部主体持有,像Metamask或是硬件钱包Ledger创建的都是EOA账户。

对应的另一种账户,叫合约账户(Contract account),简称CA,CA只有在以太坊内部通过其它EOA或是其它CA创建,比如常用的DeFi协议Uniswap,Compound,Aave等等,用户可以与协议或合约账户进行交互,对代币进行一系列操作。

不过更常用到的还是EOA钱包为主。

Q:那EOA钱包对我们普通用户来讲,它都会有哪些优缺点呢?

我先解释一下EOA的工作特点,用户在用传统加密钱包生成钱包地址时都会获得一份12个或24个助记词,由助记词派生出对应的一个私钥或者多个私钥,这在生成与导入钱包时必不可少,这在以太坊体系里叫EOA钱包。依照运行环境不同有浏览器插件钱包,比如Metamask,Solana的Phantom。移动端有Tokenpocket,硬件钱包也包括Ledger,Treasure等等都属于EOA,即私钥唯一确定出公钥,公钥再算出账户地址,通过私钥控制自己的账户。其中的技术实现依靠非对称加密算法,这项技术在比特币诞生之前就已经比较成熟了,包括今天的电商也多采用这套加密手段。整个效果的实现还是非常便捷的,只要在用户端使用一个电脑或手机就可以生成一对公私钥。

但是有一个比较大的问题,就是账户与你的私钥硬绑定,某种程度上可以说你的私钥就是你的账户,如果私钥丢失你的账户也就丢失。举例来说,假设你有一套汤臣一品的豪宅,你的私钥就是你的家钥匙,如果你的家钥匙丢失,你也就无法访问的房子,或是你的钥匙泄露,别人也知道了你的钥匙长什么样,他就与你有相同的权限,就也可以访问你的房子,你也没办法换私钥,这就是今天这种传统钱包或EOA钱包最大的问题。

同时私钥的保管手段上也不是非常的便捷,如果你把私钥或助记词抄写到纸上放在某处,有可能出现失火或是长时间存留导致纸上的字迹淡化的情况。当然现在可以从网上买到私钥钢板将私钥进行保存,但目前这些手段都对小白或是普通用户不是非常友好,存在一定进入Web3的门槛。

另外几种钱包虽然现在普及度还不高,但和今天主题密切相关,叫智能合约钱包(Smart Contract Wallet),它是利用CA搭建的钱包解决方案,比如Argent,Gnosis Safe这种比较老牌的智能合约钱包,也有像UniPass Wallet这种华人团队项目,这部分后面可以展开讨论。

另一种钱包叫MPC(多方计算)钱包,它本质上也是EOA钱包,因为针对区块链来说,它的账户还是EOA账户,但是它的签名方式跟传统方式有所不同,它的私钥并没有在用户侧完成签名,实际上是把私钥分成若干个碎片,由用户保存多个备份或是与钱包提供方共同保存,多方完成计算。因为MPC是一个密码学概念,各方在不泄露自己的隐私的前提下,共同参与计算,得出结果,简单来说就是将私钥要打碎成两片或三片,每一方持有一个,不让对方知道的前提下可以共同计算,完成跟传统EOA钱包签名一样的效果,比较知名的产品比如Fireblocks,ZenGo,包括Coinbase去年5月份也推出了它们的半托管方案,用户自己有一份,Coinbase有一份,如果用户丢失备份可以联系Coinbase确认“你是你”,然后让Coinbase帮你恢复,但这相当于放弃了一部分自主性,Coinbase就会知道钱包持有者的具体身份。

大致是这几种方案,本质上也是EOA类型,有传统的,MPC的,以及基于区块链智能合约账户搭建的智能合约钱包。

Q:这让我想起了我初入这个领域的时候,当时申请Metamask钱包,因为我还算是互联网领域的一个“老鸟”,但在操作钱包,包括理解助记词这件事时确实也发现需要一些门槛和时间。而且我印象最深的是当时我没有把助记词当回事,后来真的丢失了,我也发现没有就真的没有了,无法找回。

事实上,丢失私钥或是助记词的事情在我身边很多人都发生过,包括一些从业者或是技术人员,你丢失的事情幸亏出现的比较早,所以你有警觉。因为钱包的安全性与便易性是有冲突的,大家在刚用的时候都会更倾向于易用性,除非有一天你碰到私钥丢失的事情,或是被盗了,那时你就会产生警觉。

我举另外几个例子,应该的去年12月份,分布式的老板沈波,他也是早在15年就给以太坊投了50万的OG,他在转币的时候钱包私钥泄露,被黑客监控了钱包,代币一到账就被转走,丢失了大约4000万美金的资产。还有另外一件事,发生在1月初,Bitcoin Core有一位开发者,因为自己的操作出现了一些问题,丢失了大概200多枚比特币。所以连这么早投资比特币或以太坊,或是像Bitcoin Core这种技术开发人员,都有可能会出现代币丢失的事件。

因为现在传统钱包的私钥像是一个单点故障 (Single point of failure),即使你犯了一个很小的错误,你钱包里的财产也无法找回。比如前几天Moonbird社区的创始人,因为被社会工程,误点了一个链接,导致将钱包授权给黑客,价值几百万的几十个都被转走。

所以我觉得目前的钱包安全问题还是比较严重的,特别是去年发生的FTX事件,大家意识到交易所也是可以跑路的,于是大家就都想把资产尽可能自己托管,虽然作为从业者当然很希望大家这么做,大家也听说过Not Your Keys,Not Your Coins的说法,但实际上要想尽可能好的做到还是很难的,像前面提到的“老手”或是资深从业者都发生过丢币的事情,未来下个牛市进场的小白用户根本没有相应的理论基础和操作实践,即使有10%的资产丢失也是非常恐怖的,所以一定要解决这个问题。这也是如今抽象账户被频繁提及的原因。

Q:我看到实际上在2015年账户抽象的概念就已经出现了,但好像一直没有引起像今天这么强烈的关注,为什么账户抽象突然之间成为了一个业内讨论的热点话题呢?这种现象产生的背景是怎样的?

这是一个很好的问题,我从几个方面来讲。首先要讲的还是大环境,刚才我们讲到传统钱包的问题,对用户的影响还是很大的,还有其它方面的问题,比如Gas费模型,其实大多数小白用户对这件事情还是很难理解的,比如你在OpenSea上想买一个Polygon链的,如果你没有Matic的话又无法操作,需要再去想办法弄Matic,这对很多新用户来说还是一个比较大的门槛。

此外大家也知道了账户抽象对应的其实就是智能合约钱包,它并不是一个全新的概念,其实在很早就有了,比较流行的比如Argent,其实在上个牛市,17,18年就已经开始做了,但是没有流行起来。此外智能合约账户其实是一个“二等公民”,它仍有一系列的问题,目前只是用在了DeFi与领域上,目前其实是没办法通过智能合约实现资产管理的操作的。

而从以太坊的发展历史来说,以Vitalik为代表的人们很早就有一个愿景,就是希望用户拥有的是一个智能的账户,并不只是通过一个简单的签名就可以操作所有东西。最早在2015年,EIP101就已经设想了未来版本的以太坊账户体系设计,它的主要思想就是每个账户都应该有一个自己的代码(业务逻辑),但是因为这个方案改动较大,跟当时的以太坊的交易模型不是非常兼容,所以没有实现。

但是相关讨论每天都会有,包括以太坊基金会会提不同的EIP,比较知名的是2021年的EIP4337,2020年的EIP2938,它希望智能合约的账户能够自己付Gas费,以及执行交易,这在EVM里面是没办法操作的,因为在以太坊设计里,必须有一个外部的账号发起交易,支付Gas费,交易才可以完成。但因为当时以太坊的目标是要去先完成ETH2.0升级,所以这个EIP也就被搁置。直到2021年,Vitalik提出了一个比较巧妙的方案,这个方案并不需要修改协议层,利用了已经流行起来的Flashbots产生的架构,然后采用一个定制的Mempool去搭建一个基础设施,实现了把账户抽象的交易验证从协议层抽离出,放在了应用层,这个应用层其实是一个以太坊基金会发起的标准,大家如果要做新的智能合约钱包的话,就要遵循这个标准。所以我觉得以太坊基金会制定标准这件事一直做的很好,就像在2017年的ERC20(代币标准),的ERC721,账户抽象的EIP4337,其实现在应该叫ERC4337,因为它已经进入了下一个实现的阶段。

这就是大概的历史背景,首先有大的环境,传统钱包的对普通用户的的门槛,而且不安全。二是以太坊基金会很早就希望用户的账户可以有能力执行一些逻辑,这个逻辑可以让用户来选,或是应用开发者来实现,实现更多的可能性。所以这个方案并不是最近才火的,而是经过很多年的不断讨论,不断的技术更迭,最后落到了EIP4337。

Q:如果把账户抽象理解成两个词组,账户和抽象,那怎么理解抽象的定义呢?

抽象在计算机科学里,就是指从一个大块抽出相关的部分,分成小部分。用另外一个词来解释的话会更好理解,其实就是模块化。我举一个例子,TCP/IP,也就是网络协议,是互联网的基础,它其实是四层协议,再早之前有个叫OSI七层协议,它们就是比较典型的抽象的例子,它不是把所有的代码在一个地方完成,而是每一层完成一部分,之间有一个比较明确的接口的定义。如果没有技术背景,可以就把它理解成模块化。

Q:那像这种模块化的账户,它与现有的账户相比会有哪些优势?

我们回到刚才讲的问题上可能会比较好解释,EOA(传统钱包)的功能逻辑是写“死”在以太坊虚拟机(EVM)里的,然后做出判断,第一个判断是确定交易是不是由私钥持有人签名,也就是确认签名是否“正确”,第二是确认账户里有没有足够的Gas费,第三个判断是Nonce,可以把它理解成计数器,用来防止重放攻击。这三个逻辑都要经过判断,Check一下,都完成了才会判定这是一个合理的交易,完成打包发送到区块里,完成交易。

而账户抽象可以将刚刚提到的判断抽象出,交给开发者,也就是让开发者定义账户做什么,其实就是用一种可编程的方式来设置验证交易有效性的标准。有了这个功能,开发者就可以通过验证非私钥的方式进行验证,实现更多很“酷”的功能。

此外账户抽象的名词乍一听可能会觉得非常“高大上”,事实上它就是智能合约钱包。所以从某种角度上来说,还是要赞叹Vitalik的造词能力,我举另一个例子,就是去年提出的SBT(SoulBound Token),实际上它就是一个不可转让的,但如果当时就叫它不可转让,大家又可能会觉得比较“无聊”,但如果说SBT,灵魂绑定代币,格局就完全不一样了。

所以账户抽象某种意义上就是用智能合约管理账户的能力,不用想的过于复杂。

Q:那么它会有哪些实际场景的用例呢?会和什么实际场景结合?

具有账户抽象能力的钱包账户,其实可以理解为它的账户就是一段图灵完备的代码。就像为什么人们会说以太坊是对比特币的一种“超越”,就是因为以太坊区块链可以运行智能合约,除了比特币也可以进行的转账活动,还可以做很多业务的判断,它是图灵完备的。但是今天的以太坊链上的账户是没有图灵完备能力的,只是合约具有图灵完备能力。所以如果能在以太坊上实现账户抽象,那么我们的账户就有图灵完备的能力,实现智能合约可以实现的一系列业务逻辑。那能够做哪些事情呢,我们一个个来看:

我们前面讲到传统钱包存在比较大的安全隐患,就是如果丢失了私钥,资产也就消失了,它是一种单点故障,一个微小的失误就会导致很大的损失。这时我们就可以引入多方验证,就像我们在传统互联网中,如果想登陆银行账户,需要输入手机收到的验证码,这就叫做MFA(多因素验证),通过引入这种方式升级账号,比如授权其它的私钥操作自己的钱包进行交易;还有一种功能叫做社交恢复,它的能力是如果你常用的私钥丢失,但是在丢失之前我已经授权了几个人(可以设置是谁,或几个人),那么我就可以联系这几个人帮我进行恢复。就像我们前面举的例子,如果你的豪宅钥匙丢失,通过这种方式就可以实现“换”钥匙,你还拥有豪宅的使用权限。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/zqkj/9301.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456