Summary
The protocol fee recipient address is set once at initialization and currently has no way to be updated. In practice teams rotate treasury addresses for security, move to multisig wallets, or migrate to a new setup. Without an update path, the only option is to abandon and redeploy the contract. An admin-only function to rotate the fee recipient solves this safely with a clear audit trail via event emission.
Scope
- Add
update_protocol_fee_recipient(new_recipient: Address) function
- Only callable by the current protocol admin address
new_recipient must not be the zero address
- Updates the stored fee recipient in protocol config
- Emits a
ProtocolFeeRecipientUpdated { old_recipient, new_recipient } event
- Add corresponding update for creator fee recipient:
update_creator_fee_recipient(creator_id, new_recipient: Address)
- Only callable by the current fee recipient for that creator (self-rotation)
- Emits
CreatorFeeRecipientUpdated { creator_id, old_recipient, new_recipient }
Acceptance Criteria
Coordinate on Telegram
Summary
The protocol fee recipient address is set once at initialization and currently has no way to be updated. In practice teams rotate treasury addresses for security, move to multisig wallets, or migrate to a new setup. Without an update path, the only option is to abandon and redeploy the contract. An admin-only function to rotate the fee recipient solves this safely with a clear audit trail via event emission.
Scope
update_protocol_fee_recipient(new_recipient: Address)functionnew_recipientmust not be the zero addressProtocolFeeRecipientUpdated { old_recipient, new_recipient }eventupdate_creator_fee_recipient(creator_id, new_recipient: Address)CreatorFeeRecipientUpdated { creator_id, old_recipient, new_recipient }Acceptance Criteria
update_protocol_fee_recipientis rejected withUnauthorizedProtocolFeeRecipientUpdatedevent emitted with correct old and new addressesupdate_creator_fee_recipientis rejectedCoordinate on Telegram