Day06 実行ログ(2026-01 更新)

対象

  • contracts/GasBench.solbenchSumMemory/benchSumCalldata を持つベンチ用コントラクト。
  • test/gasbench.ts:bench関数をTx実行して hardhat-gas-reporter に載せるテスト。
  • docs/curriculum/Day06_Local_Testing.md は既に bench 方針を説明済み。

コマンド

# GasBench のみ(gas reporter の表が出る)
npx hardhat test test/gasbench.ts

# 参考:Hello のみ(gas reporter の表が出る)
npx hardhat test test/hello.ts

Gas reporter を有効化しているため、テスト完了時に関数単位のgas表が出力される。

取得した主な数値(USD列はgasReporterデフォルト)

| Contract | Method | Gas (avg) | |————|——————|———–| | GasBench | benchSumMemory | 123,548 | | GasBench | benchSumCalldata | 91,860 | | GasBench | emitMany | 28,944 | | GasBench | setS | 43,582 | | Hello | setMessage | 29,395 |

memory vs calldata の差分(123,548 vs 91,860)を gasReporter 上で確認でき、教材で述べている「calldata 優先」の理由を再現できた。

テスト構成メモ

  • テストは await c.waitForDeployment()await tx.wait() でTx完了を保証。
  • bench関数で s = r とストレージ書込みを行い、pure/view ではなく Tx として実行。
  • emitMany(n) の n=5 でイベントガスコストを比較可能。

追加検証

  • npm cinpm test を CI 相当の流れで実行し、全テスト 16 passing を再確認。

まとめ

  1. bench関数経由で memory / calldata / event cost を数値化できる状態を構築済み。
  2. ガスレポートの定量結果を Day06 教材の解説値として引用できる。
  3. 今後は npx hardhat coverage などを追加すれば網羅率チェックへ拡張可能。