Odaily星球日报■以太坊上的通用经济抽象( 二 )


第 0 步:客户端钱包想要发送一笔由一组操作 [1…n] 组合而成的交易 。
第 1 步:客户端钱包通知 Gas 中继器它想要发送哪笔交易 , 以及想要用何种资产支付交易手续费 。
第 2 步:中继器回复一个签过名的报价消息 , 即为中继用户请求的交易指定一个价格 , 该价格以用户指定(用于支付手续费)的资产计算 。
第 3 步:客户端钱包增加一笔额外的操作 , 即转移指定价值的资产给中继器 。
第 4 步:这笔最终由操作 [1…n+1] 组合而成的交易连同签过名的报价消息被发回给中继器 。
第 5 步:中继器验证交易和报价消息 , 然后将该交易发送至区块链上 。
有了这一功能 , 客户端钱包可以要求许多 Gas 中继器分别提供报价 , 最终选择报价最低的中继器发送交易 。
实现代币抽象一旦有了多操作交易的加持 , 实现代币抽象也就轻而易举了 , 关键的难点在于交易分析 。 客户端钱包需要能够分析潜在的交易 , 以便知道在执行交易中的操作时会花费(或收到)哪些资产 , 花费多少(或收到多少) 。
我们在 Astro 中建构了一个改良版的以太坊节点 , 从而可以运行上述的分析 , 但由于这在很大程度上是一个工程挑战而非算法挑战 , 因此我们将它留给读者朋友们做练习 。
一旦我们可以确定这组操作中所需要及会产生的资产 , 钱包就可以轻松地连接至各个 DEX 来为用户完成这组资产的兑换 。 诸如 0x API 这样的聚合器非常适合聚合这些用户所需的兑换 , 或者钱包也可以选择使用诸如 Uniswap 这类更简单但滑点效率更低的解决方案 。 有了这组互换交易 , 钱包可以在用户的操作前后分别附加所需和所得资产的兑换操作来完成最终的交易 。
合体吧!现在我们已经同时实现了手续费和代币抽象 , 而二者合体就能实现经济抽象了!
我们还可以加入其它一些灵活的功能 , 比如即时授权 , 这样就无需再发送单独的交易来授权诸如 0x 和 Uniswap 之类的合约动用我们的资产了 。 此举也提升了用户的安全性 , 因为我们只需授权这笔交易动用所需数量(而非全部)的资产 。
Odaily星球日报■以太坊上的通用经济抽象
本文插图
我们可以通过这一流程图清楚地说明引言中那个相当复杂的示例 , 抽象地展示这一笔交易最终包含的操作列表 。 如我们所见 , 用户可以支付 0x 协议的手续费(ETH)、0x 中继器的手续费(ZRX)、加密猫卖家的出价(DAI)以及 Gas 中继器传送交易的费用 , 而这一切单靠钱包里的 USDC 就足以完成 。 【Odaily星球日报■以太坊上的通用经济抽象】感谢 Clinton Bembry、Linda Xie、Aparna Krishnan、以及 Clay Robbins 对本文的审阅 。


推荐阅读