Gnosis-Safe

如何實現 EIP-2930 訪問列表?

  • March 14, 2022

更新

所以是的,你必須使用https://github.com/folia-app/eip-2929實現,但是在訪問列表中放什麼?

Tx 中涉及的所有地址 + Gnosis 安全單例地址(在安全創建時已知)。

就我而言:

  1. 我呼叫 SC 方法的地址 ( owner)
  2. Gnosis 安全公共地址
  3. Gnosis 安全單例地址

根據storageKeys我確實提出0x0000000000000000000000000000000000000000000000000000000000000000了 1. 和 2. 不太清楚為什麼。

const tx = await contract.connect(signer).withdraw({
 gasLimit: 50_000,
 type: 1,
 accessList: [
   {
     address: "0x0000_OWNER_ADDRESS",
     storageKeys: [
       "0x0000000000000000000000000000000000000000000000000000000000000000",
     ],
   },
   {
     address: "0x0000_SAFE_ADDRESS",
     storageKeys: [
       "0x0000000000000000000000000000000000000000000000000000000000000000",
     ],
   },
   {
     address: "0x0000_SAFE_SINGLETON_ADDRESS",
     storageKeys: [],
   },
 ],
});

注意:不要忘記type: 1

超頻。那是有壓力的。

希望這可以幫助 !

原來的

由於柏林昇級 EIP-2929,我無法退出契約到 gnosis safe。

簡而言之,契約內部 Tx 似乎不能再花費超過 2300 的 gas。

這與 Gnosis 安全合約不兼容: https ://help.gnosis-safe.io/en/articles/5249851-why-can-ti-transfer-eth-from-a-contract-into-a-safe

但正如文章中強調的那樣,使用 EIP-2930 訪問列表似乎可以解決這個缺點。

我需要幫助來實施解決方案(ethers.js)。我不知道哪些地址要“列入白名單”,什麼是儲存密鑰?甚至使用哪個節點提供程序?Infura 或 Alchemix 是否支持 EIP-2930?等等。

任何幫助深表感謝。

您可以在此處找到帶有 gnosis safe 和 ethers.js 的範例:https ://github.com/folia-app/eip-2929/blob/master/index.js

您需要在訪問列表中包含兩項:

  1. 儲存槽為 0 的 Gnosis Safe 代理地址,儲存執行合約的地址
  2. Gnosis Safe 實現合約地址

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