Open
Conversation
- Add Freezable abstract contract for account freezing - Add IFreezable interface - Add FreezableToken example in asset-compliance/ - Update README with Asset Compliance documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Free Tier Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: Missing
virtualonunfreezeandunfreezeAccountsfunctions- Added the
virtualkeyword to bothunfreezeandunfreezeAccountsfunctions to match the symmetricfreezeandfreezeAccountsfunctions.
- Added the
Or push these changes by commenting:
@cursor push fa3f00f68d
Preview (fa3f00f68d)
diff --git a/src/Freezable.sol b/src/Freezable.sol
--- a/src/Freezable.sol
+++ b/src/Freezable.sol
@@ -63,12 +63,12 @@
}
/// @inheritdoc IFreezable
- function unfreeze(address account) external onlyRole(FREEZE_MANAGER_ROLE) {
+ function unfreeze(address account) external virtual onlyRole(FREEZE_MANAGER_ROLE) {
_unfreeze(_getFreezableStorageLocation(), account);
}
/// @inheritdoc IFreezable
- function unfreezeAccounts(address[] calldata accounts) external onlyRole(FREEZE_MANAGER_ROLE) {
+ function unfreezeAccounts(address[] calldata accounts) external virtual onlyRole(FREEZE_MANAGER_ROLE) {
FreezableStorageStruct storage $ = _getFreezableStorageLocation();
for (uint256 i; i < accounts.length; ++i) {
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
Freezableabstract contract for account freezingIFreezableinterfaceFreezableTokenexample demonstrating asset compliance patternTest plan
Note
Medium Risk
Introduces new role-gated freezing/unfreezing logic and ERC-7201 storage layout intended for integration into asset contracts; misuse or misconfiguration of roles could block transfers or break upgrade safety.
Overview
Adds Asset Compliance support via a new
Freezableabstract contract +IFreezableinterface, providing role-basedfreeze/unfreeze(single and batch),isFrozen, and internal revert helpers using an ERC-7201 namespaced storage slot.Includes a new
FreezableTokenexample that blocks transfers when sender/recipient is frozen, plus a Foundry test suite covering transfer behavior, access control, and event emission. UpdatesREADME.mdto document the new Asset Compliance offering, interfaces, examples, and docs links.Written by Cursor Bugbot for commit 7a403ba. This will update automatically on new commits. Configure here.