Skip to content

fix(standards): reject delay-only multisig procedure policies - #3781

Merged
mmagician merged 5 commits into
nextfrom
fix-reject-delay-only-policy
Sep 3, 2026
Merged

fix(standards): reject delay-only multisig procedure policies#3781
mmagician merged 5 commits into
nextfrom
fix-reject-delay-only-policy

Conversation

@onurinanc

Copy link
Copy Markdown
Collaborator

Summary

  • Require a non-zero immediate threshold alongside any delayed threshold in set_procedure_policy.
  • Remove ProcedurePolicyExecutionMode::DelayOnly and ProcedurePolicy::with_delay_threshold so a delay-only policy cannot be included into an account's initial storage.
  • Expose AuthMultisigSmart::set_procedure_policy_root(), mirroring AuthMultisig::set_procedure_threshold_root().
  • Add a regression test setting a delay-only policy on set_procedure_policy itself.

Closes #3780.

@partylikeits1983 partylikeits1983 left a comment

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.

LGTM.

non blocking: Question, when are we planning to add delayed / timelocked execution path for the smart multisig?

@onurinanc

Copy link
Copy Markdown
Collaborator Author

@PhilippGackstatter I have a PR for the DelayedExecution here: #3044. I'm planning to update the PR with the latest changes next week, then it will be ready for review again. This week's plan is to make the audit fixes mostly.

@zeapoz zeapoz left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good to me!

Comment on lines +108 to +109
#! - delayed_threshold is non-zero while immediate_threshold is zero.
#! - note_restrictions is non-zero while immediate_threshold is zero.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Suggested change
#! - delayed_threshold is non-zero while immediate_threshold is zero.
#! - note_restrictions is non-zero while immediate_threshold is zero.
#! - delayed_threshold or note_restrictions is non-zero while immediate_threshold is zero.

nit: We could merge these to reduce redundancy

@mmagician mmagician left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM thanks! ✅

@mmagician
mmagician enabled auto-merge September 3, 2026 12:34
@mmagician
mmagician added this pull request to the merge queue Sep 3, 2026
Merged via the queue into next with commit 0343eb0 Sep 3, 2026
19 checks passed
@mmagician
mmagician deleted the fix-reject-delay-only-policy branch September 3, 2026 12:46
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.

Delay-Only Procedure Policies Can Permanently Brick multisig_smart Procedures

4 participants