0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Hardhat入門]Hardhatでスマートコントラクトをテストネットにデプロイする

Last updated at Posted at 2025-06-28

HardhatでSolidityの開発環境を整え、スマートコントラクトをテストネットにデプロイする

本記事では Hardhat を用いて Solidity のコーディング環境を構築し、テストネット(Sepolia)にスマートコントラクトをデプロイする手順を解説します。基本的には Hardhat のチュートリアルに沿いながら、必要な箇所は補足を加えています。

動作環境

  • Node.js 18以上推奨
  • Hardhat 最新版

プロジェクト初期化

まずは npm の初期化を行います。

npm init

続いて、Hardhat のインストール。

npm install --save-dev hardhat

そのまま Hardhat を初期化します。

npx hardhat init

image.png

今回は TypeScript プロジェクトを選択します。.gitignore の追加や推奨プラグインのインストールも自動で行われるので y を選択します。

image.png

選択が完了すると、以下のようなディレクトリ構成になります。

my-hardhat-project/
├── contracts/
│   └── Lock.sol
├── ignition/
│   └── modules/
│       └── LockModule.ts
├── scripts/
│   └── deploy.ts
├── test/
│   └── Lock.ts
├── .gitignore
├── hardhat.config.ts
├── package.json
├── tsconfig.json
├── README.md
├── yarn.lock(または package-lock.json)


チュートリアル用 Solidity コントラクト SampleContract.solの作成

//SPDX-License-Identifier: UNLICENSED

// Solidity files have to start with this pragma.
// It will be used by the Solidity compiler to validate its version.
pragma solidity ^0.8.0;

contract Sample {
    /*
     * ETHが送金されると感謝のメッセージをリターンする関数
     */
    function storeValue() external payable returns (string memory) {
        return "Thank you for your donation!!";
    }
}

コンパイル

npx hardhat compile

artifacts ディレクトリに ABI などが出力されます。


テストネット(Sepolia)へのデプロイ準備

Hardhat設定ファイル hardhat.config.ts

import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";

const privateKey = "YOUR_PRIVATE_KEY";

const config: HardhatUserConfig = {
  defaultNetwork: "sepolia",
  networks: {
    hardhat: {},
    sepolia: {
      url: "https://ethereum-sepolia.rpc.subquery.network/public",
      chainId: 11155111,
      accounts: [privateKey],
    },
  },
  solidity: "0.8.28",
};

export default config;

各設定項目の説明

  • defaultNetwork: 明示的にネットワークを指定しない場合に使われるネットワーク(ここでは sepolia)。
  • url: RPCノードのURL。
  • chainId: 対象ネットワークのチェーンID(省略可能ですが記載推奨)。
  • accounts: 使用するウォレットの秘密鍵を配列で指定。ここで指定したアカウントでデプロイされます。

秘密鍵の管理に注意!
秘密鍵が漏洩すると、そのアカウントにある資金を全て失うリスクがあります。本記事ではハードコーディングしていますが,環境変数管理や .env の使用を推奨します。


Hardhat Ignition の利用

Hardhat Ignition はスマートコントラクトのデプロイと操作の流れをモジュールとして管理できる機能です。

公式説明要約:
JavaScript のモジュールのように、コントラクトのインスタンスや操作をまとめて定義・エクスポートできる仕組み。

モジュール作成

ignition/modules/SampleModule.ts を以下のように作成します。

// This setup uses Hardhat Ignition to manage smart contract deployments.
// Learn more about it at https://hardhat.org/ignition

import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";

const SampleModule = buildModule("SampleModule", (m) => {
  const sampleFuture = m.contract("Sample", []);
  // この関数は `payable` に指定されているため、ETH を伴うトランザクションで呼び出すことができます。今回の Ignition モジュールでは 100 wei を送金しています。
  const storeValue = m.call(sampleFuture, "storeValue", [], {
    value: BigInt(100),
  });
  return { sampleFuture };
});

export default SampleModule;

解説

  • m.contract(name, args): スマートコントラクトをデプロイ。
  • m.call(contract, method, args, options): 指定したメソッドをコール。

デプロイ実行

以下のコマンドで Sepolia ネットワークにデプロイを実行します。

npx hardhat ignition deploy ignition/modules/SampleModule.ts

ネットワークを確認するプロンプトが出るので y を入力します。

数秒後、以下のようなメッセージが出れば成功です。

[ SampleModule ] successfully deployed 🚀

EtherScan で確認

デプロイされたアドレスを EtherScan(https://sepolia.etherscan.io)で確認できます。秘密鍵に対応するウォレットアドレスで検索すると、デプロイされたコントラクトや実行されたトランザクションが表示されます。

image.png


参考資料


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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?