使用 USDC 購買 ETH 的無 Gas 方式- Part 1。幫助那些持有零 ETH 的人並獲得獎勵

胡家維 Hu Kenneth
My blockchain development Journey
5 min readOct 14, 2023

source : https://medium.com/coinmonks/gas-less-way-to-purchase-eth-for-usdc-16c78ae204db by Alexander Koval

問題

阻礙加密貨幣大規模採用的因素之一是天然氣的概念。對於新用戶來說,很難理解為什麼如果他的 ETH 餘額為零,他就無法發送他的 ERC20 代幣。

讓我們假設麥克是委內瑞拉的一家店主,他決定採用加密貨幣支付。他剛剛設置了加密錢包並收到了客戶支付的 100 USDC。顯然,他新創建的錢包裡的 ETH 為零。現在 Mike 想要向供應商支付 30 USDC。他被告知他的錢包需要有 ETH 來支付交易費。但 Mike 不知道在哪裡以及如何獲得 ETH,也不知道為什麼他不能從他的 USDC 餘額中支付佣金。目前麥克沒有太多選擇:

  • 他無法使用 DEX 協議將 USDC 兌換為 ETH,因為要與 DEX 交互,他的錢包需要有一些 ETH
  • 他無法使用中心化交易所購買 ETH,因為他的銀行是反加密貨幣並拒絕任何與加密貨幣相關的交易
  • 他唯一能做的就是讓他的朋友借給他一些ETH,這樣他就可以支付DEX互動的gas費,用USDC換取更多的ETH,然後償還他借的ETH。

這對麥克來說非常不方便,可能會導致他放棄區塊鏈並回到純法定支付。讓我們幫助麥克解決問題並繼續使用區塊鏈。

解決方案

元交易如今越來越受歡迎。原因是因為它們不含氣體。天然氣費可能成為許多用戶的障礙。餘額為零的錢包仍然能夠簽署訊息,這些訊息是所有權證明,可用於與智能合約互動。

USDC代幣合約支援permitEIP-712簽名作為參數批准支出的功能。這意味著代幣持有者能夠在鏈外簽署支出批准,並讓其他人在鏈上執行permit並為此調用支付天然氣費用。讓我們使用此功能來進行 ETH 的無 Gas 購買

工作流程

System design diagram

Mike 擁有 USDC 和零 ETH,但有人擁有 ETH 並願意將其賣給 Mike。我們將 Mike 稱為客戶,將賣方稱為Gas Provider

天然氣供應商應該有動力進行交易 — — 他應該獲得一些獎勵。讓客戶決定獎勵的價值,但他應該記住,獎勵的價值應該超過天然氣供應商發送到區塊鏈的交易成本。假設目前 ETH 轉帳的平均 Gas 費為 5 美元,那麼客戶應該設定高於 5 美元的獎勵,否則沒有人願意執行他的訂單。

要下訂單,客戶應準備簽名的EIP-712訊息以供支出批准,並定義他願意支付的獎勵。客戶不應批准支出給燃氣提供者(否則他可能會被不誠實的燃氣提供者搞砸),而應批准給受信任的網關。Thrusted gateway 是一個智能合約-我們稱為Gas Broker。該合約是值得信賴的,因為它是開源且不可變的。

天然氣經紀合約的目的是成為交易的仲裁者。它將透過檢查 ETH Gas 提供者發送多少 ETH來換取 USDC 來確保交易順利進行。它考慮了 Price Oracle 提供的 ETH 價格和客戶提供的獎勵。因此,最初代幣和 ETH 進入Gas Broker — — 它檢查費率是否為票價,然後交易完成,否則將恢復。為了防止燃氣提供者操縱獎勵的價值,獎勵應在客戶簽名的訊息中提供。

正如我們所看到的,客戶必須提供 2 個簽名訊息 — 一個是對Gas Broker 的支出批准,另一個包含他向Gas 提供者提供的獎勵價值。這兩個簽名以及代幣數量、客戶錢包地址和截止日期將發佈在訂單簿中。

Gas 提供者可以探索Order-book,選擇任何有利可圖的訂單並將交易發送給Gas Broker,並附上相應數量的 ETH。訂單可能會被多個天然氣供應商挑選,但由於區塊鏈的性質,只會結算一筆交易 — — 加油站將不得不透過選擇最佳費用來競爭訂單。Gas Broker將使用 Price Oracle 檢查 ETH 價格,檢查兩個訊息中簽名的有效性,透過以下公式檢查Gas 提供者提供的 ETH 交易量:(value — reward) / ethPrice如果一切正確,則它將調用permitUSDC 代幣合約,將 USDC 轉移到Gas提供者並將 ETH 發送給客戶。一旦交易被挖掘,客戶將獲得 ETH,Gas 提供者將獲得代幣。

發展計劃

在以下部分中,我將實現整個基礎設施:

  • 天然氣經紀商智能合約
  • 用於接收客戶訂單的後端API
  • 使用 MetaMask 下訂單的 UI
  • 用於瀏覽訂單簿的 UI
  • 使用 MetaMask 履行訂單的 UI
  • Gas Provider機器人的範例將根據獲利能力自動挑選訂單並在鏈上執行

專案完成後,將出現一個網頁,任何人都可以透過提交訂單來要求 ETH — — 無需支付 Gas 費用,只需簽署 2 條訊息,選擇已發布訂單之一提供 ETH 或使用 API 連接機器人。這將使 Mike 以快速、安全且無需 Gas 的方式將 USDC 兌換為 ETH,而不會打擾他的朋友。這也將使任何擁有一些 ETH 的人都可以透過幫助 Mike 和其他新的加密用戶來獲得獎勵。

--

--

胡家維 Hu Kenneth
My blockchain development Journey

撰寫任何事情,O型水瓶混魔羯,咖啡愛好者,Full stack/blockchain Web3 developer,Founder of Blockchain&Dapps meetup ,Udemy teacher。 My Linktree: https://linktr.ee/kennethhutw