User Story:
As a developer, I want the contract to automatically detect when milestones are reached after each donation so that unlocking happens on-chain.
Acceptance Criteria:
- After donation,
raised_amount updated atomically
- Loop over milestones: if
raised_amount >= milestone.target_amount && status == Locked, set to Unlocked
milestone_unlocked event emitted for each newly unlocked milestone
- Multiple milestones can unlock in single donation
User Story:
As a developer, I want the contract to automatically detect when milestones are reached after each donation so that unlocking happens on-chain.
Acceptance Criteria:
raised_amountupdated atomicallyraised_amount >= milestone.target_amount && status == Locked, set toUnlockedmilestone_unlockedevent emitted for each newly unlocked milestone