Skip to content

fix(standards): use the signed block for multisig fee-note serials - #3839

Merged
partylikeits1983 merged 5 commits into
nextfrom
ajl-fix-multisig-fee-bound-block
Sep 10, 2026
Merged

fix(standards): use the signed block for multisig fee-note serials#3839
partylikeits1983 merged 5 commits into
nextfrom
ajl-fix-multisig-fee-bound-block

Conversation

@partylikeits1983

@partylikeits1983 partylikeits1983 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

This PR lets multisig approvals remain valid when a transaction executes against a newer block. Previously, changing the execution block changed the fee note’s serial number and invalidated signatures, even when the fee and transaction effects stayed the same.

The fee note’s serial now uses the signed proposal block. The shared fee helpers accept that block explicitly. Signature reuse still requires an unchanged nonce, fee, and signed effects, and an unexpired approval.

Once integrated into Guardian and the client, this will allow multisig transactions to execute using current account state instead of requiring historical account state throughout signature collection.

Caveat: Clients still need the proposal block’s commitment and a proof of its inclusion in the chain. cc @igamigo

Fixes #3836.

@partylikeits1983
partylikeits1983 marked this pull request as ready for review September 9, 2026 14:58
@partylikeits1983
partylikeits1983 requested review from bobbinth, igamigo and mmagician and removed request for bobbinth September 9, 2026 14:58
@partylikeits1983 partylikeits1983 added fees Related to fees. pr-from-maintainers PRs that come from internal contributors or integration partners. They should be given priority labels Sep 9, 2026

@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.

Overall the approach LGTM, though docs and tests can be cut down and cleared up a bit ✅

Comment thread crates/miden-standards/asm/standards/fee/mod.masm Outdated
Comment thread crates/miden-standards/asm/standards/fee/mod.masm Outdated
Comment thread crates/miden-standards/asm/standards/fee/mod.masm
Comment thread crates/miden-testing/tests/auth/fee_payment/multisig.rs Outdated
Comment thread crates/miden-testing/tests/auth/fee_payment/multisig.rs Outdated
Comment thread crates/miden-testing/tests/auth/fee_payment/multisig.rs Outdated
Comment thread crates/miden-testing/tests/auth/fee_payment/multisig.rs Outdated

@bobbinth bobbinth 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.

I mostly reviewed the non-test code - but looks good! Thank you!

Comment thread crates/miden-standards/asm/standards/fee/mod.masm

@igamigo igamigo 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! I don't fully understand what the idea behind making the block number be part of the serial number is (I think I recall glossing over some comment in one of the fee PRs), but while that is a thing, these changes look correct.

@partylikeits1983
partylikeits1983 added this pull request to the merge queue Sep 10, 2026
Merged via the queue into next with commit 40a10c1 Sep 10, 2026
20 checks passed
@partylikeits1983
partylikeits1983 deleted the ajl-fix-multisig-fee-bound-block branch September 10, 2026 09:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fees Related to fees. pr-from-maintainers PRs that come from internal contributors or integration partners. They should be given priority

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Multisig signatures fail at newer execution blocks because fee-note serial numbers bind the reference block

4 participants