Metamask

如何使用 Safe Core SDK 在 Mumbai testnet(Polygon) 上部署 gnosis 安全代理合約?

  • January 10, 2022

我正在關注 Safe Core SDK文件並希望在 Mumbai 測試網上創建一個安全代理合約,當我在實例化SafeFactory 類Error: Invalid Safe Proxy Factory contract address後切換到 Metamask 中的 Mumbai/Ropsten 測試網時出現以下錯誤。當我切換到 Rinkeby 測試網(乙太坊)或其他一些乙太坊測試網時,不會發生此錯誤。有人能告訴我如何使用安全核心 SDK 在孟買測試網上部署安全嗎?

我正在使用Safe Core SDK v1.1.1 和web3 v1.6.1 來實例化 ethAdapter。

Safe Core SDK 從safe-deployments獲取所有安全合約和網路配置。特別是在這種情況下,從這裡開始,這意味著如果 Mumbai chainId (80001) 不存在於 networkAddresses密鑰下方,則安全合約不會部署在該網路中。

發生這種情況時,您需要手動部署合約。部署後,Safe Core SDK 提供了使用來自網路中不受支持的安全合約實例的可能性safe-deployments。這可以通過以下方式完成:

import { ContractNetworksConfig } from '@gnosis.pm/safe-core-sdk'

const chainId = await ethAdapter.getChainId()
const contractNetworks: ContractNetworksConfig = {
 [chainId]: {
   multiSendAddress: '<MULTI_SEND_ADDRESS>',
   safeMasterCopyAddress: '<MASTER_COPY_ADDRESS>',
   safeProxyFactoryAddress: '<PROXY_FACTORY_ADDRESS>'
 }
}

const safeFactory = await SafeFactory.create({ ethAdapter, contractNetworks })

您最近在孟買網路中部署的安全合約的地址和MULTI_SEND_ADDRESS地址MASTER_COPY_ADDRESSPROXY_FACTORY_ADDRESS

現在您可以使用您的safeFactory實例創建一個新的保險箱:

const safeSdk = await safeFactory.deploySafe(safeAccountConfig, safeDeploymentConfig)

當實例化 Safe Core SDK 以與不受支持的網路一起使用時,您將始終需要以contractNetworks相同的方式使用相同的參數:

import { ContractNetworksConfig } from '@gnosis.pm/safe-core-sdk'

const chainId = await ethAdapter.getChainId()
const contractNetworks: ContractNetworksConfig = {
 [chainId]: {
   multiSendAddress: '<MULTI_SEND_ADDRESS>',
   safeMasterCopyAddress: '<MASTER_COPY_ADDRESS>',
   safeProxyFactoryAddress: '<PROXY_FACTORY_ADDRESS>'
 }
}

const safeSdk = await Safe.create({ ethAdapter, safeAddress, contractNetworks })

在此處查找有關包含所有可選參數的SafeFactorySafe Core SDK API 參考的最新文件

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