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
37 changes: 2 additions & 35 deletions rust-client/src/bin/hash_preimage_note.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use rand::RngCore;
use std::{path::PathBuf, sync::Arc};
use tokio::time::{sleep, Duration};

use miden_client::{
account::{
Expand All @@ -18,12 +17,12 @@ use miden_client::{
keystore::{FilesystemKeyStore, Keystore},
note::{Note, NoteAssets, NoteRecipient, NoteStorage, NoteTag, NoteType, PartialNoteMetadata},
rpc::{Endpoint, GrpcClient},
store::TransactionFilter,
transaction::{TransactionId, TransactionRequestBuilder, TransactionStatus},
transaction::TransactionRequestBuilder,
Client, ClientError, Felt,
};
use miden_client_sqlite_store::ClientBuilderSqliteExt;
use miden_protocol::Hasher;
use rust_client::wait_for_tx;

// Helper to create a basic account
async fn create_basic_account(
Expand Down Expand Up @@ -88,38 +87,6 @@ async fn create_basic_faucet(
Ok(account)
}

/// Waits for a specific transaction to be committed.
async fn wait_for_tx(
client: &mut Client<FilesystemKeyStore>,
tx_id: TransactionId,
) -> Result<(), ClientError> {
loop {
client.sync_state().await?;

// Check transaction status
let txs = client
.get_transactions(TransactionFilter::Ids(vec![tx_id]))
.await?;
let tx_committed = if !txs.is_empty() {
matches!(txs[0].status, TransactionStatus::Committed { .. })
} else {
false
};

if tx_committed {
println!("✅ transaction {} committed", tx_id.to_hex());
break;
}

println!(
"Transaction {} not yet committed. Waiting...",
tx_id.to_hex()
);
sleep(Duration::from_secs(2)).await;
}
Ok(())
}

#[tokio::main]
async fn main() -> Result<(), ClientError> {
// Initialize client
Expand Down
40 changes: 3 additions & 37 deletions rust-client/src/bin/network_notes_counter_contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,48 +15,14 @@ use miden_client::{
NoteRecipient, NoteStorage, NoteTag, NoteType, PartialNoteMetadata,
},
rpc::{Endpoint, GrpcClient},
store::TransactionFilter,
transaction::{
TransactionId, TransactionRequestBuilder, TransactionStatus,
},
Client, ClientError, Felt, Word,
transaction::TransactionRequestBuilder,
Felt, Word,
};
use miden_client_sqlite_store::ClientBuilderSqliteExt;
use rand::RngCore;
use rust_client::wait_for_tx;
use tokio::time::{sleep, Duration};

/// Waits for a specific transaction to be committed.
async fn wait_for_tx(
client: &mut Client<FilesystemKeyStore>,
tx_id: TransactionId,
) -> Result<(), ClientError> {
loop {
client.sync_state().await?;

// Check transaction status
let txs = client
.get_transactions(TransactionFilter::Ids(vec![tx_id]))
.await?;
let tx_committed = if !txs.is_empty() {
matches!(txs[0].status, TransactionStatus::Committed { .. })
} else {
false
};

if tx_committed {
println!("✅ transaction {} committed", tx_id.to_hex());
break;
}

println!(
"Transaction {} not yet committed. Waiting...",
tx_id.to_hex()
);
sleep(Duration::from_secs(2)).await;
}
Ok(())
}

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize client
Expand Down
40 changes: 4 additions & 36 deletions rust-client/src/bin/unauthenticated_note_transfer.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use rand::RngCore;
use std::{path::PathBuf, sync::Arc};
use tokio::time::{sleep, Duration, Instant};
use tokio::time::{Duration, Instant};

use miden_client::{
account::{
Expand All @@ -17,44 +17,12 @@ use miden_client::{
keystore::{FilesystemKeyStore, Keystore},
note::{Note, NoteAttachments, NoteType, P2idNote},
rpc::{Endpoint, GrpcClient},
store::TransactionFilter,
transaction::{TransactionId, TransactionRequestBuilder, TransactionStatus},
transaction::TransactionRequestBuilder,
utils::{Deserializable, Serializable},
Client, ClientError,
ClientError,
};
use miden_client_sqlite_store::ClientBuilderSqliteExt;

/// Waits for a specific transaction to be committed.
async fn wait_for_tx(
client: &mut Client<FilesystemKeyStore>,
tx_id: TransactionId,
) -> Result<(), ClientError> {
loop {
client.sync_state().await?;

// Check transaction status
let txs = client
.get_transactions(TransactionFilter::Ids(vec![tx_id]))
.await?;
let tx_committed = if !txs.is_empty() {
matches!(txs[0].status, TransactionStatus::Committed { .. })
} else {
false
};

if tx_committed {
println!("✅ transaction {} committed", tx_id.to_hex());
break;
}

println!(
"Transaction {} not yet committed. Waiting...",
tx_id.to_hex()
);
sleep(Duration::from_secs(2)).await;
}
Ok(())
}
use rust_client::wait_for_tx;

#[tokio::main]
async fn main() -> Result<(), ClientError> {
Expand Down
39 changes: 39 additions & 0 deletions rust-client/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
use std::time::Duration;

use miden_client::{
keystore::FilesystemKeyStore,
store::TransactionFilter,
transaction::{TransactionId, TransactionStatus},
Client, ClientError,
};
use tokio::time::sleep;

/// Waits until the specified transaction is committed, syncing the client between polls.
pub async fn wait_for_tx(
client: &mut Client<FilesystemKeyStore>,
tx_id: TransactionId,
) -> Result<(), ClientError> {
loop {
client.sync_state().await?;

let txs = client
.get_transactions(TransactionFilter::Ids(vec![tx_id]))
.await?;
let tx_committed = txs
.first()
.is_some_and(|tx| matches!(tx.status, TransactionStatus::Committed { .. }));

if tx_committed {
println!("✅ transaction {} committed", tx_id.to_hex());
break;
}

println!(
"Transaction {} not yet committed. Waiting...",
tx_id.to_hex()
);
sleep(Duration::from_secs(2)).await;
}

Ok(())
}