LoginSignup
0
0

HardhatのgetDefaultProvider関数は、Mumbaiを標準サポートしていない

Last updated at Posted at 2023-06-18

背景

OpenseaのDocumentを、PolygonのテストネットMumbaiに書き換えながら、 実施しているときにおきたエラー。

このあたり
https://docs.opensea.io/docs/minting-from-your-new-contract-and-improvements

課題

Hardhat内にある、Ethersライブラリにある「getDefaultProvider関数」では、 Mumbaiを標準サポートしていない。

そのため、FallbackProviderとして、Infuraを補助的に使うことで、実装できたので、メモ

解決策

コード全体の記載がある記事がWeb上になかったため、記載する。

Alchemyだけでなく新たにInfuraにも登録し、こちらでAPIを準備して、2つ共のAPIを使う形で、解決した。

helper.js
function getProvider() {
    const alchemyProvider = new ethers.providers.AlchemyProvider(
        getEnvVariable("NETWORK"),
        getEnvVariable("ALCHEMY_KEY")
    );
    const infuraProvider = new ethers.providers.InfuraProvider(
        getEnvVariable("NETWORK"),
        getEnvVariable("INFURA_KEY")
    );
    return new ethers.providers.FallbackProvider([
        { provider: alchemyProvider, priority: 1 },
        { provider: infuraProvider, priority: 2 },
    ]);

    // return ethers.getDefaultProvider(getEnvVariable("NETWORK", "maticmum"), {
    //     alchemy: getEnvVariable("ALCHEMY_KEY", undefined),
    // });
}

ソースコード全体はこちら
https://github.com/EngineeredReiwa/nft-tutorial/tree/5fb2e7a7b268a3db1b1fa13a98221b6a162f8995

参考

こちらのやり方を、ほぼ真似させていただいた。

書き方は、こちらの質問者を真似させていただいた。

こちらのやり方は、実装できなかった。providerを関数として定義できている筈だが、エラーで弾かれた。
(エラーの内容を、補足で記載))

helper.js
import { Network } from "@ethersproject/networks";

const maticmum: Network = {
    name: 'maticmum',
    chainId: 80001,
    _defaultProvider: (providers) => new providers.JsonRpcProvider('rpc-url')
}

const provider = ethers.getDefaultProvider(maticmum);

function getProvider() {
    return provider(getEnvVariable("NETWORK", "maticmum"), {
        alchemy: getEnvVariable("ALCHEMY_KEY"),
    });
}
$ npx hardhat check-balance
An unexpected error occurred:

TypeError: provider is not a function
    at getProvider (/Users/user/Projects/nft-tutorial/scripts/helpers.js:45:12)
    at getAccount (/Users/user/Projects/nft-tutorial/scripts/helpers.js:54:9)
    at SimpleTaskDefinition.action (/Users/user/Projects/nft-tutorial/scripts/deploy.js:28:25)
    at Environment._runTaskDefinition (/Users/user/Projects/nft-tutorial/node_modules/hardhat/src/internal/core/runtime-environment.ts:330:35)
    at Environment.run (/Users/user/Projects/nft-tutorial/node_modules/hardhat/src/internal/core/runtime-environment.ts:163:25)
    at main (/Users/user/Projects/nft-tutorial/node_modules/hardhat/src/internal/cli/cli.ts:277:17)
(node:4479) ExperimentalWarning: stream/web is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0