LoginSignup
15
3

More than 1 year has passed since last update.

FoundryとHardhatを比較してみた

Posted at

image.png

この記事は以下の記事の翻訳・まとめです。
https://yamenmerhi.medium.com/foundry-vs-hardhat-918c55e47add

主な違い

1. コンパイル速度

FoundryはRustで作られていて、どうやらコンパイル速度が速いらしいということを知ってる人が多いと思います。

https://github.com/YamenMerhi/foundry-lsp-smart-contracts
このレポジトリでの検証結果では、

  • hardhat: 39.33s
  • Foundry: 26.22s

hardhatの2/3程になっています。

2. テスト言語

Hardhat => Javascript/Typescript
Foundry => Solidity

Foundryでは、コントラクトとテスト両方solidityで書くので、開発からテストに移る際に脳の切り替えをせずにそのまま始めることができます。+JSよりもSolidityの方がテスト速度が全然速いです。

3. Dependencies

Hardhat => npm
Foundry => git submodule (default)

Foundryにしかない機能

Traces

トレースは、関数処理の内部状態を見ることができる機能です。どの関数がどんなパラメーターで呼び出され、どのイベントが吐かれたかなどを、構造的に確認することができます。これにより、Hardhatであれば コントラクト内でconsole.log()して頑張っていたデバッグが超簡単になります。
image.png

Fuzz Testing

Fuzzing testとも言い、ランダムなパラメーターを渡すテスト方式です。通常のUnitTestと同じくらい大事なテストですが、知名度の低さやそもそもの導入難易度の高さでほとんどの場合無視されています。
開発者が想定していない状態をテストでき、スマコン開発では必須級です。

Foundryではこれをネイティブ実装しており、個人的にはこれが一番嬉しいです。
image.png
もし想定と異なる動きをした際、その時渡されたパラメーターを出してくれます。

最後に

Foundryは非常に強力ですが、まだまだ開発初期段階です。ドキュメントやチュートリアルの充実、追加機能がユーザーから求められています。

参考リンク

https://www.youtube.com/watch?v=Rp_V7bYiTCM&t=1119s
https://book.getfoundry.sh/index.html
https://www.paradigm.xyz/2021/12/introducing-the-foundry-ethereum-development-toolbox

15
3
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
15
3