Jason chen

Posted on Dec 13, 2022Read on Mirror.xyz

为什么我们需要账户抽象与智能钱包

     这段时间听了不少关于账户抽象和智能钱包的内容,在账户抽象这方面我不是专家,毕竟没有做过项目实践,仅根据自己的理解总结一下目前我对于这个方向浅显的认识,可能存在不足和错误,欢迎交流,我会主要以@UniPassID@dappOS_com为例解读

     首先给定义,我之前多次表达过我看项目的逻辑,只要是能够降低用户进入web3的理解门槛和使用门槛的东西,都是好东西,所以账户抽象和智能钱包是好东西,绝对不仅仅是炒概念。 在此之前钱包主要分为两种,EOA和CA。EOA即大家常用的个人钱包,小狐狸中用私钥生成的地址,该地址完全由私钥掌握

     从而也就导致了大家常说的两类问题 1.安全,私钥丢失/泄漏意味着失去了对地址的掌控 2.门槛,对于大量场外用户理解私钥助记词的概念门槛很高 除此以外还有CA即通过智能合约实现的钱包逻辑,注意这里用了逻辑这个词,即它实质上是以合约可承载和转移资产的特性,来用合约实现了钱包的业务逻辑

     它的好处是合约是可编码的,从而可以实现相比于EOA更复杂多样性的业务逻辑,比如Gnosis safe就是合约钱包,可以通过多签的形式来操作资产,这背后就是合约代码所实现的,所以CA相比于EOA的好处在于 1.可以实现更复杂的业务逻辑 2.资产承载在CA即智能合约而非某个人的地址上,也更安全

     大家可能会疑惑那CA钱包已经这么好用了,账户抽象和智能钱包又是干嘛的呢? 刚才说到了CA的两个好处是让“钱包用的更好”的过程,但不是让“钱包用的更简单”的过程,即它依然没有解决掉用户使用门槛的问题,这个门槛就在于

     1.用CA之前你还是得有一个自己的EOA钱包,私钥助记词这一步依然要迈过去

     2. CA的本质是一套智能合约,创建它是需要EOA支付gas费来部署的,其次CA的所有资产操作均需要EOA发起并支付gas费,智能合约自己是无法发起交易的,只能被动触发

     所以导致用户使用CA的路径依然是自己要先搞一个EOA,然后往里面充钱,再用它去创建一个CA并缴纳gas费,想让钱包用的更简单,降低用户进入门槛要解决的是 1.如何抛弃掉私钥助记词这一套包袱,而用传统web2邮件、手机这些用户非常熟悉且低门槛的账户体系 2.如何解决掉gas的问题,让用户少付甚至不付

     账户抽象想实现的就是继续以CA智能合约为钱包载体,但是尽量弱化EOA的必要性。其实解决思路其实就是在用户和CA之间加一层“代理”,由代理方帮助用户完成“触链”过程,如下图是V神写的文章中对账户抽象的架构设计,中间加了一层Bundler概念,建议大家阅读原文 https://medium.com/infinitism/erc-4337-account-abstraction-without-ethereum-protocol-changes-d75c9d94dc4a

     所以从账户抽象思想出发,大部分智能钱包设计思路也基本如此,下图为UniPass,其增加了Relayer层帮助用户提交交易和支付gas。

