feat: support beacon deposit wallets - #22
Merged
Merged
Conversation
suhailkakar
approved these changes
May 28, 2026
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 213cd2a. Configure here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Verification
Notes
Linear: PRO-318
Note
Medium Risk
Incorrect CREATE2 or RPC-based selection could point users at the wrong wallet address; mitigated by preserving deployed UUPS addresses and broad test coverage for derivation and client branches.
Overview
Adds beacon-based ERC-1967 CREATE2 deposit wallet derivation and makes
RelayClient.get_expected_deposit_wallet()choose the address at runtime instead of always using UUPS.get_expected_deposit_walletnow derives the UUPS address, then RPC-probes the configured factory (eth_callwith a beacon selector). If there is no beacon (zero address or revert), it returns UUPS. If a beacon exists but the UUPS wallet is already deployed (eth_getCode), it still returns UUPS for existing users; otherwise it returns the beacon CREATE2 address. Shareddeposit_wallet_argsandderive_uups_deposit_walletreplace the old monolithic derive path;derive_deposit_walletremains as a deprecated UUPS-only wrapper pointing callers to the client method.The client gains
_rpc_callwith chain default RPC URLs (137, 80002) whenrpc_urlis unset, plus helpers for revert detection and empty bytecode. Package version moves from0.0.2rc1to0.0.2. Tests cover beacon/UUPS vectors and the new selection branches.Reviewed by Cursor Bugbot for commit 6b1b5f1. Bugbot is set up for automated code reviews on this repo. Configure here.