salvium_wallet_scan_mempool is now exported as a C FFI symbol

This commit is contained in:
Matt Hess
2026-03-03 16:58:17 +00:00
parent a13c1d6451
commit 8abed301da
3 changed files with 47 additions and 14 deletions
Generated
+13 -13
View File
@@ -1956,7 +1956,7 @@ checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
[[package]]
name = "salvium-cli"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"clap",
"dirs",
@@ -1978,7 +1978,7 @@ dependencies = [
[[package]]
name = "salvium-consensus"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"hex",
"salvium-types",
@@ -1990,7 +1990,7 @@ dependencies = [
[[package]]
name = "salvium-crypto"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"aes-gcm",
"argon2",
@@ -2016,7 +2016,7 @@ dependencies = [
[[package]]
name = "salvium-ffi"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"dirs",
"hex",
@@ -2035,7 +2035,7 @@ dependencies = [
[[package]]
name = "salvium-miner"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"clap",
"hex",
@@ -2050,7 +2050,7 @@ dependencies = [
[[package]]
name = "salvium-miner-gr"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"cc",
"clap",
@@ -2062,7 +2062,7 @@ dependencies = [
[[package]]
name = "salvium-miner-v2"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"cc",
"clap",
@@ -2077,7 +2077,7 @@ dependencies = [
[[package]]
name = "salvium-multisig"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"curve25519-dalek",
"hex",
@@ -2093,7 +2093,7 @@ dependencies = [
[[package]]
name = "salvium-rpc"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"base64",
"hex",
@@ -2108,7 +2108,7 @@ dependencies = [
[[package]]
name = "salvium-sync-bench"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"clap",
"env_logger",
@@ -2125,7 +2125,7 @@ dependencies = [
[[package]]
name = "salvium-tx"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"curve25519-dalek",
"getrandom 0.2.17",
@@ -2143,7 +2143,7 @@ dependencies = [
[[package]]
name = "salvium-types"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"hex",
"serde",
@@ -2153,7 +2153,7 @@ dependencies = [
[[package]]
name = "salvium-wallet"
version = "1.0.7-r016"
version = "1.0.7-r017"
dependencies = [
"aes-gcm",
"chacha20",
+1 -1
View File
@@ -20,7 +20,7 @@ members = [
]
[workspace.package]
version = "1.0.7-r016"
version = "1.0.7-r017"
edition = "2021"
license = "LicenseRef-Salvium-RS"
repository = "https://github.com/salvium/salvium-rs"
+33
View File
@@ -481,6 +481,39 @@ fn dispatch_sync_event(event: &salvium_wallet::SyncEvent, cb: SyncCallbackFn) {
}
}
// =============================================================================
// Mempool Scan
// =============================================================================
/// Scan the mempool for transactions belonging to this wallet.
///
/// This is a lightweight alternative to a full sync — it only checks the
/// daemon's transaction pool for new or dropped transactions relevant to the
/// wallet's keys.
///
/// Returns JSON: `{"new_pool_txs": N, "dropped_pool_txs": N}`
/// Caller must free with `salvium_string_free()`.
#[no_mangle]
pub unsafe extern "C" fn salvium_wallet_scan_mempool(
wallet: *mut c_void,
daemon: *mut c_void,
) -> *mut c_char {
ffi_try_string(|| {
let handle = unsafe { borrow_handle::<WalletHandle>(wallet) }?;
let dh = unsafe { borrow_handle::<crate::daemon::DaemonHandle>(daemon) }?;
let rt = crate::runtime();
rt.block_on(async {
let result = handle.wallet.scan_mempool(&dh.pool).await.map_err(|e| e.to_string())?;
serde_json::to_string(&serde_json::json!({
"new_pool_txs": result.new_pool_txs,
"dropped_pool_txs": result.dropped_pool_txs,
}))
.map_err(|e| e.to_string())
})
})
}
// =============================================================================
// Query Functions
// =============================================================================