Bsc

將 ETH 從合約發送到 BSC/BNB 上的 Gnosis Safe 錢包

  • February 25, 2022

這是程式碼

 address public ceo;
 function withdraw() external {
   payable(ceo).transfer(address(this).balance);
 }

當 CEO 是 EOA 地址時,它起作用了。但是當我將 CEO 地址替換為 gnosis-safe 錢包時,它失敗了。我在 bsc 網路上。


更新:我使用以下程式碼,但它不起作用,它說無效發件人..


 overrides = {
   gasLimit: 500000,
   gasPrice: ethers.utils.parseUnits('50', 'gwei').toString(),
   type: 1,
   accessList: [
     {
       address: "0x22e8371E3A14fA4A643BfaA1875bd04F09563F10", // admin gnosis safe proxy address
       storageKeys: [
           "0x0000000000000000000000000000000000000000000000000000000000000000"
       ]
     },
     {
       address: "0x3E5c63644E683549055b9Be8653de26E0B4CD36E",  // gnosis safe master address
       storageKeys: []
     }
   ]
 }


 endAuctionTX = await auction.withdraw(overrides)
 console.log({endAuctionTX})
 resolved = await endAuctionTX.wait()
 console.log({resolved})

Gnosis Safe 需要超過 2300 個氣體(由 發送的預設氣體transfer)來接收乙太幣。您應該使用soliditycall而不是transfer.

我已經寫了一份如何恢復的指南:https ://github.com/rmeissner/safe-migrator

本指南涉及一些自定義契約,請務必查看它們。這裡的一般方法是將單例(又名主副本)更改為在接收資金時不發出事件的 Safe 版本,因此 gas 成本較低。Safe UI 和服務仍將支持此 Safe(至少現在是這樣),但建議切換回官方 Safe 單例合約。

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