feat(payment-escrow): Implement treasury with admin withdrawal - #184
Merged
Conversation
This commit introduces a treasury system to the Payment Escrow contract for more robust and auditable fee management. Previously, fees were transferred to the recipient immediately upon escrow completion. This change modifies the logic to accumulate all collected fees into a central treasury balance within the contract. Key changes: - The `release`, `claim`, and `resolve_dispute` functions now add the fee amount to a new treasury storage item instead of transferring it directly. - A new `withdraw_treasury` function has been added, callable only by the contract admin, to transfer accumulated fees to a specified address. - This function includes validation to ensure the withdrawal amount does not exceed the available treasury balance, returning an `InsufficientBalance` error if it does. - A `treasury_w` event is emitted upon successful withdrawal to provide an on-chain audit trail of all treasury movements. - Added a new test module (`treasury.rs`) with tests covering successful withdrawals, unauthorized access attempts, and insufficient balance scenarios.
|
@DevMuhdishaq 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! 🚀 |
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.
Closes #99
This commit introduces a treasury system to the Payment Escrow contract for more robust and auditable fee management.
Previously, fees were transferred to the recipient immediately upon escrow completion. This change modifies the logic to accumulate all collected fees into a central treasury balance within the contract.
Closes #100
Key changes:
release,claim, andresolve_disputefunctions now add the fee amount to a new treasury storage item instead of transferring it directly.withdraw_treasuryfunction has been added, callable only by the contract admin, to transfer accumulated fees to a specified address.Closes CT-22 — Add treasury withdrawal support with admin guardrails #101
InsufficientBalanceerror if it does.treasury_wevent is emitted upon successful withdrawal to provide an on-chain audit trail of all treasury movements.treasury.rs) with tests covering successful withdrawals, unauthorized access attempts, and insufficient balance scenarios.Closes CT-24 — Add support for multiple payment token types in the future #103