feat(escrow): implement on-chain payer blacklist with appeal period - #554
Merged
Kingsman-99 merged 1 commit intoJul 30, 2026
Merged
Conversation
- Add BlacklistEntry type with banned_at, appeal_hash, finalised, upheld fields - Add blacklist storage keys and APPEAL_WINDOW_LEDGERS constant (360 ledgers) - Add blacklist_payer admin function to block bad actors - Add submit_appeal function for blacklisted payers to appeal within window - Add finalise_blacklist admin function to uphold or reinstate payers - Add pay_invoice function with blacklist enforcement - Update deposit to check for finalised-blacklisted payers - Add get_blacklist_entry and is_payer_blacklisted query functions - Add PayerBlacklisted, AppealWindowExpired, NotBlacklisted, AlreadyFinalised errors - Add 11 comprehensive unit tests covering all scenarios - Emit events for blacklist_add, appeal, and blacklist_finalise Closes Stellar-split#421
|
@beulah7717108-eng Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements an admin-managed payer blacklist with a built-in appeal window. Blacklisted payers are blocked from depositing into any invoice.
Changes
BlacklistEntrytype withbanned_at,appeal_hash,finalised,upheld,reason_hashfieldsblacklist_payeradmin function to block bad actorssubmit_appealfunction for blacklisted payers withinAPPEAL_WINDOW_LEDGERS(360 ledgers)finalise_blacklistadmin function to uphold or reinstate payerspay_invoicefunction with blacklist enforcementdepositto check for finalised-blacklisted payersget_blacklist_entryandis_payer_blacklistedquery functionsPayerBlacklisted,AppealWindowExpired,NotBlacklisted,AlreadyFinalised,NotBlacklistedPayerAcceptance
blacklist_payerrecords entry withfinalised: false; only admin can callpay_invoice/depositblocks finalised-blacklisted payers withPayerBlacklistedAPPEAL_WINDOW_LEDGERSwindowuphold: true(ban stands) orfalse(payer reinstated)Closes
Closes #421