Description
The RewardPool can add approved spender contracts, but it also needs an admin-controlled revoke path so compromised or deprecated spenders can be removed immediately.
User Story
As a Protocol Admin,
I want to revoke a spender's authorization,
so that outdated or compromised contracts can no longer distribute rewards.
Requirements and Context
- Files:
contracts/reward-pool/src/lib.rs, contracts/reward-pool/src/types.rs, contracts/reward-pool/src/test.rs
- Add
remove_approved_spender(env: Env, admin: Address, spender: Address)
- Require admin auth and stored-admin verification
- Ensure
distribute_reward fails immediately for revoked spenders
Suggested Implementation
// IN FUNCTION: remove_approved_spender(env: Env, admin: Address, spender: Address)
// 1. admin.require_auth();
// 2. verify admin matches stored admin;
// 3. env.storage().persistent().set(&DataKey::Spender(spender), &false);
// 4. emit spender-revoked event.
Acceptance Criteria
Submission Guidelines
- Branch:
feat/revoke-approved-spender
- Depends on:
RewardPool add_approved_spender function
- PR:
feat(reward-pool): add approved spender revocation
Description
The RewardPool can add approved spender contracts, but it also needs an admin-controlled revoke path so compromised or deprecated spenders can be removed immediately.
User Story
As a Protocol Admin,
I want to revoke a spender's authorization,
so that outdated or compromised contracts can no longer distribute rewards.
Requirements and Context
contracts/reward-pool/src/lib.rs,contracts/reward-pool/src/types.rs,contracts/reward-pool/src/test.rsremove_approved_spender(env: Env, admin: Address, spender: Address)distribute_rewardfails immediately for revoked spendersSuggested Implementation
Acceptance Criteria
distribute_rewardsuccessfully.Submission Guidelines
feat/revoke-approved-spenderRewardPool add_approved_spender functionfeat(reward-pool): add approved spender revocation