Solidity

如何為單筆交易設置不同的簽名者和汽油支付者

  • May 17, 2021

我正在嘗試將DAI代幣從使用者錢包0xDAIUserWallet 交易到一些隨機代幣合約,比如0xRandomContractAddress。在這種情況下,我使用 DAI 使用者的私鑰來簽署交易並支付汽油費,因為他是代幣的所有者。

我正在尋找的是使用 DAI 使用者私鑰簽署交易,但汽油費應該由其他錢包支付。

我正在使用使用solidity 設計的標準ERC20 乙太坊智能合約,並使用ethers.js 與智能合約進行互動。

通常,簽署交易的人也會為交易付費。但是,情況並非如此。

您正在尋找的是一種稱為元交易的東西。使用者簽署他希望發送到區塊鏈的交易,然後將交易交給第三方,第三方實際為使用者發送交易(並支付燃氣費)。這不是一件微不足道的事情,但一旦正確完成,它應該可以工作。出於某種原因,它不是很受歡迎(還)。

這是一篇關於該主題的文章:https ://medium.com/@austin_48503/ethereum-meta-transactions-90ccf0859e84

除了在另一個回復元交易中提到之外,至少還有兩個其他選項:

  1. 在稱為 Gas Stations Network 的智能合約級別上使用類似於元交易方法 - 更多詳細資訊可以在以下位置找到,例如:https ://docs.portis.io/#/gas-relay
  2. 通過在啟動之前從另一個帳戶轉移所需數量的 ETH 來贊助操作。這可以在 ethers.js 呼叫級別輕鬆實現。場景可能如下:
  • 在您的應用程序中,您有執行某些區塊鏈操作的使用者,並且您想為他們支付汽油費
  • 在進行每項操作之前,您可以估算汽油費
  • 從一些主要應用程序錢包估計的 ETH 金額轉移到使用者帳戶
  • 在區塊鏈上發起使用者操作

引用自:https://ethereum.stackexchange.com/questions/76425