账户抽象的动机、历史和分析
“智能钱包趋势”是一个首次在smartwallet.substack.com出版的专栏,在这里你可以找到关于智能钱包的新闻、见解和新鲜想法。欢迎通过此网页订阅本专栏或在本文底部留下电子邮件地址以接收最新消息。(本文为中文第一篇,英文版一周内同步)
总结
账户抽象[[账户抽象]]是以太网要实现的技术方案。根据目前的设计,智能合约账户在实现账户抽象后,也可以主动发起交易,而不依赖于“元交易”机制。
背景
以太网有两种账户,一种是外部账户,另一种是合约账户。外部地址是通过散列用户公钥获得的最后20个字节,格式为0x 76d 836358 E7 a2 bb 0 f 26 c 32 ce 61 DC 8 DD 540 b 02 f 7d。目前,以太网只有一种交易类型,必须由外部地址发起,但合约地址不能主动发起交易。因此,合约自身状态的任何改变必须依赖于由外部地址发起的交易。无论是多签名帐户、货币混合器还是智能合约,的任何配置更改,都需要由至少一个外部帐户触发。这种设计让下面两件事变得不可能。
01
没有以太网的活动事务
由于交易必须通过外部账户发送和支付,费用以以太网为单位结算,外部地址必须持有以太网。当然,这个说法并不严格。当gasprice为0时,交易不需要支付手续费。但是这种情况非常极端(见[1]),对于普通用户来说,这样的事务可能永远进不去块。
02
非secp256k1的原生认证方法
由于交易必须由外部账户发起,所以每笔交易的合法性检查是为了验证交易是否提供了与账户对应的合法secp256k1签名。但是,如果我们要引入复杂的逻辑(如多重签名或社交恢复)或采用不同的认证算法(如Eddsa、BLS、secp256r1签名算法,使用这些算法是因为它们具有特殊的特性,或者对零知识证明友好,或者便于签名聚合以减少带宽开销,或者与现有的硬件验证器兼容),则必须在智能合约级别实现。同时,这意味着这种验证仍然应该由至少一个外部帐户发起,并由Ethereum的secp256k1签名验证。
以上两个约束使得普通用户很难使用Ethereum。首先,无论以太网使用什么应用,用户都必须持有以太网(并承担以太网价格波动的风险)。其次,用户需要处理复杂的成本逻辑,如燃气价格、燃气限额、交易阻塞等,对用户来说过于复杂。许多区块链钱包或应用程序试图通过产品优化来改善用户体验,但收效甚微。
如何解决以上两个问题?
核心思想是将“验证所有权”的操作从共识层分散到合约层,即检查交易的发送者是否与资产所有者一致,但是否提供合法凭证。具体方法是:用户对交易内容进行签名,并将签名提交给第三方进行操作,我们在下面的文章中称之为“运营operator”。这种交易被称为“元交易”。根据不同的设计理念,元交易方案可以大致分为两类:
01
以账户为中心的——智能钱包
以账户为中心的方案的目标是基于智能合约管理为用户创建一个账户,用户可以使用该账户与区块链的任何合约进行交互。智能钱包的概念由来已久,但在过去的一年里取得了很大的进步。根据“智能钱包趋势”的统计(注:作者是本人,特此声明),目前运营,有10多家智能钱包商家,用户总数超过14万。大多数智能钱包采用运营策略,为用户支付连锁上手续费,然后通过其他方式向用户收取费用。
以账户为中心的方案本质上是一个区块链账户系统,具有很强的通用性,可以提供账户恢复、大额审批、转账白名单等附加功能。智能钱包的运营帮助用户在区块链创建和管理可编程身份,并提供交易上行服务。一般来说,智能钱包会为链内用户支付煤气费,通过集中计费系统向用户收费。这种模式非常类似于传统世界中的账户服务。例如,运营商户支付基站和光纤费用,而用户只要充值就可以使用通信服务,而无需关注底层复杂的逻辑。
智能钱包也有其局限性。一个是安全,一个是成本。
安全性:如果合约,账户有漏洞,所有用户的资产都将面临风险。专业的代码编写、安全审计和形式化验证只能降低风险的可能性,但不能保证不会发生。