Skip to content
Open
Show file tree
Hide file tree
Changes from all 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