Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
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
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,18 @@

* [BREAKING][rust] `StateSyncUpdate` is now immutable once built: its `block_num`, `partial_blockchain_updates`, `note_updates`, `transaction_updates` and `account_updates` fields are private and it no longer implements `Default`. Build one with `StateSyncUpdate::from_parts`, read it through the same-named accessors, and take ownership of the contents with `into_parts` ([#2297](https://github.com/0xMiden/rust-sdk/pull/2297)).
* [BREAKING][param][rust] `PartialBlockchainUpdates::insert` no longer takes the block's MMR authentication nodes; stage them separately with the new `extend_authentication_nodes` ([#2297](https://github.com/0xMiden/rust-sdk/pull/2297)).
* [BREAKING][rust] Transaction fees moved out of the kernel epilogue and into the authentication procedure. On a chain whose `verification_base_fee` is non-zero, signature-based auth components (`AuthSingleSig`, `AuthMultisig`) require the transaction to commit fee conversion info, and the paying account must hold a balance of the fee asset. use the new `TransactionRequestBuilder::fee_conversion_info` to commit it. Chains that charge no fee are unaffected.
* [BREAKING][rename][rust] Protocol renames surfaced through the client's re-exports: `miden_client::assembly::Library` is removed (packages are the only representation now, use `miden_client::vm::Package`).
* [BREAKING][param][rust] Network accounts now require a fee policy: `AuthNetworkAccount::with_allowed_notes` → `AuthNetworkAccount::new(notes, FeePolicyManager)` and `NetworkAccount::builder` takes a `FeePolicyManager`. Every allowlisted note script must have an explicit fee-schedule entry, including a zero one, because a script root missing from the schedule aborts fee estimation rather than defaulting to free. `AuthNetworkAccount` also no longer converts into a single `AccountComponent`: it yields the auth component plus its fee policy components, so it must be passed to `with_components`.
* [BREAKING][rust] Removed the `AuthSingleSigAcl` and `AuthSingleSigAclConfig` re-exports along with the `auth/acl-auth`. Use `AuthSingleSig`, which requires a signature for every call, or `NoAuth` where no authentication is wanted.
* [BREAKING][param][rust] `send_notes` transaction script now reads its payload from the advice provider and requires the payload commitment as its transaction script argument. The client binds that argument automatically, so a `TransactionRequestBuilder::script_arg` set alongside a `SendNotes` template is ignored; it still applies to caller-supplied custom scripts.
* [BREAKING][behavior][rust] Creating a note that carries a `NetworkAccountTarget` attachment now performs a foreign procedure invocation into the target account to price the note, even on a chain that charges no fees. Such transactions must supply the target network account as a foreign account, anchored at a reference block that already commits it.
* [BREAKING][rust] Transaction inputs are now sealed before submission. The client fetches the validator set's shared encryption key on first submission and verifies its validator attestations against the validator set committed in the chain tip before using it. A client must be synced far enough to have a genesis header and a chain-tip header locally before it can submit. `NodeRpcClient::submit_proven_transaction` and `NodeRpcClient::submit_proven_batch` now take `SealedTransactionInputs` instead of `TransactionInputs`.
* [BREAKING][rename][rust] `NoteScreener::can_consume` → `NoteScreener::get_consumability` and `NoteScreener::can_consume_batch` → `NoteScreener::get_batch_consumability`. The new names reflect that both return a `NoteConsumptionStatus` per account rather than a boolean ([#2338](https://github.com/0xMiden/rust-sdk/pull/2338)).
* [BREAKING][behavior][rust] Transaction inputs are now encrypted on submission, so the RPC operator relaying them cannot read them. `Client::submit_proven_transaction` seals the inputs against the validator set's shared transaction encryption key: on first use it fetches the key from the node, verifies a validator attestation for it against the validator set committed in a trusted block header (binding the genesis commitment, so an attestation cannot be replayed from another network), and caches the verified key in the store's settings table, evicting it when the node rejects a submission sealed against a retired key so the next submission re-fetches. Requires a node that unseals submitted inputs; such nodes reject plaintext submissions ([#2341](https://github.com/0xMiden/rust-sdk/pull/2341)).
* [BREAKING][param][rust] `NodeRpcClient` models encrypted submissions: `submit_proven_transaction` now takes `SealedTransactionInputs` instead of `TransactionInputs`, `submit_proven_batch` now takes `Vec<SealedTransactionInputs>` (one per transaction, each sealed against its own transaction ID), and implementations must provide the new `get_transaction_encryption_key` method ([#2341](https://github.com/0xMiden/rust-sdk/pull/2341)).
* [BREAKING][type][rust] Added the `NoteFilter::ScriptRoots` variant, so exhaustive matches on `NoteFilter` in `Store` implementations must handle it ([#2335](https://github.com/0xMiden/rust-sdk/pull/2335)).
* [BREAKING][behavior][rpc] The `SyncNotes` response now carries a reduced note metadata message: instead of the note's attachments commitment it carries one entry per attachment, with single-word attachments sent verbatim and larger ones sent as commitments. The client reconstructs the protocol-level `NoteMetadata` from those entries, so it requires a node that speaks this format.
* [BREAKING][behavior][store] The SQLite base schema now declares an index on `input_notes(script_root)`. This changes the schema fingerprint, so opening a database created before this change fails with `SchemaHashMismatch` and existing stores must be recreated ([#2335](https://github.com/0xMiden/rust-sdk/pull/2335)).

### Enhancements
Expand Down
Loading
Loading