Skip to content

Comments

feat: implementing verify_ledger_age and Prevent Flash Donations#139

Open
Codekill33 wants to merge 1 commit intoWeb3Novalabs:mainfrom
Codekill33:main
Open

feat: implementing verify_ledger_age and Prevent Flash Donations#139
Codekill33 wants to merge 1 commit intoWeb3Novalabs:mainfrom
Codekill33:main

Conversation

@Codekill33
Copy link

This PR prevents “flash” donations by ensuring a user cannot donate and withdraw (or request a refund) within the same ledger.

Solution

We now track the ledger number of the user’s most recent donation and block refund/withdraw operations if they occur in the same ledger.

Implementation Details

✅ Store last_donation_ledger for each user at donation time

✅ On refund/withdraw:

Compare current ledger number with last_donation_ledger

Reject transaction if they match

✅ Added validation error with clear failure reason

Requirements Covered

✔ Store the ledger number of the last donation

✔ Ensure refund fails if called in the same ledger as donation

Testing

Added unit tests to verify:

Refund fails when called in the same ledger as donation

Refund succeeds when called in a later ledger

No regression to existing donation/refund logic

Impact

No breaking changes

Minimal storage overhead (single ledger value per user)

Improves economic safety and prevents ledger-level exploitation

closes #99

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FUNCTION] implement verify_ledger_age

1 participant