OpenZeppelin / OpenZeppelin/openzeppelin-upgrades

Check for method ID clashes across versions

Open
#735 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
658
Forks
286
PR merge metrics
No merged PRs in 30d

Description

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()

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or entry points are named in the issue. Start by tracing the upgrade-validation path for method selectors across contract versions, then create a regression case based on the AccessManaged foo()/bar() scenario. Done means the tool reliably identifies the selector clash and clearly reports the affected upgrade.

Written by the indexing model from the issue text.

Assessment

Tech stack
solidity, typescript
Domain
blockchain, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.