Skip to content

Commit db6959d

Browse files
committed
feat(standards): pay the transaction fee in guarded and smart multisig auth
Port of #3786 to next. Both components run estimate_fee, the sponsorship payment, resolve_payment_info, assert_fee_bound (2/1, native fee asset) and pay_estimated_fee between multisig::resolve_auth_args and the summary, and pass the number of notes the payment created to guardian::verify_signature and multisig_smart::auth_tx, whose note restrictions exclude them. tx_policy::assert_no_output_notes reads the verified count itself. Adaptations to next: the conversion info comes from resolve_auth_args (MultisigAuthArgs) rather than load_conversion_info, so the auth args no longer double as the summary salt; multisig_smart::auth_tx takes (num_own_output_notes, block_number, SALT); the fee asset is read via tx::get_fee_asset_id; the sponsorship wrapper dropped in the fee-split port is spelled out at the call sites; pay_fee reads the fee asset once via an estimate_fee_for_asset helper. Tests build MultisigAuthArgs, share the multisig fixture and signing helpers, and drop the salt-binding assertions. Cost tables and bench-tx.json regenerated. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KkQzFtRjyDwQ7iVtRbsHsn
1 parent 7b089db commit db6959d

23 files changed

Lines changed: 1860 additions & 453 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Features
66

7+
- [BREAKING] The `AuthGuardedMultisig` and `AuthMultisigSmart` components now pay the transaction fee, bounded via `fee::assert_fee_bound` to the native fee asset at at most twice the computed fee; `tx_policy::assert_no_output_notes` takes the number of output notes the caller created itself ([#3786](https://github.com/0xMiden/protocol/pull/3786)).
78
- Added `active_note::get_storage_info` and `active_note::get_bounded_storage`, and switched the standard and agglayer note scripts with a bounded storage layout over to the latter ([#3563](https://github.com/0xMiden/protocol/pull/3563)).
89
- [BREAKING] AggLayer bridge and faucet accounts now map note repricing to an initial `FEE_MNGR` role instead of the built-in `ADMIN` role ([#3571](https://github.com/0xMiden/protocol/issues/3571)).
910
- [BREAKING] AggLayer bridge accounts now map emergency pause to an initial `PAUSER` role, while unpause remains restricted to `ADMIN` ([#3572](https://github.com/0xMiden/protocol/issues/3572)).

0 commit comments

Comments
 (0)