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

Check for method ID clashes across versions #735

Open
ernestognw opened this issue Feb 1, 2023 · 2 comments
Open

Check for method ID clashes across versions #735

ernestognw opened this issue Feb 1, 2023 · 2 comments

Comments

@ernestognw
Copy link
Member

ernestognw commented Feb 1, 2023

Description

While researching patterns of access management, the solutions team identified a pattern of a contract that can dynamically create roles for functions in contracts, this means:

  • There is a role manager contract
  • contract Something is AccessManaged, ... can be also upgraded
  • A subsequent upgrade can include a method that clashes with any of the previous EVM interfaces
  • This would mean that a user with a role to access namely a function like foo() may clash with an upgrade to another function bar()
  • This case will allow a user intended to use only foo() to also use bar()
@ericglau ericglau changed the title Method clashing ID across versions Check for method ID clashes across versions Feb 2, 2023
@ericglau
Copy link
Member

ericglau commented Feb 2, 2023

The goal of this issue will be to check for these kinds of function selector clashes between versions.

@frangio
Copy link
Contributor

frangio commented Feb 2, 2023

This check is different from the current checks because it makes an assertion about the history of a proxy. All current checks are purely assertions about a single contract's source code.

This is a significant difference that has design implications and efficiency implications.

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

No branches or pull requests

3 participants