凯文·布里兹(Kevin Britz)
在最近被Coinbase收购的Astro Wallet中 ,我们花费了过去两年的大部分时间来研究各种形式的经济抽象。我们希望与更大的区块链行业分享我们的发现,希望这可以作为解决当今分散式应用程序面临的许多UX问题的指南。
尽管不是一个新概念,但以前只有一小部分经济抽象用例在实践上是可行的。在本文中,我们将讨论如何今天实现广义的实现。
定义
我们已经看到了术语的宽松用法,因此首先我们要给出一个特定的定义。
经济抽象 —能够原子地支付任何区块链交易及其所产生的操作的能力。
让我们给出一些示例,以进一步阐明其内容:
- 用户想转移USDC,但没有ETH来支付交易费用。
- 用户想在0x v3中继器上购买CryptoKitty,其中中继器要收取ZRX费用,而卖方要DAI,但用户只有USDC。
组件
实际上,在大多数区块链上,这分为两个部分:费用抽象和令牌抽象。如果我们能够同时启用这两种功能,那么我们将拥有完整的经济抽象。
费用抽象—能够以原子方式为该区块链上的任何资产支付区块链交易费的能力。
协议通常必须具有特定的基本令牌(如Ether),以确保其网络的安全性。某些协议的想法是接受任何令牌作为交易费,从而实现费用抽象,但是这不适用于大多数协议。在我们的实现部分,我们将讨论如何在以太坊之类的协议上构建费用抽象。
令牌抽象—能够以原子方式用该区块链上的任何资产支付区块链交易产生的操作的能力。
一旦执行了交易,结果操作可能会花费任何数量的资产,例如用USDC购买CryptoKitty或在Compound上借贷DAI。借助令牌抽象,我们不仅限于支付特定的令牌,还可以支付该区块链上的任何资产。
实作
要实现费用和令牌抽象,我们需要两个核心的区块链功能:费用委托和多操作交易。大多数区块链都没有原生支持(以太坊都没有),因此需要额外的构造来实现我们的先决条件。在我们的构建中,我们将主要关注以太坊,但是这适用于大多数智能合约平台。
基本构建块
在以太坊上启用这些核心功能的关键是通过使用智能合约钱包。这些功能在传统地址上不存在,但是通过智能合约,我们可以添加其他逻辑以启用新的核心功能。
费用委托 -可以指定交易者的费用而不是发件人的其他付款人。
如今,大多数智能合约钱包都通过使用气体中继器来促进费用分配。用户可以直接签署一条消息以进行中继(打包成交易并代表他们发送),而不是直接向他们的智能合约钱包发送交易,从而支付自己的交易费用。由于用户的实际帐户是智能合约,因此两个入口点都是有效的,只要钱包可以验证调用即可。
多操作事务处理 —将多个原子函数调用打包到一个事务中的能力。
与费用委托不同,多操作交易尚未得到广泛利用。此功能对于促进单个原子事务中的多个操作是必需的。包装协定已被用来解决此问题,但是它们隐藏了诸如msg.sender之类的元数据,从而使它们无法用作通用解决方案。幸运的是,此功能非常容易包含在智能合约钱包中,但是,到目前为止, Dapper是唯一支持此功能的智能合约钱包。
实施费抽象
利用多操作交易,我们可以在标准气体中继器体系结构之上构建消息传递协议,以实现费用抽象。在这里,我们提供了一个简单的示例协议,可以将其扩展以提供其他钱包功能。
步骤0:客户钱包想发送包含操作[1…n]的交易。
步骤1:客户钱包将其要发送的交易以及其要支付交易费用的资产通知给气体中继器。
步骤2:中继器以签名报价作为响应,该报价中指定了所请求资产的价格以中继所请求的交易。
步骤3:客户钱包附加一项附加操作,将资产的指定值转移到中继器。
步骤4:带有操作[1…n + 1]的已完成交易与签名报价一起发送到中继器。
步骤5:中继器验证交易并报价,然后将交易发送到区块链。
此功能还为客户钱包提供了向许多燃气中继器请求报价的机会,仅选择将已完成的交易发送给最便宜的交易者。
实施令牌抽象
同样,在多操作事务的支持下,令牌抽象变得相当容易支持,其中关键的复杂性在于事务分析。客户钱包需要能够分析潜在的交易,以查看在执行交易操作时将花费(以及收到)哪些资产以及这些资产中的多少。
在Astro,我们构建了一个可以运行该分析的自适应以太坊节点,但是由于这主要是工程挑战而不是算法挑战,因此我们将其留给读者练习。
一旦我们能够确定操作集的必需资产和最终资产,钱包就可以轻松地与任意数量的DEX接触,以构建与用户基础资产之间的交换集。像0x API这样的聚合器非常适合收集这些必需的交换,或者,钱包可以使用更简单但滑移效率更低的解决方案,例如Uniswap 。通过这组交换,钱包可以通过在用户操作之前和之后分别附加所需资产和所得资产的交换操作来构造最终交易。
全部放在一起
现在,我们已经实现了费用和令牌抽象,我们可以将它们结合起来以实现完整的经济抽象。
我们还可以合并其他简洁功能,例如即时批准,因此我们不需要单独的交易即可批准诸如0x和Uniswap之类的合同来花费我们的资产。这也提高了用户安全性,因为我们只需要批准交易所需的内容而不是最大金额。
这样,我们可以说明引言中的一个相当复杂的示例,以显示事务的最终操作列表看起来像什么抽象的东西。正如我们看到的那样,用户仅用USDC就可以支付0x的ETH协议费,0x中继器的ZRX费,CryptoKitty卖方的DAI要价以及用于传输交易的气体中继器。
感谢Clinton Bembry , Linda Xie , Aparna Krishnan和Clay Robbins审阅了这篇文章。
除非另有说明,否则本文提供的所有图像均由Coinbase提供。
广义经济抽象最初发表在The Coinbase Blog on Medium上,人们通过突出并响应该故事来继续进行对话。
版权声明:项目均采集于互联网, 空投币 无法审核全面,且希望大家能赚钱,请谨慎切勿上当受骗!
温馨提示:★★★天上真会掉馅饼!天道酬勤,都是机会!不错过每个空投糖果!真假难以辨认,尽量0撸!