実装・エラー解決

HardhatError: HH108の原因と対策

Hardhat 2系でローカルノードへデプロイする際、HH108: Cannot connect to the network localhost が発生しました。まずノードが起動しているか、次に実際の接続先が一致しているかを確認します。Hardhat 3の接続エラー番号は HHE703 です。

原因と解消法

ローカルのEthereumネットワークが稼働していない

Hardhat 2系を導入済みのプロジェクトで、別ターミナルから npx hardhat node を実行し、表示されたRPCのURLを控えます。次のスクリプトで、接続先からチェーンIDが返ることを確認できます。

#!/bin/sh
set -eu

url=${1:-http://127.0.0.1:8545}
curl --fail --silent --show-error --connect-timeout 2 --max-time 5 \
    --header 'Content-Type: application/json' \
    --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}' \
    "$url"

接続が成功すると result に16進数のチェーンIDが返ります。既定のHardhat NetworkのチェーンIDは 0x7a69 です。接続拒否ならノードの起動ログと待受ポートを確認します。HTTPが成功しても error が返る場合は、到達したRPCの応答を確認します。

ネットワーク設定が間違っている:

Hardhat 2系のCommonJS設定例です。既存プロジェクトでは networks.localhost.url を、起動ログで確認したURLに合わせます。たとえばノードが8546番で起動していれば、8545番を指定した疎通確認は失敗します。

module.exports = {
    networks: {
        localhost: {
            url: "http://127.0.0.1:8545"
        }
    }
};

私の環境ではローカルノードを起動し直して接続できました。疎通確認で result を確認した後、プロジェクトのデプロイ手順を実行します。

出典 Hardhat Network 2系の公式資料、Hardhat 3の接続エラー

-実装・エラー解決
-,