Bug Description
-
Where: TNT.sol -> revokeToken function
-
Issue: The check if (tokenIssuers[tokenId] != msg.sender) revert NotIssuer(); restricts revocation exclusively to the exact address that minted the token, ignoring the REVOKER_ROLE hierarchy.
-
Fix: Allow any address holding the REVOKER_ROLE to revoke tokens.
-
Why: If the original minter wallet is lost, compromised, or rotated out, the token becomes permanently un-revocable even by administrators.
Steps to Reproduce
N/A
Logs and Screenshots
N/A
Environment Details
N/A
Impact
High - Major feature is broken
Code of Conduct
Bug Description
Where:
TNT.sol->revokeToken functionIssue: The check
if (tokenIssuers[tokenId] != msg.sender) revert NotIssuer();restricts revocation exclusively to the exact address that minted the token, ignoring the REVOKER_ROLE hierarchy.Fix: Allow any address holding the
REVOKER_ROLEto revoke tokens.Why: If the original minter wallet is lost, compromised, or rotated out, the token becomes permanently un-revocable even by administrators.
Steps to Reproduce
N/A
Logs and Screenshots
N/A
Environment Details
N/A
Impact
High - Major feature is broken
Code of Conduct