Skip to content
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

Multi Owned ECDSA Validation Module #151

Merged
merged 6 commits into from
Oct 19, 2023

Conversation

filmakarov
Copy link
Collaborator

@filmakarov filmakarov commented Oct 17, 2023

Summary

Allows having several owners, each one of them can independently sign a userOp.

Related Issue

Change Type

  • New Feature

Checklist

  • My code follows this project's style guidelines
  • I've reviewed my own code
  • I've added comments for any hard-to-understand areas
  • I've updated the documentation if necessary
  • My changes generate no new warnings
  • I've added tests that prove my fix is effective or my feature works
  • All unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Additional Information

  • Requested by Customer.
  • They agreed to use it unaudited.

For the sake of saving time, only the core functionality is tested and only via Bundler (to ensure the new storage structure complies with 4337 restrictions).

❓ Need to decide do we want to audit it and release it publicly.

Comment on lines +163 to +164
_smartAccountOwners[owner][smartAccount] = false;
_smartAccountOwners[newOwner][smartAccount] = true;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could be swapped if the first value is always true and the second is always false:
similarly to this

uint256 a = 1;
uint256 b = 2;

(a, b) = (b, a);

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interesting :) is it cheaper?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if not, I would suggest not doing this as in this exact case it makes things less readable

(_smartAccountOwners[owner][smartAccount], _smartAccountOwners[newOwner][smartAccount]) = (_smartAccountOwners[newOwner][smartAccount], _smartAccountOwners[owner][smartAccount]);

looks bulky

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes it's cheaper but agree that it makes it very difficult to read 😅 let's discuss when we will focus on optimization

Copy link
Contributor

@Aboudjem Aboudjem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚀🚀🚀

@filmakarov filmakarov merged commit 0337ca6 into develop Oct 19, 2023
@filmakarov filmakarov deleted the features/MultiOwner-ECDSA-Module branch October 19, 2023 08:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants