Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
* [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)).
* [BREAKING][removal][store] `miden-client-sqlite-store` no longer exposes the internal helpers `column_value_as_u64` and `u64_to_value`, nor the connection-taking `SqliteStore` methods (`get_transactions`, `apply_transaction`, `apply_transaction_batch`, `get_foreign_account_code`, `get_account_vault`, `get_account_storage`, `upsert_foreign_account_code`, `prune_account_history`); they are now crate-private. Use the `Store` trait methods instead ([#2351](https://github.com/0xMiden/rust-sdk/issues/2351)).
* [BREAKING][removal][rust] `miden_client::agglayer::create_bridge_account` and `miden_client::agglayer::create_agglayer_faucet` are removed. Build the accounts with `AggLayerBridge::account_builder` and `AggLayerFaucet::account_builder`, which return an `AccountBuilder` and take the account's `FeePolicyManager` explicitly; its active policy must be a `BasicConstantFeePolicy` scheduling every root in the account's `allowed_notes()`. The faucet builder additionally takes the initial token supply and the account seeding its `ADMIN` role.
* [BREAKING][rust] `Client::add_note_tag` and `Client::remove_note_tag` return `bool` instead of `()`, reporting whether the tag was actually added or removed. Both used to swallow that outcome and only log it ([#2416](https://github.com/0xMiden/rust-sdk/pull/2416)).

Expand All @@ -48,6 +49,8 @@

### Fixes

* [FIX][store] Corrupted database contents now surface as `StoreError`s instead of panicking: undecodable account IDs, nonces, and note-script blobs, a missing blockchain-checkpoint row, and a zero MMR node id all return errors, and rusqlite errors on parameterized note/account queries are no longer converted through panicking `expect`s ([#2351](https://github.com/0xMiden/rust-sdk/issues/2351)).
* [FIX][store] `u64` columns written with the top bit set (stored as negative SQL INTEGERs) are now read back through the shared bit-cast helper everywhere; two read sites previously errored on such values ([#2351](https://github.com/0xMiden/rust-sdk/issues/2351)).
* [FIX][rust] Foreign procedure invocation against a tracked public account with a non-empty vault no longer fails with `ERR_FOREIGN_ACCOUNT_INVALID_COMMITMENT`. The client requests the foreign vault conditionally on its local vault root, and the node's omitted asset list — indistinguishable from an empty vault — was rebuilt into an empty vault and a wrong account commitment. Reconstruction now keeps an asset list only when it hashes to the header's vault root, degrading to a root-only vault served by lazy per-asset witnesses otherwise ([#2417](https://github.com/0xMiden/rust-sdk/pull/2417)).
* [FIX][rust] The lazy storage-map witness fetch is now anchored at the transaction reference block instead of the chain tip, so a foreign procedure reading a storage map of an account updated after the caller's last sync no longer fails merkle verification inside the VM. A proof that still verifies against a different root than the executor requires is rejected with an error naming both roots ([#2417](https://github.com/0xMiden/rust-sdk/pull/2417)).
* [FIX][cli] `miden-client init` now reports invalid remote prover endpoints instead of silently writing a local-prover config ([#2376](https://github.com/0xMiden/rust-sdk/pull/2376)).
Expand Down
3 changes: 2 additions & 1 deletion crates/rust-client/src/store/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -761,7 +761,8 @@ pub enum TransactionFilter {
impl TransactionFilter {
/// Returns a [String] containing the query for this Filter.
pub fn to_query(&self) -> String {
const QUERY: &str = "SELECT tx.id, script.script, tx.details, tx.status \
const QUERY: &str = "SELECT tx.id AS id, script.script AS script, tx.details AS details, \
tx.status AS status \
FROM transactions AS tx LEFT JOIN transaction_scripts AS script ON tx.script_root = script.script_root";
match self {
TransactionFilter::All => QUERY.to_string(),
Expand Down
Loading
Loading