Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
40bbb1d
add delayed execution logic
onurinanc Jun 4, 2026
1b10a8c
fix comments
onurinanc Jun 4, 2026
70bf840
add PR to changelog
onurinanc Jun 4, 2026
d491005
Merge branch 'next' into onur-multisig-smart-delayed-execution
onurinanc Jun 4, 2026
d1857a2
fix missing comments
onurinanc Jun 4, 2026
7e55100
Merge remote-tracking branch 'origin/onur-multisig-smart-delayed-exec…
onurinanc Jun 4, 2026
136bea3
add tests
onurinanc Jun 4, 2026
d4bb726
add more tests
onurinanc Jun 4, 2026
216f8f4
remove optional delayed execution
onurinanc Jun 4, 2026
5c3ee65
merge next
onurinanc Jun 9, 2026
4210460
nits
onurinanc Jun 9, 2026
30787c3
remove apply_propose_expiration_delta
onurinanc Jun 9, 2026
58a265e
update comments
onurinanc Jun 9, 2026
eef73f2
Merge branch 'next' into onur-multisig-smart-delayed-execution
onurinanc Jun 9, 2026
a99bb0b
skip tx-summary reconstruction in AuthRequest when a signature is pre…
onurinanc Jun 26, 2026
7bb3658
refactor delayed execution proposals logic
onurinanc Jun 26, 2026
3bce0a4
fix comments
onurinanc Jun 26, 2026
60dba7d
fix comments
onurinanc Jun 26, 2026
dd44e96
merge next
onurinanc Jun 26, 2026
a611cc7
Merge remote-tracking branch 'origin/onur-multisig-smart-delayed-exec…
onurinanc Jun 26, 2026
79ce84f
add timestamp assertions
onurinanc Jun 26, 2026
1739f74
merge next
onurinanc Jun 29, 2026
7df203c
Merge remote-tracking branch 'origin/next' into onur-multisig-smart-d…
onurinanc Jun 29, 2026
eefca72
use is_tx_proposed instead of compute_requires_delay
onurinanc Jul 2, 2026
4473cfc
apply suggestions
onurinanc Jul 2, 2026
9d13778
Merge remote-tracking branch 'origin/next' into onur-multisig-smart-d…
onurinanc Jul 2, 2026
ac19c45
add @account_procedure
onurinanc Jul 2, 2026
602181c
clippy
onurinanc Jul 2, 2026
c176063
merge next
onurinanc Jul 3, 2026
c063086
apply suggestions
onurinanc Jul 3, 2026
efb0765
Merge branch 'next' into onur-multisig-smart-delayed-execution
onurinanc Jul 3, 2026
6923e98
resolve conflicts
onurinanc Jul 8, 2026
690ad7f
Merge remote-tracking branch 'origin/onur-multisig-smart-delayed-exec…
onurinanc Jul 8, 2026
1492e5e
Merge branch 'next' into onur-multisig-smart-delayed-execution
bobbinth Jul 11, 2026
5cc248f
chore: fix build
bobbinth Jul 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@
- Added trace row counts to `bench-tx.json` ([#2794](https://github.com/0xMiden/protocol/pull/2794)).
- [BREAKING] Renamed `set_attachment` to `add_attachment`, `set_word_attachment` to `add_word_attachment`, and `set_array_attachment` to `add_array_attachment` in `miden::protocol::output_note` ([#2795](https://github.com/0xMiden/protocol/pull/2795), [#2849](https://github.com/0xMiden/protocol/pull/2849)).
- Added foundations for `AuthMultisigSmart` ([#2806](https://github.com/0xMiden/protocol/pull/2806)).
- Extended `AuthMultisigSmart` with a `DelayedExecutionPolicy` and a `delayed_execution` module that exposes a timelock-controlled propose/cancel/execute flow, surfaced through `update_delayed_execution_policy`, `propose_transaction`, `cancel_transaction_proposal`, `cancel_and_propose_new_transaction`, and `execute_proposed_transaction` ([#3044](https://github.com/0xMiden/protocol/pull/3044)).
- Added `tx::get_tx_script_root` kernel procedure returning the root of the executed transaction script (empty word if no script was executed) ([#2816](https://github.com/0xMiden/protocol/pull/2816)).
- Added `AuthNetworkAccount` auth component that rejects transactions which execute a tx script or consume input notes outside of a fixed allowlist of note script roots ([#2817](https://github.com/0xMiden/protocol/pull/2817)).
- Added basic blocklist transfer policy with owner-managed admin (`block_account`/`unblock_account`) and runtime policy switching via the protocol-reserved asset callback slots ([#2820])(https://github.com/0xMiden/protocol/pull/2820).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,11 @@ pub use {get_tx_script_root} from miden::tx_kernel_core::memory
#!
#! Where:
#! - block_height_delta is the desired expiration time delta (1 to 0xFFFF).
#!
#! Panics if:
#! - block_height_delta is not a valid `u32` (`ERR_TX_INVALID_EXPIRATION_DELTA`).
#! - block_height_delta is zero (`ERR_TX_INVALID_EXPIRATION_DELTA`).
#! - block_height_delta is greater than 0xFFFF (`ERR_TX_INVALID_EXPIRATION_DELTA`).
Comment on lines +69 to +72

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.

Nit: We usually don't mention the exact error variants.

pub proc update_expiration_block_delta
# Ensure block_height_delta is between 1 and 0xFFFF (inclusive)
dup neq.0 assert.err=ERR_TX_INVALID_EXPIRATION_DELTA
Expand Down
5 changes: 5 additions & 0 deletions crates/miden-protocol/asm/protocol/src/tx.masm
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,11 @@ end
#! Where:
#! - block_height_delta is the desired expiration time delta (1 to 0xFFFF).
#!
#! Panics if:
#! - block_height_delta is not a valid `u32`.
#! - block_height_delta is zero.
#! - block_height_delta is greater than 0xFFFF.
#!
#! Annotation hint: is not used anywhere
pub proc update_expiration_block_delta(block_height_delta: u16)
push.TX_UPDATE_EXPIRATION_BLOCK_DELTA_OFFSET
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ pub use {get_signer_at} from miden::standards::auth::multisig
pub use {is_signer} from miden::standards::auth::multisig
pub use {set_procedure_policy} from miden::standards::auth::multisig_smart
pub use {update_signers_and_threshold} from miden::standards::auth::multisig_smart
pub use {update_delayed_execution_policy} from miden::standards::auth::multisig_smart::delayed_execution
pub use {propose_transaction} from miden::standards::auth::multisig_smart::delayed_execution
pub use {cancel_transaction_proposal} from miden::standards::auth::multisig_smart::delayed_execution

#! Authenticate a transaction using multisig smart-policy rules.
#!
Expand Down
23 changes: 23 additions & 0 deletions crates/miden-standards/asm/standards/auth/multisig.masm
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,29 @@ proc get_current_threshold_and_num_approvers
# => [default_threshold, num_approvers]
end

#! Verifies the configured approver signatures over `MSG` and returns how many of them are valid.
#!
#! Thin wrapper over [`signature::verify_signatures`] that supplies this component's approver
#! public-key and scheme-id storage slots, so callers don't need to know the slot layout. It does
#! not enforce any threshold, the caller compares the returned count against the required threshold.
#!
#! Inputs: [num_of_approvers, MSG]
#! Outputs: [num_verified_signatures, MSG]
#!
#! Invocation: exec
pub proc verify_signatures

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.

We could replace lines 847-854 with a call to this procedure - right?

# => [num_of_approvers, MSG]

push.APPROVER_PUBLIC_KEYS_SLOT[0..2]
# => [pub_key_slot_suffix, pub_key_slot_prefix, num_of_approvers, MSG]

push.APPROVER_SCHEME_ID_SLOT[0..2]
# => [scheme_id_slot_suffix, scheme_id_slot_prefix, pub_key_slot_suffix, pub_key_slot_prefix, num_of_approvers, MSG]

exec.::miden::standards::auth::signature::verify_signatures
# => [num_verified_signatures, MSG]
end

#! Returns the current threshold and num_approvers from `THRESHOLD_CONFIG_SLOT`.
#!
#! Inputs: [pad(16)]
Expand Down
Loading
Loading