Skip to content

Add MultiCallSendOnly support to Safe{Wallet} guard#427

Open
duncancmt wants to merge 161 commits intomasterfrom
dcmt/upgrade-timelock-1.4.0-multicall
Open

Add MultiCallSendOnly support to Safe{Wallet} guard#427
duncancmt wants to merge 161 commits intomasterfrom
dcmt/upgrade-timelock-1.4.0-multicall

Conversation

@duncancmt
Copy link
Copy Markdown
Collaborator

In response to #253 (comment)

This reverts commit 307bb0a.
…stead of mapping from the hash to the expiry
…is improves the UX of using the guard

It still requires 2 transactions to be submitted. There's no way around that.
@duncancmt duncancmt force-pushed the dcmt/upgrade-timelock-1.4.0-multicall branch from 73e1447 to 4a50090 Compare April 16, 2026 17:33
@duncancmt duncancmt marked this pull request as ready for review April 17, 2026 08:21
@duncancmt duncancmt requested a review from dekz as a code owner April 17, 2026 08:21
@duncancmt duncancmt changed the base branch from dcmt/upgrade-timelock-1.4.0 to master April 17, 2026 08:22
@immunefi-magnus
Copy link
Copy Markdown

🛡️ Immunefi PR Reviews

We noticed that your project isn't set up for automatic code reviews. If you'd like this PR reviewed by the Immunefi team, you can request it manually using the link below:

🔗 Send this PR in for review

Once submitted, we'll take care of assigning a reviewer and follow up here.


uint256 threshold = _safe.getThreshold();
if (threshold < _MINIMUM_THRESHOLD) {
revert ThresholdTooLow(threshold);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

For a 3 of 5 safe, going through the resignation flow:

_getThresholdAfterResign returns 3 -> removeOwner executes -> 3 of 4 -> this check hits (4 - 3 < 2) -> ThresholdTooHigh

Similar for 4 of 6, etc.

Is this intentional? I assume we want to keep at least some buffer of signers in case keys are lost or inaccessible, but this might block removeOwners needed for cancel at common multisig configurations?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Let's consider the reverse? What if that scenario were to occur, that the safe had an owner removed and became 3-of-4? How does this affect the recovery game in both the "leaked key" and the "malicious signer" cases?

Given that EIP-8141 is CFI for Hegota and it depends on 7997, compatibility is desirable.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

audit changes have been sent for audit and professionally reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants