Day04 実行ログ(2026-01 更新)
実装
contracts/WalletBox.solを教材どおりに追加(NotOwner/EmptyMessageカスタムエラー、receive()ログ、withdrawのCEI順守)。- テスト:
test/walletbox.ts- デプロイ時に
ownerとnoteが正しくセットされること。 setNote("")がEmptyMessageで revert し、他アカウントがNoteChangedを発火できること。- ETH 入金→オーナーのみ引き出し可能、非オーナーは
NotOwnerで revert。
- デプロイ時に
- デプロイスクリプト:
scripts/deploy-walletbox.ts(hello初期メモでデプロイ)。
コマンド
# 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 test で 16 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で再現可能。
まとめ
- WalletBox コントラクトと周辺テストをコードベースへ追加し、教材どおりのシナリオを再現。
- 送金・イベント・カスタムエラーの挙動を Hardhat テストで自動確認。
- ローカル RPC なら即デプロイできる状態になったので、後続の Day05+ でも再利用可能。