-
Notifications
You must be signed in to change notification settings - Fork 56
feat: add ERC-7484 registry adapter #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
kopy-kat
wants to merge
3
commits into
trustwallet:barz-v2
Choose a base branch
from
zeroknots:feature/update-branch
base: barz-v2
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| // SPDX-License-Identifier: MIT | ||
| pragma solidity ^0.8.20; | ||
|
|
||
| import {IERC7484} from "../../../interfaces/ERC/IERC7484.sol"; | ||
| import {LibMMSAStorage} from "../../../libraries/LibMMSAStorage.sol"; | ||
|
|
||
| /** | ||
| * IERC7484 Registry adapter. | ||
| * this feature is opt-in. The smart account owner can choose to use the registry and which | ||
| * attesters to trust. | ||
| * @author zeroknots.eth | rhinestone.wtf | ||
| */ | ||
| abstract contract RegistryAdapter { | ||
| event ERC7484RegistryConfigured(address registry); | ||
|
|
||
| modifier withRegistry(address module, uint256 moduleType) { | ||
| _checkRegistry(module, moduleType); | ||
| _; | ||
| } | ||
|
|
||
| /** | ||
| * Check on ERC7484 Registry, if suffcient attestations were made | ||
| * This will revert, if not succicient valid attestations are on the registry | ||
| */ | ||
| function _checkRegistry(address module, uint256 moduleType) internal view { | ||
| IERC7484 registry = LibMMSAStorage.mmsaStorage().registry; | ||
| if (address(registry) != address(0)) { | ||
| // this will revert if attestations / threshold are not met | ||
| registry.checkForAccount(address(this), module, moduleType); | ||
| } | ||
| } | ||
|
|
||
| /** | ||
| * Configure ERC7484 Registry for Safe | ||
| */ | ||
| function _configureRegistry( | ||
| IERC7484 registry, | ||
| address[] calldata attesters, | ||
| uint8 threshold | ||
| ) internal { | ||
| // sstore value in any case, as this function may be used to disable the use of registry | ||
| LibMMSAStorage.mmsaStorage().registry = registry; | ||
|
|
||
| // registry is an opt in feature for barz. if set, configure trusted attesters | ||
| if (address(registry) != address(0)) { | ||
| registry.trustAttesters(threshold, attesters); | ||
| } | ||
| emit ERC7484RegistryConfigured(address(registry)); | ||
| } | ||
| } |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,54 @@ | ||
| // SPDX-License-Identifier: MIT | ||
| pragma solidity ^0.8.0; | ||
|
|
||
| interface IERC7484 { | ||
| /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ | ||
| /* Check with Registry internal attesters */ | ||
| /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ | ||
|
|
||
| function check(address module) external view; | ||
|
|
||
| function checkForAccount( | ||
| address smartAccount, | ||
| address module | ||
| ) external view; | ||
|
|
||
| function check(address module, uint256 moduleType) external view; | ||
|
|
||
| function checkForAccount( | ||
| address smartAccount, | ||
| address module, | ||
| uint256 moduleType | ||
| ) external view; | ||
|
|
||
| /** | ||
| * Allows Smart Accounts - the end users of the registry - to appoint | ||
| * one or many attesters as trusted. | ||
| * @dev this function reverts, if address(0), or duplicates are provided in attesters[] | ||
| * | ||
| * @param threshold The minimum number of attestations required for a module | ||
| * to be considered secure. | ||
| * @param attesters The addresses of the attesters to be trusted. | ||
| */ | ||
| function trustAttesters( | ||
| uint8 threshold, | ||
| address[] calldata attesters | ||
| ) external; | ||
|
|
||
| /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ | ||
| /* Check with external attester(s) */ | ||
| /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ | ||
|
|
||
| function check( | ||
| address module, | ||
| address[] calldata attesters, | ||
| uint256 threshold | ||
| ) external view; | ||
|
|
||
| function check( | ||
| address module, | ||
| uint256 moduleType, | ||
| address[] calldata attesters, | ||
| uint256 threshold | ||
| ) external view; | ||
| } |
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
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
0x8035e2F2f3B9CB1E110606266585d661C024ceEe