Contract-Development

如何使用 ethers.js 和 alchemy-sdk 實例化合約實例

  • August 10, 2022

(從公開的 Alchemy discord 中找到這個,並想在這裡提出問題,以便它可以線上被索引💙)


我正在嘗試在我的 javascript 程式碼中實例化契約,以便我可以呼叫 ABI 方法。

但是,當我嘗試使用該alchemy-sdk對象創建一個new Contract時,我得到一個錯誤。

這就是我設置它的方式:

const CompoundorContract = new ethers.Contract(
 CONSTANTS.ADDRESSES.COMPOUNDER_CONTRACT_ADDRESS,
 CONSTANTS.CONTRACTS.COMPOUNDOR_ABI,
 alchemy.core
);

這是我得到的錯誤:

Error: invalid signer or provider (argument="signerOrProvider", value={"config":{"apiKey":"my_key","network":"opt-mainnet","maxRetries":5}},code=INVALID_ARGUMENT,version=contracts/5.6.2

有誰知道如何解決這一問題?

試試這個使用 alchemy-sdk 連接到 eth 主網來載入合約實例的例子

我認為關鍵區別在於您應該使用await alchemy.config.getProvider()而不是您目前正在使用的alchemy.core

這是因為您需要實例化 Alchemy 提供程序連接的一個實例,而不是使用命名空間 sdk 模組alchemy.core

而不是傳遞alchemy.core,傳遞 this 的返回值

const ethersProvider = await alchemy.config.getProvider()

最後:

const CompoundorContract = new 

ethers.Contract(
 CONSTANTS.ADDRESSES.COMPOUNDER_CONTRACT_ADDRESS,
 CONSTANTS.CONTRACTS.COMPOUNDOR_ABI,
 ethersProvider
);

如果不起作用,請發表評論。

如果可行,請投票贊成:)

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