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之類的協議來花費我們的資產。這也提高了使用者安全性,因為我們只需要批准交易所需的內容而不是最大金額。

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

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;