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

feat: support permit2 on OptimismSuperchainERC20 + upgrade solady's erc20 implementation #12476

Conversation

0xDiscotech
Copy link
Contributor

@0xDiscotech 0xDiscotech commented Oct 15, 2024

Description

  • Add a new Solady version, as a separate dependency from the current Solady package being used
  • Inherit from the new Solady's version ERC20 on SuperchainERC20
  • Support Permit2 on OptimismSuperchainERC20

Tests

Added 3 new tests over OptimismSuperchainERC20 contract to ensure the Permit2 implementation works well.

Metadata

CLOSES #11899

Additional context

  • The Permit2 support modifications over SuperchainWETH will be done on a different PR.
  • We upgraded the Solady version due to the Permit2 support on the ERC20 implementation. The modifications can be found here: ✨ Permit2 ERC20 Vectorized/solady#1093

agusduha and others added 30 commits September 25, 2024 15:20
* feat: add superchain erc20 bridge

* fix: interfaces and versions
* refactor: use oz upgradeable erc20 as dependency

* chore: update interfaces

* fix: tests based on changes

* refactor: remove op as dependency

* feat: add check for supererc20 bridge on modifier

* chore: update tests and interfaces

* chore: update stack vars name on test

* chore: remove empty gitmodules file

* chore: update superchain weth errors
* test: add superchain erc20 bridge tests

* test: add optimism superchain erc20 beacon tests

* test: remove unnecessary test

* test: tests fixes

* test: tests fixes
* chore: update missing bridge on natspec

* fix: natspecs

---------

Co-authored-by: agusduha <[email protected]>
* refactor: rename mint and burn functions on superchain erc20

* chore: rename optimism superchain erc20 to superchain erc20

* feat: create optimism superchain erc20 contract

* chore: update natspec and errors

* fix: superchain erc20 tests

* refactor: make superchain erc20 abstract

* refactor: move storage and erc20 metadata functions to implementation

* chore: update interfaces

* chore: update superchain erc20 events

* fix: tests

* fix: natspecs

* fix: add semmver lock and snapshots

* fix: remove unused imports

* fix: natspecs

---------

Co-authored-by: 0xDiscotech <[email protected]>
* fix: semver natspec check failure

* fix: ignore mock contracts in semver natspec script

* fix: error message
* feat: add crosschain erc20 interface

* fix: refactor interfaces
Co-authored-by: 0xng <[email protected]>
Co-authored-by: 0xParticle <[email protected]>
Co-authored-by: gotzenx <[email protected]>
* fix: stop inheriting superchain interfaces

* fix: move events and erros into the implementation

* fix: make superchainERC20 inherits from crosschainERC20
* fix: refactor common errors

* fix: remove unused version
@0xDiscotech 0xDiscotech changed the title feat: support permit2 on optimism superchain erc20 and upgrade solady's erc20 implementation (#97) feat: support permit2 on optimism superchain erc20 and upgrade solady's erc20 implementation Oct 15, 2024
@gotzenx gotzenx requested review from mds1 and maurelian October 16, 2024 19:14
@maurelian maurelian self-assigned this Oct 17, 2024
Copy link
Contributor

@maurelian maurelian left a comment

Choose a reason for hiding this comment

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

I have no further comments, and will push to run CI again, but @mds1's question about the security of the Solady impl are a blocker here.

@gotzenx
Copy link
Contributor

gotzenx commented Oct 22, 2024

It has been decided that for now we will go with the unaudited Solady version but this will have to be revisited between devnet and tesnet.

Issue: #12573

@gotzenx gotzenx changed the title feat: support permit2 on optimism superchain erc20 and upgrade solady's erc20 implementation feat: support permit2 on OptimismSuperchainERC20 + upgrade solady's erc20 implementation Oct 22, 2024
@maurelian maurelian added this pull request to the merge queue Oct 22, 2024
Merged via the queue into ethereum-optimism:develop with commit cd640b0 Oct 22, 2024
47 checks passed
samlaf pushed a commit to samlaf/optimism that referenced this pull request Nov 10, 2024
…rc20 implementation (ethereum-optimism#12476)

* feat: add superchain erc20 bridge (ethereum-optimism#61)

* feat: add superchain erc20 bridge

* fix: interfaces and versions

* refactor: optimism superchain erc20 redesign (ethereum-optimism#62)

* refactor: use oz upgradeable erc20 as dependency

* chore: update interfaces

* fix: tests based on changes

* refactor: remove op as dependency

* feat: add check for supererc20 bridge on modifier

* chore: update tests and interfaces

* chore: update stack vars name on test

* chore: remove empty gitmodules file

* chore: update superchain weth errors

* test: add superchain erc20 bridge tests (ethereum-optimism#65)

* test: add superchain erc20 bridge tests

* test: add optimism superchain erc20 beacon tests

* test: remove unnecessary test

* test: tests fixes

* test: tests fixes

* chore: update missing bridge on natspec (ethereum-optimism#69)

* chore: update missing bridge on natspec

* fix: natspecs

---------

Co-authored-by: agusduha <[email protected]>

* fix: remove superchain erc20 base (ethereum-optimism#70)

* refactor: update isuperchainweth (ethereum-optimism#71)


---------

Co-authored-by: agusduha <[email protected]>

* feat: rename mint/burn and add SuperchainERC20 (ethereum-optimism#74)

* refactor: rename mint and burn functions on superchain erc20

* chore: rename optimism superchain erc20 to superchain erc20

* feat: create optimism superchain erc20 contract

* chore: update natspec and errors

* fix: superchain erc20 tests

* refactor: make superchain erc20 abstract

* refactor: move storage and erc20 metadata functions to implementation

* chore: update interfaces

* chore: update superchain erc20 events

* fix: tests

* fix: natspecs

* fix: add semmver lock and snapshots

* fix: remove unused imports

* fix: natspecs

---------

Co-authored-by: 0xDiscotech <[email protected]>

* fix: refactor zero check (ethereum-optimism#76)

* fix: pre pr

* chore: add new solady version and import it for erc20

* fix: undo forge std changes

* chore: re run pre pr script

* fix: semver natspec check failure (ethereum-optimism#79)

* fix: semver natspec check failure

* fix: ignore mock contracts in semver natspec script

* fix: error message

* feat: add crosschain erc20 interface (ethereum-optimism#80)

* feat: add crosschain erc20 interface

* fix: refactor interfaces

* fix: superchain bridge natspec (ethereum-optimism#83)

* fix: superchain weth natspec (ethereum-optimism#84)

Co-authored-by: 0xng <[email protected]>
Co-authored-by: 0xParticle <[email protected]>
Co-authored-by: gotzenx <[email protected]>

* fix: stop inheriting superchain interfaces (ethereum-optimism#85)

* fix: stop inheriting superchain interfaces

* fix: move events and erros into the implementation

* fix: make superchainERC20 inherits from crosschainERC20

* fix: superchain bridge rename (ethereum-optimism#86)

* fix: fee vault compiler error (ethereum-optimism#87)

* fix: remove unused imports

* chore: run pre-pr and update vendor interface

* fix: refactor common errors (ethereum-optimism#90)

* fix: refactor common errors

* fix: remove unused version

* feat: add permit2 on optimism superchain erc20

* chore: run pre-pr script

* fix: reuse unauthorized error (ethereum-optimism#92)

* fix: superchain erc20 factory conflicts

* fix: rename crosschain functions (ethereum-optimism#94)

* chore: run pre-pr

* chore: run pre-pr

* chore: run pre-pr

* feat: add new tests on optimism superchain erc20

* fix: vars and params naming on newly added tests

* fix: var name

* feat: support permit2 on optimism superchain erc20 and upgrade solady's erc20 implementation (ethereum-optimism#97)


---
Co-Authored-by: AgusDuha <[email protected]>

* chore: use ierc20 alias for ierc20 solady interface (ethereum-optimism#108)

---------

Co-authored-by: AgusDuha <[email protected]>
Co-authored-by: agusduha <[email protected]>
Co-authored-by: 0xng <[email protected]>
Co-authored-by: 0xParticle <[email protected]>
Co-authored-by: gotzenx <[email protected]>
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.

SuperchainERC20: Support permit2
5 participants