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

実装

  • contracts/WalletBox.sol を教材どおりに追加(NotOwner/EmptyMessage カスタムエラー、receive() ログ、withdraw のCEI順守)。
  • テスト: test/walletbox.ts
    • デプロイ時に ownernote が正しくセットされること。
    • setNote("")EmptyMessage で revert し、他アカウントが NoteChanged を発火できること。
    • ETH 入金→オーナーのみ引き出し可能、非オーナーは NotOwner で revert。
  • デプロイスクリプト: scripts/deploy-walletbox.tshello 初期メモでデプロイ)。

コマンド

# WalletBox のテストのみ
npx hardhat test test/walletbox.ts
# => 3 passing

# ローカルネットへデプロイ例
./node_modules/.bin/hardhat node
npx hardhat run scripts/deploy-walletbox.ts --network localhost
→ WalletBox: 0x5FbDB2315678afecb367f032d93F642f64180aa3

全体テストは npx hardhat test16 passing を確認。

観測事項

  • ethers.parseEther / waitForDeployment() など ethers v6 API へ置き換え済み。
  • withdraw の挙動検証でイベント引数もアサートして CEI + custom error の動作を確認。

未実施

  • Sepolia デプロイは .env に RPC / PRIVATE_KEY を設定していないため未実行。環境が整い次第、npx hardhat run scripts/deploy-walletbox.ts --network sepolia で再現可能。

まとめ

  1. WalletBox コントラクトと周辺テストをコードベースへ追加し、教材どおりのシナリオを再現。
  2. 送金・イベント・カスタムエラーの挙動を Hardhat テストで自動確認。
  3. ローカル RPC なら即デプロイできる状態になったので、後続の Day05+ でも再利用可能。