Skip to content
Merged
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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
* Added WebClient bindings and RPC helpers for additional account, note, and validation workflows ([#1638](https://github.com/0xMiden/miden-client/pull/1638)).
* [BREAKING] Modified JS binding for `AccountComponent::compile` which now takes an `AccountComponentCode` built with the newly added binding `CodeBuilder::compile_account_component_code` ([#1627](https://github.com/0xMiden/miden-client/pull/1627)).
* [BREAKING] Replaced `TransactionRequestBuilder::unauthenticated_input_notes` & `TransactionRequestBuilder::authenticated_input_notes` for `TransactionRequestBuilder::input_notes`, now the user passes a list of notes which the `Client` itself determines the authentication status of ([#1624](https://github.com/0xMiden/miden-client/issues/1624)).
* Updated `SqliteStore`: replaced `MerkleStore` with `SmtForest` and introduced `AccountSmtForest`; simplified queries ([#1526](https://github.com/0xMiden/miden-client/pull/1526), [#1663](https://github.com/0xMiden/miden-client/pull/1663)).

## 0.12.5 (2025-12-01)

Expand Down
26 changes: 20 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/rust-client/src/store/data_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ impl DataStore for ClientDataStore {
) -> Result<Vec<AssetWitness>, DataStoreError> {
let mut asset_witnesses = vec![];
for vault_key in vault_keys {
match self.store.get_account_asset(account_id, vault_key.faucet_id_prefix()).await {
match self.store.get_account_asset(account_id, vault_key).await {
Ok(Some((_, asset_witness))) => {
asset_witnesses.push(asset_witness);
},
Expand Down
12 changes: 6 additions & 6 deletions crates/rust-client/src/store/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,15 +31,14 @@ use miden_protocol::account::{
AccountCode,
AccountHeader,
AccountId,
AccountIdPrefix,
AccountStorage,
StorageMapWitness,
StorageSlot,
StorageSlotContent,
StorageSlotName,
};
use miden_protocol::address::Address;
use miden_protocol::asset::{Asset, AssetVault, AssetWitness};
use miden_protocol::asset::{Asset, AssetVault, AssetVaultKey, AssetWitness};
use miden_protocol::block::{BlockHeader, BlockNumber};
use miden_protocol::crypto::merkle::mmr::{InOrderIndex, MmrPeaks, PartialMmr};
use miden_protocol::note::{NoteId, NoteScript, NoteTag, Nullifier};
Expand Down Expand Up @@ -454,20 +453,21 @@ pub trait Store: Send + Sync {
/// Retrieves the asset vault for a specific account.
async fn get_account_vault(&self, account_id: AccountId) -> Result<AssetVault, StoreError>;

/// Retrieves a specific asset from the account's vault along with its Merkle witness.
/// Retrieves a specific asset (by vault key) from the account's vault along with its Merkle
/// witness.
///
/// The default implementation of this method uses [`Store::get_account_vault`].
async fn get_account_asset(
&self,
account_id: AccountId,
faucet_id_prefix: AccountIdPrefix,
vault_key: AssetVaultKey,
) -> Result<Option<(Asset, AssetWitness)>, StoreError> {
let vault = self.get_account_vault(account_id).await?;
let Some(asset) = vault.assets().find(|a| a.faucet_id_prefix() == faucet_id_prefix) else {
let Some(asset) = vault.assets().find(|a| a.vault_key() == vault_key) else {
return Ok(None);
};

let witness = AssetWitness::new(vault.open(asset.vault_key()).into())?;
let witness = AssetWitness::new(vault.open(vault_key).into())?;

Ok(Some((asset, witness)))
}
Expand Down
Loading