【Hardhat】Solidity + TypeScriptの環境構築 編
Published
2024-02-20
Author
YamatoKato
Tags
※ 画像・動画等のコンテンツが上手く生成されないことがあります。その際はお手数ですが、ページの更新を複数回お願いします。
目次
実行環境
Shell
$ node --version v18.18.2 $ npm --version 9.8.1 PC: macOS 13.5.1 editor: VScode Directory:任意の新しいディレクトリ
VScode拡張機能の用意
solidity
solidityのコードをいい感じに読みやすくしてくれるやつ
Shell
ID: JuanBlanco.solidity 説明: Ethereum Solidity Language for Visual Studio Code バージョン: 0.0.172 パブリッシャー: Juan Blanco
インストール各種
Hardhat (TypeScript,hardhat-toolbox含む)
Hardhatは、Ethereumネットワーク上でスマートコントラクトを開発、テスト、デプロイするためのフレームワークやツールセットを提供してくれるツールボックス。
Shell
$ npm install --save-dev hardhat $ npx hardhat ✔ What do you want to do? · Create a TypeScript project ✔ Hardhat project root: · /Users/yama/dev/dex/HelloSolidity # 任意 ✔ Do you want to add a .gitignore? (Y/n) · y # 任意 ✖ Help us improve Hardhat with anonymous crash reports & basic usage data? (Y/n) · y # 推奨 ✔ Do you want to install this sample project's dependencies with npm (@nomicfoundation/hardhat-toolbox)? (Y/n) · y # テストとかテンプレとか用意してくれる↑
バージョンの確認
TypeScript
// ./hardhat.config.ts import { HardhatUserConfig } from "hardhat/config"; import "@nomicfoundation/hardhat-toolbox"; const config: HardhatUserConfig = { solidity: "0.8.24", // これ }; export default config; // ./package.json "@nomicfoundation/hardhat-toolbox": "^4.0.0", "hardhat": "^2.20.1"
コンパイル確認
【エラー】Solidityのバージョンに対応するコンパイラーがない?
いざ./conract/Lock.sol とか開いてみると、、
どうやら、このファイルのSolidityのバージョン(0.8.24)をコンパイルするには、今のコンパイラーバージョンだと厳しく劣っているとのこと。
ちなみに、soldityのコンパイルにはsolcと呼ばれるコンパイラが必要だが、それはhardhatをインストールしたタイミングで一緒に追加されている。
とりま一旦コンパイルしてみることに。
Shell
$ npx hardhat compile ✖ Help us improve Hardhat with anonymous crash reports & basic usage data? (Y/n) · y
なんか0.8.24が新たにダウンロードされた!?
VScodeをcmd + shift + pで開発者:ウィンドウの再読み込み して確認すると まだ同じエラー出てる。。
ちなみにコンパイル自体は成功している模様。。Successfully generated 6 typings!
エラーの対処
鬱陶しいのでエラー消したい。。
hardhat.config.ts にて、利用するsolidityのversionを修正できるので、現行の最大にしとく 。
TypeScript
// hardhat.config.ts const config: HardhatUserConfig = { solidity: '0.8.9', }; // contract/Lock.sol // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9;
Shell
$ npx hardhat compile Downloading compiler 0.8.9 Generating typings for: 1 artifacts in dir: typechain-types for target: ethers-v6 Successfully generated 6 typings! Compiled 1 Solidity file successfully (evm target: london).
これでエラーは消え、コンパイルも無事に通った。
テストの確認
./testにあるLock.solをテストしてみる。
Shell
$ npx hardhat test Lock Deployment ✔ Should set the right unlockTime (1870ms) ✔ Should set the right owner ✔ Should receive and store the funds to lock ✔ Should fail if the unlockTime is not in the future (65ms) Withdrawals Validations ✔ Should revert with the right error if called too soon ✔ Should revert with the right error if called from another account ✔ Shouldn't fail if the unlockTime has arrived and the owner calls it Events ✔ Should emit an event on withdrawals Transfers ✔ Should transfer the funds to the owner 9 passing (2s)
通った。