下图为DappOS,其增加了DappOS NetWork层帮助用户完成交易,接下来我会分别拆解Unipass和DappOS这两个项目,大家也会疑惑这个中间层具体是谁,又有何动力帮用户去做这些事

     下图为UniPass的官网,通过slogen可见其主打的是seedless无私钥和gasless无gas两个特点,注意这里它说的是“for your web3 apps”,我之前以为UniPass是一个C端产品,毕竟提起钱包就觉得是给C端用的,但是实际上它是一个面向B端的用户账号体系解决方案,这一点我等会讲DappOS的时候会再重点展开

     UniPass产品形态是为第三方app提供的SDK,传统的dapp用户的账号体系要么是导入/生成EOA地址,即传统的私钥那一套,但是这对于用户的使用门槛会很高,这也是很多dapp难以推广的原因。要么是通过中心化托管私钥的方式帮用户生成地址,然后再关联到用户的邮箱账号上,但是这则非常中心化从而不安全

     而使用UniPass则可以实现开箱即用的账号体系解决方案,降低产品用户使用门槛,并且账号是非托管的,即使UniPass挂了也不会影响用户。我们来具体体验一下UniPass并分析其核心解决方案,这是基于其SDK所开发的demo,如图可以直接通过熟悉的邮箱来创建账号密码并登陆,而非传统的私钥助记词

     UniPass创建的账号都会自动的在链上为用户部署一套智能合约,与该账户相关的数据和逻辑将保存在合约中。如下图所示当我注册后,自动的为我创建了一个合约,gas费是由项目方即relayer支付的,体验很顺滑对用户来说完全无感。

     其中relayer是个开源的服务端程序帮助用户提交交易和支付gas,其原理是元交易,它是一种其数据由一个人在链下创建和签署,并由另一个人支付汽油费的人执行的过程,它并不是一个很新的概念,早在18年的EIP-1077就出现了,并且解决方案也趋于成熟网上可以找到很多关于元交易的案例代码。

     其实它的逻辑淘宝好友代付是一样的,假设你的女朋友看中了8万的包包,在淘宝下单(签署交易),然后通讯录选择大冤种代付,这时候你的支付宝收到提示后,由你进行支付执行交易,然后下单成功你的女朋友就会收到包包,详细的原理可以看 https://medium.com/coinmonks/ethereum-meta-transactions-101-de7f91884a06

     所以我作为开发者使用UniPass,就有责任成为relayer帮我的用户代缴gas,当然我也可以实行比如只帮助代缴首次,如果再多需要用户付费等策略,这个可以有具体项目方自己决定。 UniPass还有一个重要特性是社交恢复,传统EOA如果私钥泄漏了是不可逆的,钱包彻底失去控制,但UniPass可以设置监护人

     当我的账户因为一些问题无法使用时,我可以使用社交恢复来重置账户,如下图所示UniPass 独创的链上邮件验证技术使用了DKIM签名来验证邮件的真实性,DKIM是一种身份验证方法,它使用公钥/私钥加密来验证电子邮件是否是由授权服务器发送,所以由UniPass发送的社交恢复邮件请求都会进行DKIM签名

     以上就是UniPass的使用体验和一些核心内容解析,我们再来看看DappOS,它是币安孵化器第五期的成员,总共有12个项目入围,还是挺有含金量的,如下图可以看到入围项目画像围绕在降低web3进入门槛和提高web3安全性的infra层项目居多

     如官网所示DappOS也是主打的让dapp拥有web2的顺滑体验,号称要将公链虚拟化,不过我觉得它这个名字起的挺好,实际上做的事情和UniPass等是一个方向,但是OS两个字让自己从“钱包”直接拔高到达了“操作系统”,让人看起来不明觉厉,直呼牛逼,不过目前其还处在很早期阶段,没有demo也没有开发文档

     所以只能通过白皮书来理解该项目,如图所示它也是在用户和链之间加了一个中间层,和UniPass的relayer一样也承担着执行交易的过程。但是最大的不同是DappOS的这个“网络”的概念更重更宏大,它不单单只是relayer那样由具体某一方来执行交易,而是搞了一套生态级的东西,整体思想和OP很像

     如下为这套网络生态的体系,其中有两类节点角色,超级节点向服务器节点传达交易,并惩罚服务器节点的不当行为,服务器节点则从超级节点接收交易并赚取利润,如果想成为服务器节点需要质押一定资金,然后去“接单”,比如一个用户需要从OP发起交易并在BNB进行支付,其中涉及到多环节多币种

     则服务器节点就可以接单去执行这个过程,并从中赚取手续费,如果产生违约行为则会被扣除质押金,当质押到一定程度就可以升级为超级节点并进行派单等操作,所以DappOS将代付这个环节玩出了花,一整套多角色的经济模型,成为DappOS的节点帮助用户代付可以赚取利润,这套模型如果跑出来想象空间很大

     但我刚才也说了毕竟现在项目还非常早期处在白皮书阶段,愿景很美好,能否落地需要观望,它的roadmap写到今年Q3才会进行节点测试,所以我个人感觉,虽然DappOS的愿景更宏大,但是它执行的难度也要比UniPass高很多,毕竟UniPass的relayer只是一个角色,没有什么生态、利润、奖惩等等这些复杂的体系

     所以落地起来也更容易,只需要考虑如何让更多B端接入,但是DappOS则需要将这一套生态建设起来才能保证上层交易的完成率,除了考虑B端还要考虑生态,我觉得成本还是不小的,但好在有币安加持,应该会催熟一波吧,不过无论如何UniPass和DappOS都是一个非常棒的赛道,让web3更简单易用。

     以上均为个人主观见解,存在偏颇和缺陷,如有不足还望见谅,不代表任何组织立场,不构成任何投资建议,欢迎互相交流探讨,欢迎点赞转发。

     也欢迎关注我的twitter:@jason_chen998,有需要也可添加微信 cj350306878,请备注姓名、公司和目的,谢谢。

往期文章: