Coinbase Pro

Coinbase Pro | 廣義經濟抽象

Coinbase Pro | 廣義經濟抽象


​作者 | Kevin Britz


在最近被Coinbase收購的Astro Wallet中,我們花費了過去兩年內大部分時間來研究各種形式的經濟抽象。我們希望與更多的區塊鏈從業者分享我們的發現,希望它可以作為解決當今去中心化應用所面臨的許多UX問題的指南。

儘管它不是一個新概念,但以前只有一小部分經濟抽象用例在實踐上是可行的。在本文中,我們將討論如何實現針對於經濟抽象較為普遍的實施辦法。

定義

我們已經看到了該術語較為寬泛的用法,因此,我們首先要給出一個明確的定義。

經濟抽象——能夠以原子的方式,用該區塊鏈上的任意資產支付任何區塊鏈的交易費用和因此產生的後續操作的能力。

讓我們舉幾個例子,以進一步說明該定義:

  • 用戶想轉賬USDC,但沒有ETH來支付交易費用。
  • 用戶想在0x v3中繼器上購買CryptoKitty,其中繼器要收取ZRX費用,而賣方要DAI,但用戶只有USDC。


組成部分

實際上,在大多數區塊鏈上,經濟抽象分為兩個部分:費用抽象和代幣抽象。如果我們能夠同時啟用這兩種功能,那麼我們將擁有完整的經濟抽象。

費用抽象(fee abstraction)—— 能夠以原子方式,用區塊鏈上的任何資產來支付區塊鏈交易費的能力。

協議通常必須具有特定的基礎代幣(如Ether),以確保其網絡的安全性。某些協議接受任何形式的代幣以作為交易費,從而實現了費用抽象,但是這不適用於大多數協議。在我們實現的部分中,我們將討論如何在以太坊等協議上構建費用抽象。

代幣抽象(token abstraction)—— 能夠以原子方式,用區塊鏈上的任何資產支付因區塊鏈交易產生的後續操作的能力。

一旦執行了交易,後續操作可能會涉及花費任何數量的資產,例如用USDC購買CryptoKitty或在Compound上借貸DAI。藉助代幣抽象,我們將不僅限於支付特定的代幣,而可以支付區塊鏈上的任何資產。

具體實施

要實現費用和代幣抽象,我們需要兩個核心的區塊鏈功能:費用委託(fee delegation)和多操作交易(multi-op transaction)。大多數區塊鏈都沒有上述兩個原生功能(以太坊都沒有),因此需要額外的構造來實現我們的先決條件。在我們的構建中,我們將主要關注以太坊,但這適用於大多數智能合約平臺。

基本構建塊

在以太坊上啟用這些核心功能的關鍵是智能合約錢包的使用。這些功能在傳統地址上不存在,但是通過智能合約,我們可以添加其他邏輯以啟用新的核心功能。

費用委託(fee delegation)—— 支付交易費用時,指定其他付款人而不是發送者的能力。

如今,大多數智能合約錢包都通過使用Gas中繼器來使費用委託更加容易。用戶可以直接簽署一條消息以進行中繼(打包成交易並代表他們發送),而不是直接向他們的智能合約錢包發送交易以支付自己的交易費用。由於用戶的實際帳戶是智能合約,因此兩個入口點都是有效的,只需錢包可以驗證調用即可。

多操作交易(multi-op operation transactions)—— 將多個原子函數調用打包到一個交易事務中的能力。

與費用委託不同,多操作交易尚未得到廣泛利用。此功能對於促進單個原子事務中的多個操作來說是必需的。Wrapper contract在一定程度上已被用來解決此問題,但是它們隱藏了諸如msg.sender之類的元數據,從而使它們無法用作通用解決方案。幸運的是,此功能非常容易包含在智能合約錢包中。但是,到目前為止,Dapper是唯一支持此功能的智能合約錢包。

實現費用抽象

利用多操作交易,我們不但可以構建消息傳遞協議,還可以構建標準化gas 中繼器,以實現費用抽象。在這裡,我們提供了一個簡單的示例協議,並可以將其進一步擴展以提供其他的錢包功能。

  • 步驟0:客戶錢包想發送包含操作[1…n]的交易。
  • 步驟1:客戶錢包將其要發送的交易以及其要支付交易費用的資產種類通知gas中繼器。
  • 步驟2:中繼器以簽名報價作為響應,該報價中指定了該資產報價的價格,以中繼所請求的交易。
  • 步驟3:客戶錢包附加一項額外操作,將該資產的指定值轉移到中繼器。
  • 步驟4:帶有操作[1…n + 1]的已完成交易與簽名報價一起發送到中繼器。
  • 步驟5:中繼器驗證交易並報價,然後將交易發送到區塊鏈。


此功能還為客戶錢包提供了向gas中繼器請求報價的機會,僅選擇將已完成的交易發送給報價最低的交易者。

實現代幣抽象

同樣,在多操作交易的支持下,代幣抽象則較為容易實現,其關鍵複雜點在於交易事務分析。客戶錢包需要能夠分析潛在的交易事務,以查看在執行交易操作時將花費(以及收到)哪些資產以及這些資產中的多少。

在Astro中,我們構建了一個可以運行此分析的自適應以太坊節點,但是由於這主要是工程挑戰而不是算法挑戰,因此我們將其作為習題留給讀者。

一旦我們能夠確定操作集的必需資產和最終資產,錢包就可以輕鬆地與任意數量的DEX接觸,以構建與用戶基礎資產之間的一組交換。像0x API這樣的聚合器非常適合收集這些必需的交換,但是錢包還可以使用更簡單但滑移率較低的解決方案,例如Uniswap。通過這組交換,錢包可以通過在用戶操作之前和之後,分別附加所需資產和所得資產的交換操作,來構造最終交易。

經濟抽象

現在,我們已經實現了費用和代幣的抽象,我們可以將它們結合起來以實現完整的經濟抽象。

我們還可以結合其他類似即時批准的簡潔功能,因此我們不需要單獨的交易即可批准諸如0x和Uniswap之類的協議來花費我們的資產。這也提高了用戶安全性,因為我們只需要批准交易所需的內容而不是最大金額。

Coinbase Pro | 廣義經濟抽象

通過上圖我們就可以說明引言中的那個相當複雜的例子。如我們所見,用戶僅用USDC就能夠支付0x協議的ETH費用,0x中繼器的ZRX費用,CryptoKitty賣方的DAI要價以及用於傳輸交易的gas中繼器。

Coinbase Pro | 廣義經濟抽象

Kevin Britz 作者

子銘

翻譯


內容僅供參考 不作為投資建議 風險自擔


分享到:


相關文章: