Skip to content

feat(core): native EIP-7702 atomic multicall for native-Push EOAs#260

Merged
mohammeds1992 merged 3 commits into
mainfrom
multicall-7702
Jul 1, 2026
Merged

feat(core): native EIP-7702 atomic multicall for native-Push EOAs#260
mohammeds1992 merged 3 commits into
mainfrom
multicall-7702

Conversation

@mohammeds1992

@mohammeds1992 mohammeds1992 commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

PushBatchExecutor is the delegation target a secp256k1 EOA (EVM-origin or native Push) points its code to via EIP-7702 to execute a Multicall[] batch atomically in one tx — replacing the custom UEA_MULTICALL path for those accounts. SVM accounts cannot sign a 7702 authorization and keep UEA_MULTICALL.

  • self-sponsored execute(Multicall[]) gated on msg.sender == address(this)
  • sponsored execute(Multicall[], nonce, sig) via EIP-712 with replay-safe nonce
  • sequential execution, revert bubbling, ERC-7201 namespaced storage (runs in the EOA's storage under delegation)
  • 8 Foundry tests under real 7702 delegation; deploy script
  • deployed to Push Testnet Donut at 0x0106BF2F9B02f32203A83a3bDaD79fE8818f3796

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

  • My code follows the code style of this project.
  • My change requires changes to the documentation.
  • I have updated the documentation accordingly.
  • This PR does not contain plagiarized content.
  • The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

PushBatchExecutor is the delegation target a secp256k1 EOA (EVM-origin or
native Push) points its code to via EIP-7702 to execute a Multicall[] batch
atomically in one tx — replacing the custom UEA_MULTICALL path for those
accounts. SVM accounts cannot sign a 7702 authorization and keep UEA_MULTICALL.

- self-sponsored execute(Multicall[]) gated on msg.sender == address(this)
- sponsored execute(Multicall[], nonce, sig) via EIP-712 with replay-safe nonce
- sequential execution, revert bubbling, ERC-7201 namespaced storage (runs in
  the EOA's storage under delegation)
- 8 Foundry tests under real 7702 delegation; deploy script
- deployed to Push Testnet Donut at 0x776d8031b9caA053d04325Bc2CAc47E5cb673776
  - switch native Push 7702 batching to ERC-7821 execute(mode, executionData)
  - wire latest Donut executor deployment with payable receive support
  - reject zero-address multicall targets consistently before route selection
  - update vendored executor reference and 7702 batching docs
@mohammeds1992 mohammeds1992 merged commit afbec59 into main Jul 1, 2026
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.

1 participant