Context
Consolidates Miden Bank tutorial feedback from two reviewers:
Blockers (tests that don't compile)
- Part 3: Test references
deposit-note which doesn't exist until Part 4
- Part 4: Test references
init-tx-script which doesn't exist until Part 6
- Part 6: Possible
no field 'dep' compiler error (needs verification)
Security concerns
- Withdraw note passes sender explicitly as
depositor param, an attacker could pass a victim's ID
- No overflow check on
current_balance + deposit_amount in deposit
- No validation that asset is fungible before accessing
inner[0]
Important accuracy fixes
- Part 0 Step 4 Cargo.toml update is a no-op
- Part 1 re-adds
balances: StorageMap already present from Part 0
- Part 5 WIT file listing shows wrong filenames
- "Auto-assigns slot numbers based on field order" is outdated
- StorageMap::get return type claimed as Felt but returns any type convertible from Word
- "Called by other contracts" should be "Called by other components"
- Part 7 re-introduces
withdraw() already in Part 3
- Cross-component explanation (Part 5) comes AFTER Part 4 already uses it
- Key layout should use little-endian for 0.14 compatibility
Minor / cosmetic
- Part 2 test description mismatch (says "verifies deposit without init fails" but never calls deposit)
require_initialized introduced too early (Part 1, not called until Part 2)
- Cargo.toml updates in Parts 4, 6, 7 are all no-ops
- Trace log spam not shown in expected output
- Typo "from outside" -> "from the outside"
- Part 5 bindings visualization arrow unclear
- No IDE support note for contracts excluded from workspace
- Part 1 MockChain claim but no MockChain created
Context
Consolidates Miden Bank tutorial feedback from two reviewers:
Blockers (tests that don't compile)
deposit-notewhich doesn't exist until Part 4init-tx-scriptwhich doesn't exist until Part 6no field 'dep'compiler error (needs verification)Security concerns
depositorparam, an attacker could pass a victim's IDcurrent_balance + deposit_amountin depositinner[0]Important accuracy fixes
balances: StorageMapalready present from Part 0withdraw()already in Part 3Minor / cosmetic
require_initializedintroduced too early (Part 1, not called until Part 2)