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

Shared Signer Mapping #429

Merged
merged 1 commit into from
Jun 10, 2024
Merged

Shared Signer Mapping #429

merged 1 commit into from
Jun 10, 2024

Conversation

nlordell
Copy link
Collaborator

@nlordell nlordell commented Jun 3, 2024

This PR changes the behaviour of the shared signer to store its configuration as if it were behind a mapping where the key is the shared signer address. This allows multiple shared signer instances to be configured for a single account (in case you ever need to deploy a 2/2 Safe owned by passkeys with 4337).

I created an "accessor" contract to prove that the storage location is indeed the equivalent to a mapping(address self => Signer).

@nlordell nlordell requested a review from a team as a code owner June 3, 2024 08:00
@nlordell nlordell requested review from akshay-ap, mmv08 and remedcu and removed request for a team June 3, 2024 08:00
@nlordell
Copy link
Collaborator Author

nlordell commented Jun 3, 2024

Do not merge until the Certora audit is complete.

@coveralls
Copy link

coveralls commented Jun 3, 2024

Pull Request Test Coverage Report for Build 9380824990

Details

  • 7 of 7 (100.0%) changed or added relevant lines in 1 file are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 100.0%

Totals Coverage Status
Change from base Build 9380559112: 0.0%
Covered Lines: 149
Relevant Lines: 149

💛 - Coveralls

This PR changes the behaviour of the shared signer to store its
configuration as if it were behind a mapping where the key is the shared
signer address. This allows multiple shared signer instances to be
configured for a single account (in case you ever need to deploy a 2/2
Safe owned by passkeys with 4337).

I created an "accessor" contract to prove that the storage location is
indeed the equivalent to a `mapping(address self => Signer)`.
@nlordell nlordell force-pushed the feature/multi-shared-signer branch from 1c4ef14 to d01c20c Compare June 5, 2024 08:31
nlordell added a commit that referenced this pull request Jun 5, 2024
Fixes #372

This PR adds a new E2E test that demonstrates the use of a Safe being
deployed over 4337 with multiple passkey owners. This means that we can
have arbitrary ownership structures with passkeys and 4337 🎉.

There is an important caveat however, the tracing mechanism used by the
bundler is timing out when verifying multiple passkey signatures, so
this E2E test is only half complete. At least we verify that the
signature verification logic would work, and eventually when precompiles
become part of Geth, we will be able to switch the E2E test to use that
instead which should greatly speed up tracing.

I still think it is worth merging this PR as is, as it also checks that
multiple shared signer instances can be used in parallel, a new feature
added in #429.
@nlordell nlordell added the blocked Issue or PR that is blocked by an external dependency label Jun 5, 2024
@nlordell nlordell merged commit e3e2f14 into main Jun 10, 2024
14 checks passed
@nlordell nlordell deleted the feature/multi-shared-signer branch June 10, 2024 07:56
@github-actions github-actions bot locked and limited conversation to collaborators Jun 10, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
blocked Issue or PR that is blocked by an external dependency
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants