From 17b36b924eabe2088165ce5515f69dee26075c32 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 21 Jan 2026 15:22:38 +0100 Subject: [PATCH 01/25] Vibecoded wallet-ffi --- Cargo.lock | 132 +++++++- Cargo.toml | 4 + wallet-ffi/Cargo.toml | 17 + wallet-ffi/build.rs | 13 + wallet-ffi/cbindgen.toml | 40 +++ wallet-ffi/src/account.rs | 381 ++++++++++++++++++++++ wallet-ffi/src/error.rs | 93 ++++++ wallet-ffi/src/keys.rs | 236 ++++++++++++++ wallet-ffi/src/lib.rs | 92 ++++++ wallet-ffi/src/sync.rs | 138 ++++++++ wallet-ffi/src/transfer.rs | 188 +++++++++++ wallet-ffi/src/types.rs | 167 ++++++++++ wallet-ffi/src/wallet.rs | 264 +++++++++++++++ wallet-ffi/wallet_ffi.h | 646 +++++++++++++++++++++++++++++++++++++ 14 files changed, 2399 insertions(+), 12 deletions(-) create mode 100644 wallet-ffi/Cargo.toml create mode 100644 wallet-ffi/build.rs create mode 100644 wallet-ffi/cbindgen.toml create mode 100644 wallet-ffi/src/account.rs create mode 100644 wallet-ffi/src/error.rs create mode 100644 wallet-ffi/src/keys.rs create mode 100644 wallet-ffi/src/lib.rs create mode 100644 wallet-ffi/src/sync.rs create mode 100644 wallet-ffi/src/transfer.rs create mode 100644 wallet-ffi/src/types.rs create mode 100644 wallet-ffi/src/wallet.rs create mode 100644 wallet-ffi/wallet_ffi.h diff --git a/Cargo.lock b/Cargo.lock index 40434dcc..b4784794 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -621,6 +621,17 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "1.5.0" @@ -881,6 +892,25 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cbindgen" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da6bc11b07529f16944307272d5bd9b22530bc7d05751717c9d416586cedab49" +dependencies = [ + "clap 3.2.25", + "heck 0.4.1", + "indexmap 1.9.3", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 1.0.109", + "tempfile", + "toml 0.5.11", +] + [[package]] name = "cc" version = "1.2.49" @@ -960,6 +990,21 @@ dependencies = [ "libloading", ] +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_lex 0.2.4", + "indexmap 1.9.3", + "strsim 0.10.0", + "termcolor", + "textwrap", +] + [[package]] name = "clap" version = "4.5.53" @@ -978,8 +1023,8 @@ checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", - "clap_lex", - "strsim", + "clap_lex 0.7.6", + "strsim 0.11.1", ] [[package]] @@ -988,12 +1033,21 @@ version = "4.5.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.111", ] +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + [[package]] name = "clap_lex" version = "0.7.6" @@ -1180,7 +1234,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.11.1", "syn 2.0.111", ] @@ -1194,7 +1248,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "strsim", + "strsim 0.11.1", "syn 2.0.111", ] @@ -1381,7 +1435,7 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "proc-macro2-diagnostics", ] @@ -1834,12 +1888,27 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + [[package]] name = "hermit-abi" version = "0.5.2" @@ -2289,7 +2358,7 @@ version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ - "hermit-abi", + "hermit-abi 0.5.2", "libc", "windows-sys 0.61.2", ] @@ -2859,6 +2928,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + [[package]] name = "parking_lot" version = "0.12.5" @@ -3030,7 +3105,7 @@ dependencies = [ name = "program_deployment" version = "0.1.0" dependencies = [ - "clap", + "clap 4.5.53", "nssa", "nssa_core", "tokio", @@ -3784,7 +3859,7 @@ dependencies = [ "strum", "tempfile", "thiserror", - "toml", + "toml 0.8.23", "yaml-rust2", ] @@ -3946,7 +4021,7 @@ dependencies = [ "actix", "actix-web", "anyhow", - "clap", + "clap 4.5.53", "common", "env_logger", "log", @@ -4191,6 +4266,12 @@ dependencies = [ "thiserror", ] +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + [[package]] name = "strsim" version = "0.11.1" @@ -4212,7 +4293,7 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.111", @@ -4330,6 +4411,12 @@ dependencies = [ "risc0-zkvm", ] +[[package]] +name = "textwrap" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" + [[package]] name = "thiserror" version = "2.0.17" @@ -4467,6 +4554,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml" version = "0.8.23" @@ -4750,7 +4846,7 @@ dependencies = [ "base64 0.22.1", "borsh", "bytemuck", - "clap", + "clap 4.5.53", "common", "env_logger", "futures", @@ -4770,6 +4866,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "wallet-ffi" +version = "0.1.0" +dependencies = [ + "cbindgen", + "common", + "nssa", + "once_cell", + "tokio", + "wallet", +] + [[package]] name = "want" version = "0.3.1" diff --git a/Cargo.toml b/Cargo.toml index ef1b881d..dffff452 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,7 @@ members = [ "sequencer_rpc", "mempool", "wallet", + "wallet-ffi", "sequencer_core", "common", "nssa", @@ -32,8 +33,11 @@ sequencer_core = { path = "sequencer_core" } sequencer_rpc = { path = "sequencer_rpc" } sequencer_runner = { path = "sequencer_runner" } wallet = { path = "wallet" } +wallet-ffi = { path = "wallet-ffi" } test_program_methods = { path = "test_program_methods" } +once_cell = "1.19" + tokio = { version = "1.28.2", features = [ "net", "rt-multi-thread", diff --git a/wallet-ffi/Cargo.toml b/wallet-ffi/Cargo.toml new file mode 100644 index 00000000..ae1ba57e --- /dev/null +++ b/wallet-ffi/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "wallet-ffi" +version = "0.1.0" +edition = "2021" + +[lib] +crate-type = ["cdylib", "staticlib"] + +[dependencies] +wallet.workspace = true +nssa.workspace = true +common.workspace = true +tokio.workspace = true +once_cell.workspace = true + +[build-dependencies] +cbindgen = "0.26" diff --git a/wallet-ffi/build.rs b/wallet-ffi/build.rs new file mode 100644 index 00000000..2d1b0cca --- /dev/null +++ b/wallet-ffi/build.rs @@ -0,0 +1,13 @@ +fn main() { + let crate_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap(); + + let config = cbindgen::Config::from_file("cbindgen.toml") + .expect("Unable to read cbindgen.toml"); + + cbindgen::Builder::new() + .with_crate(crate_dir) + .with_config(config) + .generate() + .expect("Unable to generate bindings") + .write_to_file("wallet_ffi.h"); +} diff --git a/wallet-ffi/cbindgen.toml b/wallet-ffi/cbindgen.toml new file mode 100644 index 00000000..42c46543 --- /dev/null +++ b/wallet-ffi/cbindgen.toml @@ -0,0 +1,40 @@ +language = "C" +header = """ +/** + * NSSA Wallet FFI Bindings + * + * Thread Safety: All functions are thread-safe. The wallet handle can be + * shared across threads, but operations are serialized internally. + * + * Memory Management: + * - Functions returning pointers allocate memory that must be freed + * - Use the corresponding wallet_ffi_free_* function to free memory + * - Never free memory returned by FFI using standard C free() + * + * Error Handling: + * - Functions return WalletFfiError codes + * - On error, call wallet_ffi_get_last_error() for detailed message + * - The error string must be freed with wallet_ffi_free_error_string() + * + * Initialization: + * 1. Call wallet_ffi_init_runtime() before any other function + * 2. Create wallet with wallet_ffi_create_new() or wallet_ffi_open() + * 3. Destroy wallet with wallet_ffi_destroy() when done + */ +""" + +include_guard = "WALLET_FFI_H" +include_version = true +no_includes = false + +[export] +include = ["Ffi.*", "WalletFfiError", "WalletHandle"] + +[enum] +rename_variants = "ScreamingSnakeCase" + +[fn] +rename_args = "None" + +[struct] +rename_fields = "None" diff --git a/wallet-ffi/src/account.rs b/wallet-ffi/src/account.rs new file mode 100644 index 00000000..53abb54f --- /dev/null +++ b/wallet-ffi/src/account.rs @@ -0,0 +1,381 @@ +//! Account management functions. + +use std::ptr; + +use nssa::AccountId; + +use crate::block_on; +use crate::error::{set_last_error, WalletFfiError}; +use crate::types::{ + split_u128, FfiAccount, FfiAccountList, FfiAccountListEntry, FfiBytes32, FfiProgramId, + WalletHandle, +}; +use crate::wallet::get_wallet; + +/// Create a new public account. +/// +/// Public accounts use standard transaction signing and are suitable for +/// non-private operations. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_account_id`: Output pointer for the new account ID (32 bytes) +/// +/// # Returns +/// - `Success` on successful creation +/// - Error code on failure +#[no_mangle] +pub extern "C" fn wallet_ffi_create_account_public( + handle: *mut WalletHandle, + out_account_id: *mut FfiBytes32, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_account_id.is_null() { + set_last_error("Null output pointer for account_id"); + return WalletFfiError::NullPointer; + } + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let (account_id, _chain_index) = wallet.create_new_account_public(None); + + unsafe { + (*out_account_id).data = *account_id.value(); + } + + WalletFfiError::Success +} + +/// Create a new private account. +/// +/// Private accounts use privacy-preserving transactions with nullifiers +/// and commitments. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_account_id`: Output pointer for the new account ID (32 bytes) +/// +/// # Returns +/// - `Success` on successful creation +/// - Error code on failure +#[no_mangle] +pub extern "C" fn wallet_ffi_create_account_private( + handle: *mut WalletHandle, + out_account_id: *mut FfiBytes32, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_account_id.is_null() { + set_last_error("Null output pointer for account_id"); + return WalletFfiError::NullPointer; + } + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let (account_id, _chain_index) = wallet.create_new_account_private(None); + + unsafe { + (*out_account_id).data = *account_id.value(); + } + + WalletFfiError::Success +} + +/// List all accounts in the wallet. +/// +/// Returns both public and private accounts managed by this wallet. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_list`: Output pointer for the account list +/// +/// # Returns +/// - `Success` on successful listing +/// - Error code on failure +/// +/// # Memory +/// The returned list must be freed with `wallet_ffi_free_account_list()`. +#[no_mangle] +pub extern "C" fn wallet_ffi_list_accounts( + handle: *mut WalletHandle, + out_list: *mut FfiAccountList, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_list.is_null() { + set_last_error("Null output pointer for account list"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let user_data = &wallet.storage().user_data; + let mut entries = Vec::new(); + + // Public accounts from default signing keys (preconfigured) + for account_id in user_data.default_pub_account_signing_keys.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: true, + }); + } + + // Public accounts from key tree (generated) + for account_id in user_data.public_key_tree.account_id_map.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: true, + }); + } + + // Private accounts from default accounts (preconfigured) + for account_id in user_data.default_user_private_accounts.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: false, + }); + } + + // Private accounts from key tree (generated) + for account_id in user_data.private_key_tree.account_id_map.keys() { + entries.push(FfiAccountListEntry { + account_id: FfiBytes32::from_account_id(account_id), + is_public: false, + }); + } + + let count = entries.len(); + + if count == 0 { + unsafe { + (*out_list).entries = ptr::null_mut(); + (*out_list).count = 0; + } + } else { + let entries_boxed = entries.into_boxed_slice(); + let entries_ptr = Box::into_raw(entries_boxed) as *mut FfiAccountListEntry; + + unsafe { + (*out_list).entries = entries_ptr; + (*out_list).count = count; + } + } + + WalletFfiError::Success +} + +/// Free an account list returned by `wallet_ffi_list_accounts`. +/// +/// # Safety +/// The list must be either null or a valid list returned by `wallet_ffi_list_accounts`. +#[no_mangle] +pub extern "C" fn wallet_ffi_free_account_list(list: *mut FfiAccountList) { + if list.is_null() { + return; + } + + unsafe { + let list = &*list; + if !list.entries.is_null() && list.count > 0 { + let slice = std::slice::from_raw_parts_mut(list.entries, list.count); + drop(Box::from_raw(slice as *mut [FfiAccountListEntry])); + } + } +} + +/// Get account balance. +/// +/// For public accounts, this fetches the balance from the network. +/// For private accounts, this returns the locally cached balance. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `is_public`: Whether this is a public account +/// - `out_balance_lo`: Output for lower 64 bits of balance +/// - `out_balance_hi`: Output for upper 64 bits of balance +/// +/// # Returns +/// - `Success` on successful query +/// - Error code on failure +#[no_mangle] +pub extern "C" fn wallet_ffi_get_balance( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + is_public: bool, + out_balance_lo: *mut u64, + out_balance_hi: *mut u64, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_balance_lo.is_null() || out_balance_hi.is_null() { + set_last_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let balance = if is_public { + match block_on(wallet.get_account_balance(account_id)) { + Ok(Ok(b)) => b, + Ok(Err(e)) => { + set_last_error(format!("Failed to get balance: {}", e)); + return WalletFfiError::NetworkError; + } + Err(e) => return e, + } + } else { + match wallet.get_account_private(&account_id) { + Some(account) => account.balance, + None => { + set_last_error("Private account not found"); + return WalletFfiError::AccountNotFound; + } + } + }; + + let (lo, hi) = split_u128(balance); + unsafe { + *out_balance_lo = lo; + *out_balance_hi = hi; + } + + WalletFfiError::Success +} + +/// Get full public account data from the network. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `out_account`: Output pointer for account data +/// +/// # Returns +/// - `Success` on successful query +/// - Error code on failure +/// +/// # Memory +/// The account data must be freed with `wallet_ffi_free_account_data()`. +#[no_mangle] +pub extern "C" fn wallet_ffi_get_account_public( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_account: *mut FfiAccount, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_account.is_null() { + set_last_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let account = match block_on(wallet.get_account_public(account_id)) { + Ok(Ok(a)) => a, + Ok(Err(e)) => { + set_last_error(format!("Failed to get account: {}", e)); + return WalletFfiError::NetworkError; + } + Err(e) => return e, + }; + + // Convert account data to FFI type + let data_vec: Vec = account.data.into(); + let data_len = data_vec.len(); + let data_ptr = if data_len > 0 { + let data_boxed = data_vec.into_boxed_slice(); + Box::into_raw(data_boxed) as *const u8 + } else { + ptr::null() + }; + + let (balance_lo, balance_hi) = split_u128(account.balance); + let (nonce_lo, nonce_hi) = split_u128(account.nonce); + + let program_owner = FfiProgramId { + data: account.program_owner, + }; + + unsafe { + (*out_account).program_owner = program_owner; + (*out_account).balance_lo = balance_lo; + (*out_account).balance_hi = balance_hi; + (*out_account).nonce_lo = nonce_lo; + (*out_account).nonce_hi = nonce_hi; + (*out_account).data = data_ptr; + (*out_account).data_len = data_len; + } + + WalletFfiError::Success +} + +/// Free account data returned by `wallet_ffi_get_account_public`. +/// +/// # Safety +/// The account must be either null or a valid account returned by +/// `wallet_ffi_get_account_public`. +#[no_mangle] +pub extern "C" fn wallet_ffi_free_account_data(account: *mut FfiAccount) { + if account.is_null() { + return; + } + + unsafe { + let account = &*account; + if !account.data.is_null() && account.data_len > 0 { + let slice = std::slice::from_raw_parts_mut(account.data as *mut u8, account.data_len); + drop(Box::from_raw(slice as *mut [u8])); + } + } +} diff --git a/wallet-ffi/src/error.rs b/wallet-ffi/src/error.rs new file mode 100644 index 00000000..46646259 --- /dev/null +++ b/wallet-ffi/src/error.rs @@ -0,0 +1,93 @@ +//! Error handling for the FFI layer. +//! +//! Uses numeric error codes with a thread-local last error message. + +use std::cell::RefCell; +use std::ffi::{c_char, CString}; +use std::ptr; + +/// Error codes returned by FFI functions. +#[repr(C)] +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum WalletFfiError { + /// Operation completed successfully + Success = 0, + /// A null pointer was passed where a valid pointer was expected + NullPointer = 1, + /// Invalid UTF-8 string + InvalidUtf8 = 2, + /// Wallet handle is not initialized + WalletNotInitialized = 3, + /// Configuration error + ConfigError = 4, + /// Storage/persistence error + StorageError = 5, + /// Network/RPC error + NetworkError = 6, + /// Account not found + AccountNotFound = 7, + /// Key not found for account + KeyNotFound = 8, + /// Insufficient funds for operation + InsufficientFunds = 9, + /// Invalid account ID format + InvalidAccountId = 10, + /// Tokio runtime error + RuntimeError = 11, + /// Password required but not provided + PasswordRequired = 12, + /// Block synchronization error + SyncError = 13, + /// Serialization/deserialization error + SerializationError = 14, + /// Internal error (catch-all) + InternalError = 99, +} + +// Thread-local storage for the last error message +thread_local! { + static LAST_ERROR: RefCell> = const { RefCell::new(None) }; +} + +/// Set the last error message for the current thread. +pub fn set_last_error(msg: impl Into) { + LAST_ERROR.with(|e| { + *e.borrow_mut() = Some(msg.into()); + }); +} + +/// Clear the last error message. +pub fn clear_last_error() { + LAST_ERROR.with(|e| { + *e.borrow_mut() = None; + }); +} + +/// Get the last error message. +/// +/// Returns a pointer to a null-terminated string, or null if no error is set. +/// The caller owns the returned string and must free it with +/// `wallet_ffi_free_error_string`. +#[no_mangle] +pub extern "C" fn wallet_ffi_get_last_error() -> *mut c_char { + LAST_ERROR.with(|e| match e.borrow_mut().take() { + Some(msg) => CString::new(msg) + .map(|s| s.into_raw()) + .unwrap_or(ptr::null_mut()), + None => ptr::null_mut(), + }) +} + +/// Free an error string returned by `wallet_ffi_get_last_error`. +/// +/// # Safety +/// The pointer must be either null or a valid pointer returned by +/// `wallet_ffi_get_last_error`. +#[no_mangle] +pub extern "C" fn wallet_ffi_free_error_string(ptr: *mut c_char) { + if !ptr.is_null() { + unsafe { + drop(CString::from_raw(ptr)); + } + } +} diff --git a/wallet-ffi/src/keys.rs b/wallet-ffi/src/keys.rs new file mode 100644 index 00000000..d4a29e11 --- /dev/null +++ b/wallet-ffi/src/keys.rs @@ -0,0 +1,236 @@ +//! Key retrieval functions. + +use std::ptr; + +use nssa::{AccountId, PublicKey}; + +use crate::error::{set_last_error, WalletFfiError}; +use crate::types::{FfiBytes32, FfiPrivateAccountKeys, FfiPublicAccountKey, WalletHandle}; +use crate::wallet::get_wallet; + +/// Get the public key for a public account. +/// +/// This returns the public key derived from the account's signing key. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `out_public_key`: Output pointer for the public key +/// +/// # Returns +/// - `Success` on successful retrieval +/// - `KeyNotFound` if the account's key is not in this wallet +/// - Error code on other failures +#[no_mangle] +pub extern "C" fn wallet_ffi_get_public_account_key( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_public_key: *mut FfiPublicAccountKey, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_public_key.is_null() { + set_last_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let private_key = match wallet.get_account_public_signing_key(&account_id) { + Some(k) => k, + None => { + set_last_error("Public account key not found in wallet"); + return WalletFfiError::KeyNotFound; + } + }; + + let public_key = PublicKey::new_from_private_key(private_key); + + unsafe { + (*out_public_key).public_key.data = *public_key.value(); + } + + WalletFfiError::Success +} + +/// Get keys for a private account. +/// +/// Returns the nullifier public key (NPK) and incoming viewing public key (IPK) +/// for the specified private account. These keys are safe to share publicly. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: The account ID (32 bytes) +/// - `out_keys`: Output pointer for the key data +/// +/// # Returns +/// - `Success` on successful retrieval +/// - `AccountNotFound` if the private account is not in this wallet +/// - Error code on other failures +/// +/// # Memory +/// The keys structure must be freed with `wallet_ffi_free_private_account_keys()`. +#[no_mangle] +pub extern "C" fn wallet_ffi_get_private_account_keys( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_keys: *mut FfiPrivateAccountKeys, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_keys.is_null() { + set_last_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let (key_chain, _account) = match wallet.storage().user_data.get_private_account(&account_id) { + Some(k) => k, + None => { + set_last_error("Private account not found in wallet"); + return WalletFfiError::AccountNotFound; + } + }; + + // NPK is a 32-byte array + let npk_bytes = key_chain.nullifer_public_key.0; + + // IPK is a compressed secp256k1 point (33 bytes) + let ipk_bytes = key_chain.incoming_viewing_public_key.to_bytes(); + let ipk_len = ipk_bytes.len(); + let ipk_vec = ipk_bytes.to_vec(); + let ipk_boxed = ipk_vec.into_boxed_slice(); + let ipk_ptr = Box::into_raw(ipk_boxed) as *const u8; + + unsafe { + (*out_keys).nullifier_public_key.data = npk_bytes; + (*out_keys).incoming_viewing_public_key = ipk_ptr; + (*out_keys).incoming_viewing_public_key_len = ipk_len; + } + + WalletFfiError::Success +} + +/// Free private account keys returned by `wallet_ffi_get_private_account_keys`. +/// +/// # Safety +/// The keys must be either null or valid keys returned by +/// `wallet_ffi_get_private_account_keys`. +#[no_mangle] +pub extern "C" fn wallet_ffi_free_private_account_keys(keys: *mut FfiPrivateAccountKeys) { + if keys.is_null() { + return; + } + + unsafe { + let keys = &*keys; + if !keys.incoming_viewing_public_key.is_null() + && keys.incoming_viewing_public_key_len > 0 + { + let slice = std::slice::from_raw_parts_mut( + keys.incoming_viewing_public_key as *mut u8, + keys.incoming_viewing_public_key_len, + ); + drop(Box::from_raw(slice as *mut [u8])); + } + } +} + +/// Convert an account ID to a Base58 string. +/// +/// # Parameters +/// - `account_id`: The account ID (32 bytes) +/// +/// # Returns +/// - Pointer to null-terminated Base58 string on success +/// - Null pointer on error +/// +/// # Memory +/// The returned string must be freed with `wallet_ffi_free_string()`. +#[no_mangle] +pub extern "C" fn wallet_ffi_account_id_to_base58( + account_id: *const FfiBytes32, +) -> *mut std::ffi::c_char { + if account_id.is_null() { + set_last_error("Null account_id pointer"); + return ptr::null_mut(); + } + + let account_id = AccountId::new(unsafe { (*account_id).data }); + let base58_str = account_id.to_string(); + + match std::ffi::CString::new(base58_str) { + Ok(s) => s.into_raw(), + Err(e) => { + set_last_error(format!("Failed to create C string: {}", e)); + ptr::null_mut() + } + } +} + +/// Parse a Base58 string into an account ID. +/// +/// # Parameters +/// - `base58_str`: Null-terminated Base58 string +/// - `out_account_id`: Output pointer for the account ID (32 bytes) +/// +/// # Returns +/// - `Success` on successful parsing +/// - `InvalidAccountId` if the string is not valid Base58 +/// - Error code on other failures +#[no_mangle] +pub extern "C" fn wallet_ffi_account_id_from_base58( + base58_str: *const std::ffi::c_char, + out_account_id: *mut FfiBytes32, +) -> WalletFfiError { + if base58_str.is_null() || out_account_id.is_null() { + set_last_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let c_str = unsafe { std::ffi::CStr::from_ptr(base58_str) }; + let str_slice = match c_str.to_str() { + Ok(s) => s, + Err(e) => { + set_last_error(format!("Invalid UTF-8: {}", e)); + return WalletFfiError::InvalidUtf8; + } + }; + + let account_id: AccountId = match str_slice.parse() { + Ok(id) => id, + Err(e) => { + set_last_error(format!("Invalid Base58 account ID: {}", e)); + return WalletFfiError::InvalidAccountId; + } + }; + + unsafe { + (*out_account_id).data = *account_id.value(); + } + + WalletFfiError::Success +} diff --git a/wallet-ffi/src/lib.rs b/wallet-ffi/src/lib.rs new file mode 100644 index 00000000..2b5713b7 --- /dev/null +++ b/wallet-ffi/src/lib.rs @@ -0,0 +1,92 @@ +//! NSSA Wallet FFI Library +//! +//! This crate provides C-compatible bindings for the NSSA wallet functionality. +//! +//! # Usage +//! +//! 1. Initialize the runtime with `wallet_ffi_init_runtime()` +//! 2. Create or open a wallet with `wallet_ffi_create_new()` or `wallet_ffi_open()` +//! 3. Use the wallet functions to manage accounts and transfers +//! 4. Destroy the wallet with `wallet_ffi_destroy()` when done +//! +//! # Thread Safety +//! +//! All functions are thread-safe. The wallet handle uses internal locking +//! to ensure safe concurrent access. +//! +//! # Memory Management +//! +//! - Functions returning pointers allocate memory that must be freed +//! - Use the corresponding `wallet_ffi_free_*` function to free memory +//! - Never free memory returned by FFI using standard C `free()` + +pub mod account; +pub mod error; +pub mod keys; +pub mod sync; +pub mod transfer; +pub mod types; +pub mod wallet; + +use once_cell::sync::OnceCell; +use std::sync::Arc; +use tokio::runtime::Runtime; + +use crate::error::{set_last_error, WalletFfiError}; + +// Re-export public types for cbindgen +pub use error::WalletFfiError as FfiError; +pub use types::*; + +// Global Tokio runtime - initialized once +static RUNTIME: OnceCell> = OnceCell::new(); + +/// Get a reference to the global runtime. +pub(crate) fn get_runtime() -> Result<&'static Arc, WalletFfiError> { + RUNTIME.get().ok_or_else(|| { + set_last_error("Runtime not initialized. Call wallet_ffi_init_runtime() first."); + WalletFfiError::RuntimeError + }) +} + +/// Run an async future on the global runtime, blocking until completion. +pub(crate) fn block_on(future: F) -> Result { + let runtime = get_runtime()?; + Ok(runtime.block_on(future)) +} + +/// Initialize the global Tokio runtime. +/// +/// This must be called before any async operations (like network calls). +/// Safe to call multiple times - subsequent calls are no-ops. +/// +/// # Returns +/// - `Success` if the runtime was initialized or already exists +/// - `RuntimeError` if runtime creation failed +#[no_mangle] +pub extern "C" fn wallet_ffi_init_runtime() -> WalletFfiError { + let result = RUNTIME.get_or_try_init(|| { + tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build() + .map(Arc::new) + }); + + match result { + Ok(_) => WalletFfiError::Success, + Err(e) => { + set_last_error(format!("Failed to initialize runtime: {}", e)); + WalletFfiError::RuntimeError + } + } +} + +/// Check if the runtime is initialized. +/// +/// # Returns +/// - `true` if the runtime is ready +/// - `false` if `wallet_ffi_init_runtime()` hasn't been called yet +#[no_mangle] +pub extern "C" fn wallet_ffi_runtime_initialized() -> bool { + RUNTIME.get().is_some() +} diff --git a/wallet-ffi/src/sync.rs b/wallet-ffi/src/sync.rs new file mode 100644 index 00000000..b4e9deb8 --- /dev/null +++ b/wallet-ffi/src/sync.rs @@ -0,0 +1,138 @@ +//! Block synchronization functions. + +use crate::block_on; +use crate::error::{set_last_error, WalletFfiError}; +use crate::types::WalletHandle; +use crate::wallet::get_wallet; + +/// Synchronize private accounts to a specific block. +/// +/// This scans the blockchain from the last synced block to the specified block, +/// updating private account balances based on any relevant transactions. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `block_id`: Target block number to sync to +/// +/// # Returns +/// - `Success` if synchronization completed +/// - `SyncError` if synchronization failed +/// - Error code on other failures +/// +/// # Note +/// This operation can take a while for large block ranges. The wallet +/// internally uses a progress bar which may output to stdout. +#[no_mangle] +pub extern "C" fn wallet_ffi_sync_to_block( + handle: *mut WalletHandle, + block_id: u64, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + let mut wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + match block_on(wallet.sync_to_block(block_id)) { + Ok(Ok(())) => WalletFfiError::Success, + Ok(Err(e)) => { + set_last_error(format!("Sync failed: {}", e)); + WalletFfiError::SyncError + } + Err(e) => e, + } +} + +/// Get the last synced block number. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_block_id`: Output pointer for the block number +/// +/// # Returns +/// - `Success` on success +/// - Error code on failure +#[no_mangle] +pub extern "C" fn wallet_ffi_get_last_synced_block( + handle: *mut WalletHandle, + out_block_id: *mut u64, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_block_id.is_null() { + set_last_error("Null output pointer"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + unsafe { + *out_block_id = wallet.last_synced_block; + } + + WalletFfiError::Success +} + +/// Get the current block height from the sequencer. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `out_block_height`: Output pointer for the current block height +/// +/// # Returns +/// - `Success` on success +/// - `NetworkError` if the sequencer is unreachable +/// - Error code on other failures +#[no_mangle] +pub extern "C" fn wallet_ffi_get_current_block_height( + handle: *mut WalletHandle, + out_block_height: *mut u64, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if out_block_height.is_null() { + set_last_error("Null output pointer"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + match block_on(wallet.sequencer_client.get_last_block()) { + Ok(Ok(response)) => { + unsafe { + *out_block_height = response.last_block; + } + WalletFfiError::Success + } + Ok(Err(e)) => { + set_last_error(format!("Failed to get block height: {:?}", e)); + WalletFfiError::NetworkError + } + Err(e) => e, + } +} diff --git a/wallet-ffi/src/transfer.rs b/wallet-ffi/src/transfer.rs new file mode 100644 index 00000000..d52ee9a8 --- /dev/null +++ b/wallet-ffi/src/transfer.rs @@ -0,0 +1,188 @@ +//! Token transfer functions. + +use std::ffi::{CString, c_ulonglong}; +use std::ptr; + +use common::error::ExecutionFailureKind; +use nssa::AccountId; +use wallet::program_facades::native_token_transfer::NativeTokenTransfer; + +use crate::block_on; +use crate::error::{set_last_error, WalletFfiError}; +use crate::types::{combine_u128, FfiBytes32, FfiTransferResult, WalletHandle}; +use crate::wallet::get_wallet; + +/// Send a public token transfer. +/// +/// Transfers tokens from one public account to another on the network. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `from`: Source account ID (must be owned by this wallet) +/// - `to`: Destination account ID +/// - `amount_lo`: Lower 64 bits of amount to transfer +/// - `amount_hi`: Upper 64 bits of amount to transfer +/// - `out_result`: Output pointer for transfer result +/// +/// # Returns +/// - `Success` if the transfer was submitted successfully +/// - `InsufficientFunds` if the source account doesn't have enough balance +/// - `KeyNotFound` if the source account's signing key is not in this wallet +/// - Error code on other failures +/// +/// # Memory +/// The result must be freed with `wallet_ffi_free_transfer_result()`. +#[no_mangle] +pub extern "C" fn wallet_ffi_transfer_public( + handle: *mut WalletHandle, + from: *const FfiBytes32, + to: *const FfiBytes32, + amount_lo: u64, + amount_hi: u64, + out_result: *mut FfiTransferResult, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if from.is_null() || to.is_null() || out_result.is_null() { + set_last_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let from_id = AccountId::new(unsafe { (*from).data }); + let to_id = AccountId::new(unsafe { (*to).data }); + let amount = combine_u128(amount_lo, amount_hi); + + let transfer = NativeTokenTransfer(&wallet); + + match block_on(transfer.send_public_transfer(from_id, to_id, amount)) { + Ok(Ok(response)) => { + let tx_hash = CString::new(response.tx_hash) + .map(|s| s.into_raw()) + .unwrap_or(ptr::null_mut()); + + unsafe { + (*out_result).tx_hash = tx_hash; + (*out_result).success = true; + } + WalletFfiError::Success + } + Ok(Err(e)) => { + set_last_error(format!("Transfer failed: {:?}", e)); + unsafe { + (*out_result).tx_hash = ptr::null_mut(); + (*out_result).success = false; + } + match e { + ExecutionFailureKind::InsufficientFundsError => WalletFfiError::InsufficientFunds, + ExecutionFailureKind::KeyNotFoundError => WalletFfiError::KeyNotFound, + ExecutionFailureKind::SequencerError => WalletFfiError::NetworkError, + ExecutionFailureKind::SequencerClientError(_) => WalletFfiError::NetworkError, + _ => WalletFfiError::InternalError, + } + } + Err(e) => e, + } +} + +/// Register a public account on the network. +/// +/// This initializes a public account on the blockchain. The account must be +/// owned by this wallet. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// - `account_id`: Account ID to register +/// - `out_result`: Output pointer for registration result +/// +/// # Returns +/// - `Success` if the registration was submitted successfully +/// - Error code on failure +/// +/// # Memory +/// The result must be freed with `wallet_ffi_free_transfer_result()`. +#[no_mangle] +pub extern "C" fn wallet_ffi_register_public_account( + handle: *mut WalletHandle, + account_id: *const FfiBytes32, + out_result: *mut FfiTransferResult, +) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + if account_id.is_null() || out_result.is_null() { + set_last_error("Null pointer argument"); + return WalletFfiError::NullPointer; + } + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + let account_id = AccountId::new(unsafe { (*account_id).data }); + + let transfer = NativeTokenTransfer(&wallet); + + match block_on(transfer.register_account(account_id)) { + Ok(Ok(response)) => { + let tx_hash = CString::new(response.tx_hash) + .map(|s| s.into_raw()) + .unwrap_or(ptr::null_mut()); + + unsafe { + (*out_result).tx_hash = tx_hash; + (*out_result).success = true; + } + WalletFfiError::Success + } + Ok(Err(e)) => { + set_last_error(format!("Registration failed: {:?}", e)); + unsafe { + (*out_result).tx_hash = ptr::null_mut(); + (*out_result).success = false; + } + match e { + ExecutionFailureKind::KeyNotFoundError => WalletFfiError::KeyNotFound, + ExecutionFailureKind::SequencerError => WalletFfiError::NetworkError, + ExecutionFailureKind::SequencerClientError(_) => WalletFfiError::NetworkError, + _ => WalletFfiError::InternalError, + } + } + Err(e) => e, + } +} + +/// Free a transfer result returned by `wallet_ffi_transfer_public` or +/// `wallet_ffi_register_public_account`. +/// +/// # Safety +/// The result must be either null or a valid result from a transfer function. +#[no_mangle] +pub extern "C" fn wallet_ffi_free_transfer_result(result: *mut FfiTransferResult) { + if result.is_null() { + return; + } + + unsafe { + let result = &*result; + if !result.tx_hash.is_null() { + drop(CString::from_raw(result.tx_hash)); + } + } +} diff --git a/wallet-ffi/src/types.rs b/wallet-ffi/src/types.rs new file mode 100644 index 00000000..ab199d7c --- /dev/null +++ b/wallet-ffi/src/types.rs @@ -0,0 +1,167 @@ +//! C-compatible type definitions for the FFI layer. + +use std::ffi::c_char; + +/// Opaque pointer to the Wallet instance. +/// +/// This type is never instantiated directly - it's used as an opaque handle +/// to hide the internal wallet structure from C code. +#[repr(C)] +pub struct WalletHandle { + _private: [u8; 0], +} + +/// 32-byte array type for AccountId, keys, hashes, etc. +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct FfiBytes32 { + pub data: [u8; 32], +} + +/// Program ID - 8 u32 values (32 bytes total). +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct FfiProgramId { + pub data: [u32; 8], +} + +/// Account data structure - C-compatible version of nssa Account. +/// +/// Note: `balance` and `nonce` are u128 values split into lo/hi u64 parts +/// since C doesn't have native u128 support. +#[repr(C)] +pub struct FfiAccount { + pub program_owner: FfiProgramId, + /// Lower 64 bits of balance (u128) + pub balance_lo: u64, + /// Upper 64 bits of balance (u128) + pub balance_hi: u64, + /// Pointer to account data bytes + pub data: *const u8, + /// Length of account data + pub data_len: usize, + /// Lower 64 bits of nonce (u128) + pub nonce_lo: u64, + /// Upper 64 bits of nonce (u128) + pub nonce_hi: u64, +} + +impl Default for FfiAccount { + fn default() -> Self { + Self { + program_owner: FfiProgramId::default(), + balance_lo: 0, + balance_hi: 0, + data: std::ptr::null(), + data_len: 0, + nonce_lo: 0, + nonce_hi: 0, + } + } +} + +/// Public keys for a private account (safe to expose). +#[repr(C)] +pub struct FfiPrivateAccountKeys { + /// Nullifier public key (32 bytes) + pub nullifier_public_key: FfiBytes32, + /// Incoming viewing public key (compressed secp256k1 point) + pub incoming_viewing_public_key: *const u8, + /// Length of incoming viewing public key (typically 33 bytes) + pub incoming_viewing_public_key_len: usize, +} + +impl Default for FfiPrivateAccountKeys { + fn default() -> Self { + Self { + nullifier_public_key: FfiBytes32::default(), + incoming_viewing_public_key: std::ptr::null(), + incoming_viewing_public_key_len: 0, + } + } +} + +/// Public key info for a public account. +#[repr(C)] +#[derive(Clone, Copy, Default)] +pub struct FfiPublicAccountKey { + pub public_key: FfiBytes32, +} + +/// Single entry in the account list. +#[repr(C)] +#[derive(Clone, Copy)] +pub struct FfiAccountListEntry { + pub account_id: FfiBytes32, + pub is_public: bool, +} + +/// List of accounts returned by wallet_ffi_list_accounts. +#[repr(C)] +pub struct FfiAccountList { + pub entries: *mut FfiAccountListEntry, + pub count: usize, +} + +impl Default for FfiAccountList { + fn default() -> Self { + Self { + entries: std::ptr::null_mut(), + count: 0, + } + } +} + +/// Result of a transfer operation. +#[repr(C)] +pub struct FfiTransferResult { + /// Transaction hash (null-terminated string, or null on failure) + pub tx_hash: *mut c_char, + /// Whether the transfer succeeded + pub success: bool, +} + +impl Default for FfiTransferResult { + fn default() -> Self { + Self { + tx_hash: std::ptr::null_mut(), + success: false, + } + } +} + +// Helper functions to convert between Rust and FFI types + +impl FfiBytes32 { + /// Create from a 32-byte array. + pub fn from_bytes(bytes: [u8; 32]) -> Self { + Self { data: bytes } + } + + /// Create from an AccountId. + pub fn from_account_id(id: &nssa::AccountId) -> Self { + Self { data: *id.value() } + } +} + +impl From<&nssa::AccountId> for FfiBytes32 { + fn from(id: &nssa::AccountId) -> Self { + Self::from_account_id(id) + } +} + +impl From for nssa::AccountId { + fn from(bytes: FfiBytes32) -> Self { + nssa::AccountId::new(bytes.data) + } +} + +/// Helper to split a u128 into lo/hi u64 parts. +pub fn split_u128(value: u128) -> (u64, u64) { + (value as u64, (value >> 64) as u64) +} + +/// Helper to combine lo/hi u64 parts into a u128. +pub fn combine_u128(lo: u64, hi: u64) -> u128 { + (hi as u128) << 64 | (lo as u128) +} diff --git a/wallet-ffi/src/wallet.rs b/wallet-ffi/src/wallet.rs new file mode 100644 index 00000000..151bda94 --- /dev/null +++ b/wallet-ffi/src/wallet.rs @@ -0,0 +1,264 @@ +//! Wallet lifecycle management functions. + +use std::ffi::{c_char, CStr}; +use std::path::PathBuf; +use std::ptr; +use std::sync::Mutex; + +use wallet::WalletCore; + +use crate::block_on; +use crate::error::{set_last_error, WalletFfiError}; +use crate::types::WalletHandle; + +/// Internal wrapper around WalletCore with mutex for thread safety. +pub(crate) struct WalletWrapper { + pub core: Mutex, +} + +/// Helper to get the wallet wrapper from an opaque handle. +pub(crate) fn get_wallet(handle: *mut WalletHandle) -> Result<&'static WalletWrapper, WalletFfiError> { + if handle.is_null() { + set_last_error("Null wallet handle"); + return Err(WalletFfiError::NullPointer); + } + Ok(unsafe { &*(handle as *mut WalletWrapper) }) +} + +/// Helper to get a mutable reference to the wallet wrapper. +#[allow(dead_code)] +pub(crate) fn get_wallet_mut(handle: *mut WalletHandle) -> Result<&'static mut WalletWrapper, WalletFfiError> { + if handle.is_null() { + set_last_error("Null wallet handle"); + return Err(WalletFfiError::NullPointer); + } + Ok(unsafe { &mut *(handle as *mut WalletWrapper) }) +} + +/// Helper to convert a C string to a Rust PathBuf. +fn c_str_to_path(ptr: *const c_char, name: &str) -> Result { + if ptr.is_null() { + set_last_error(format!("Null pointer for {}", name)); + return Err(WalletFfiError::NullPointer); + } + + let c_str = unsafe { CStr::from_ptr(ptr) }; + match c_str.to_str() { + Ok(s) => Ok(PathBuf::from(s)), + Err(e) => { + set_last_error(format!("Invalid UTF-8 in {}: {}", name, e)); + Err(WalletFfiError::InvalidUtf8) + } + } +} + +/// Helper to convert a C string to a Rust String. +fn c_str_to_string(ptr: *const c_char, name: &str) -> Result { + if ptr.is_null() { + set_last_error(format!("Null pointer for {}", name)); + return Err(WalletFfiError::NullPointer); + } + + let c_str = unsafe { CStr::from_ptr(ptr) }; + match c_str.to_str() { + Ok(s) => Ok(s.to_string()), + Err(e) => { + set_last_error(format!("Invalid UTF-8 in {}: {}", name, e)); + Err(WalletFfiError::InvalidUtf8) + } + } +} + +/// Create a new wallet with fresh storage. +/// +/// This initializes a new wallet with a new seed derived from the password. +/// Use this for first-time wallet creation. +/// +/// # Parameters +/// - `config_path`: Path to the wallet configuration file (JSON) +/// - `storage_path`: Path where wallet data will be stored +/// - `password`: Password for encrypting the wallet seed +/// +/// # Returns +/// - Opaque wallet handle on success +/// - Null pointer on error (call `wallet_ffi_get_last_error()` for details) +/// +/// # Safety +/// All string parameters must be valid null-terminated UTF-8 strings. +#[no_mangle] +pub extern "C" fn wallet_ffi_create_new( + config_path: *const c_char, + storage_path: *const c_char, + password: *const c_char, +) -> *mut WalletHandle { + let config_path = match c_str_to_path(config_path, "config_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + let storage_path = match c_str_to_path(storage_path, "storage_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + let password = match c_str_to_string(password, "password") { + Ok(s) => s, + Err(_) => return ptr::null_mut(), + }; + + match WalletCore::new_init_storage(config_path, storage_path, None, password) { + Ok(core) => { + let wrapper = Box::new(WalletWrapper { + core: Mutex::new(core), + }); + Box::into_raw(wrapper) as *mut WalletHandle + } + Err(e) => { + set_last_error(format!("Failed to create wallet: {}", e)); + ptr::null_mut() + } + } +} + +/// Open an existing wallet from storage. +/// +/// This loads a wallet that was previously created with `wallet_ffi_create_new()`. +/// +/// # Parameters +/// - `config_path`: Path to the wallet configuration file (JSON) +/// - `storage_path`: Path where wallet data is stored +/// +/// # Returns +/// - Opaque wallet handle on success +/// - Null pointer on error (call `wallet_ffi_get_last_error()` for details) +/// +/// # Safety +/// All string parameters must be valid null-terminated UTF-8 strings. +#[no_mangle] +pub extern "C" fn wallet_ffi_open( + config_path: *const c_char, + storage_path: *const c_char, +) -> *mut WalletHandle { + let config_path = match c_str_to_path(config_path, "config_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + let storage_path = match c_str_to_path(storage_path, "storage_path") { + Ok(p) => p, + Err(_) => return ptr::null_mut(), + }; + + match WalletCore::new_update_chain(config_path, storage_path, None) { + Ok(core) => { + let wrapper = Box::new(WalletWrapper { + core: Mutex::new(core), + }); + Box::into_raw(wrapper) as *mut WalletHandle + } + Err(e) => { + set_last_error(format!("Failed to open wallet: {}", e)); + ptr::null_mut() + } + } +} + +/// Destroy a wallet handle and free its resources. +/// +/// After calling this function, the handle is invalid and must not be used. +/// +/// # Safety +/// - The handle must be either null or a valid handle from `wallet_ffi_create_new()` +/// or `wallet_ffi_open()`. +/// - The handle must not be used after this call. +#[no_mangle] +pub extern "C" fn wallet_ffi_destroy(handle: *mut WalletHandle) { + if !handle.is_null() { + unsafe { + drop(Box::from_raw(handle as *mut WalletWrapper)); + } + } +} + +/// Save wallet state to persistent storage. +/// +/// This should be called periodically or after important operations to ensure +/// wallet data is persisted to disk. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// +/// # Returns +/// - `Success` on successful save +/// - Error code on failure +#[no_mangle] +pub extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfiError { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(e) => return e, + }; + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return WalletFfiError::InternalError; + } + }; + + match block_on(wallet.store_persistent_data()) { + Ok(Ok(())) => WalletFfiError::Success, + Ok(Err(e)) => { + set_last_error(format!("Failed to save wallet: {}", e)); + WalletFfiError::StorageError + } + Err(e) => e, + } +} + +/// Get the sequencer address from the wallet configuration. +/// +/// # Parameters +/// - `handle`: Valid wallet handle +/// +/// # Returns +/// - Pointer to null-terminated string on success (caller must free with `wallet_ffi_free_string()`) +/// - Null pointer on error +#[no_mangle] +pub extern "C" fn wallet_ffi_get_sequencer_addr(handle: *mut WalletHandle) -> *mut c_char { + let wrapper = match get_wallet(handle) { + Ok(w) => w, + Err(_) => return ptr::null_mut(), + }; + + let wallet = match wrapper.core.lock() { + Ok(w) => w, + Err(e) => { + set_last_error(format!("Failed to lock wallet: {}", e)); + return ptr::null_mut(); + } + }; + + let addr = wallet.config().sequencer_addr.clone(); + + match std::ffi::CString::new(addr) { + Ok(s) => s.into_raw(), + Err(e) => { + set_last_error(format!("Invalid sequencer address: {}", e)); + ptr::null_mut() + } + } +} + +/// Free a string returned by wallet FFI functions. +/// +/// # Safety +/// The pointer must be either null or a valid string returned by an FFI function. +#[no_mangle] +pub extern "C" fn wallet_ffi_free_string(ptr: *mut c_char) { + if !ptr.is_null() { + unsafe { + drop(std::ffi::CString::from_raw(ptr)); + } + } +} diff --git a/wallet-ffi/wallet_ffi.h b/wallet-ffi/wallet_ffi.h new file mode 100644 index 00000000..c1f46653 --- /dev/null +++ b/wallet-ffi/wallet_ffi.h @@ -0,0 +1,646 @@ +/** + * NSSA Wallet FFI Bindings + * + * Thread Safety: All functions are thread-safe. The wallet handle can be + * shared across threads, but operations are serialized internally. + * + * Memory Management: + * - Functions returning pointers allocate memory that must be freed + * - Use the corresponding wallet_ffi_free_* function to free memory + * - Never free memory returned by FFI using standard C free() + * + * Error Handling: + * - Functions return WalletFfiError codes + * - On error, call wallet_ffi_get_last_error() for detailed message + * - The error string must be freed with wallet_ffi_free_error_string() + * + * Initialization: + * 1. Call wallet_ffi_init_runtime() before any other function + * 2. Create wallet with wallet_ffi_create_new() or wallet_ffi_open() + * 3. Destroy wallet with wallet_ffi_destroy() when done + */ + + +#ifndef WALLET_FFI_H +#define WALLET_FFI_H + +/* Generated with cbindgen:0.26.0 */ + +#include +#include +#include +#include + +/** + * Error codes returned by FFI functions. + */ +typedef enum WalletFfiError { + /** + * Operation completed successfully + */ + SUCCESS = 0, + /** + * A null pointer was passed where a valid pointer was expected + */ + NULL_POINTER = 1, + /** + * Invalid UTF-8 string + */ + INVALID_UTF8 = 2, + /** + * Wallet handle is not initialized + */ + WALLET_NOT_INITIALIZED = 3, + /** + * Configuration error + */ + CONFIG_ERROR = 4, + /** + * Storage/persistence error + */ + STORAGE_ERROR = 5, + /** + * Network/RPC error + */ + NETWORK_ERROR = 6, + /** + * Account not found + */ + ACCOUNT_NOT_FOUND = 7, + /** + * Key not found for account + */ + KEY_NOT_FOUND = 8, + /** + * Insufficient funds for operation + */ + INSUFFICIENT_FUNDS = 9, + /** + * Invalid account ID format + */ + INVALID_ACCOUNT_ID = 10, + /** + * Tokio runtime error + */ + RUNTIME_ERROR = 11, + /** + * Password required but not provided + */ + PASSWORD_REQUIRED = 12, + /** + * Block synchronization error + */ + SYNC_ERROR = 13, + /** + * Serialization/deserialization error + */ + SERIALIZATION_ERROR = 14, + /** + * Internal error (catch-all) + */ + INTERNAL_ERROR = 99, +} WalletFfiError; + +/** + * Opaque pointer to the Wallet instance. + * + * This type is never instantiated directly - it's used as an opaque handle + * to hide the internal wallet structure from C code. + */ +typedef struct WalletHandle { + uint8_t _private[0]; +} WalletHandle; + +/** + * 32-byte array type for AccountId, keys, hashes, etc. + */ +typedef struct FfiBytes32 { + uint8_t data[32]; +} FfiBytes32; + +/** + * Single entry in the account list. + */ +typedef struct FfiAccountListEntry { + struct FfiBytes32 account_id; + bool is_public; +} FfiAccountListEntry; + +/** + * List of accounts returned by wallet_ffi_list_accounts. + */ +typedef struct FfiAccountList { + struct FfiAccountListEntry *entries; + uintptr_t count; +} FfiAccountList; + +/** + * Program ID - 8 u32 values (32 bytes total). + */ +typedef struct FfiProgramId { + uint32_t data[8]; +} FfiProgramId; + +/** + * Account data structure - C-compatible version of nssa Account. + * + * Note: `balance` and `nonce` are u128 values split into lo/hi u64 parts + * since C doesn't have native u128 support. + */ +typedef struct FfiAccount { + struct FfiProgramId program_owner; + /** + * Lower 64 bits of balance (u128) + */ + uint64_t balance_lo; + /** + * Upper 64 bits of balance (u128) + */ + uint64_t balance_hi; + /** + * Pointer to account data bytes + */ + const uint8_t *data; + /** + * Length of account data + */ + uintptr_t data_len; + /** + * Lower 64 bits of nonce (u128) + */ + uint64_t nonce_lo; + /** + * Upper 64 bits of nonce (u128) + */ + uint64_t nonce_hi; +} FfiAccount; + +/** + * Public key info for a public account. + */ +typedef struct FfiPublicAccountKey { + struct FfiBytes32 public_key; +} FfiPublicAccountKey; + +/** + * Public keys for a private account (safe to expose). + */ +typedef struct FfiPrivateAccountKeys { + /** + * Nullifier public key (32 bytes) + */ + struct FfiBytes32 nullifier_public_key; + /** + * Incoming viewing public key (compressed secp256k1 point) + */ + const uint8_t *incoming_viewing_public_key; + /** + * Length of incoming viewing public key (typically 33 bytes) + */ + uintptr_t incoming_viewing_public_key_len; +} FfiPrivateAccountKeys; + +/** + * Result of a transfer operation. + */ +typedef struct FfiTransferResult { + /** + * Transaction hash (null-terminated string, or null on failure) + */ + char *tx_hash; + /** + * Whether the transfer succeeded + */ + bool success; +} FfiTransferResult; + +/** + * Initialize the global Tokio runtime. + * + * This must be called before any async operations (like network calls). + * Safe to call multiple times - subsequent calls are no-ops. + * + * # Returns + * - `Success` if the runtime was initialized or already exists + * - `RuntimeError` if runtime creation failed + */ +enum WalletFfiError wallet_ffi_init_runtime(void); + +/** + * Check if the runtime is initialized. + * + * # Returns + * - `true` if the runtime is ready + * - `false` if `wallet_ffi_init_runtime()` hasn't been called yet + */ +bool wallet_ffi_runtime_initialized(void); + +/** + * Create a new public account. + * + * Public accounts use standard transaction signing and are suitable for + * non-private operations. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `out_account_id`: Output pointer for the new account ID (32 bytes) + * + * # Returns + * - `Success` on successful creation + * - Error code on failure + */ +enum WalletFfiError wallet_ffi_create_account_public(struct WalletHandle *handle, + struct FfiBytes32 *out_account_id); + +/** + * Create a new private account. + * + * Private accounts use privacy-preserving transactions with nullifiers + * and commitments. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `out_account_id`: Output pointer for the new account ID (32 bytes) + * + * # Returns + * - `Success` on successful creation + * - Error code on failure + */ +enum WalletFfiError wallet_ffi_create_account_private(struct WalletHandle *handle, + struct FfiBytes32 *out_account_id); + +/** + * List all accounts in the wallet. + * + * Returns both public and private accounts managed by this wallet. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `out_list`: Output pointer for the account list + * + * # Returns + * - `Success` on successful listing + * - Error code on failure + * + * # Memory + * The returned list must be freed with `wallet_ffi_free_account_list()`. + */ +enum WalletFfiError wallet_ffi_list_accounts(struct WalletHandle *handle, + struct FfiAccountList *out_list); + +/** + * Free an account list returned by `wallet_ffi_list_accounts`. + * + * # Safety + * The list must be either null or a valid list returned by `wallet_ffi_list_accounts`. + */ +void wallet_ffi_free_account_list(struct FfiAccountList *list); + +/** + * Get account balance. + * + * For public accounts, this fetches the balance from the network. + * For private accounts, this returns the locally cached balance. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `account_id`: The account ID (32 bytes) + * - `is_public`: Whether this is a public account + * - `out_balance_lo`: Output for lower 64 bits of balance + * - `out_balance_hi`: Output for upper 64 bits of balance + * + * # Returns + * - `Success` on successful query + * - Error code on failure + */ +enum WalletFfiError wallet_ffi_get_balance(struct WalletHandle *handle, + const struct FfiBytes32 *account_id, + bool is_public, + uint64_t *out_balance_lo, + uint64_t *out_balance_hi); + +/** + * Get full public account data from the network. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `account_id`: The account ID (32 bytes) + * - `out_account`: Output pointer for account data + * + * # Returns + * - `Success` on successful query + * - Error code on failure + * + * # Memory + * The account data must be freed with `wallet_ffi_free_account_data()`. + */ +enum WalletFfiError wallet_ffi_get_account_public(struct WalletHandle *handle, + const struct FfiBytes32 *account_id, + struct FfiAccount *out_account); + +/** + * Free account data returned by `wallet_ffi_get_account_public`. + * + * # Safety + * The account must be either null or a valid account returned by + * `wallet_ffi_get_account_public`. + */ +void wallet_ffi_free_account_data(struct FfiAccount *account); + +/** + * Get the last error message. + * + * Returns a pointer to a null-terminated string, or null if no error is set. + * The caller owns the returned string and must free it with + * `wallet_ffi_free_error_string`. + */ +char *wallet_ffi_get_last_error(void); + +/** + * Free an error string returned by `wallet_ffi_get_last_error`. + * + * # Safety + * The pointer must be either null or a valid pointer returned by + * `wallet_ffi_get_last_error`. + */ +void wallet_ffi_free_error_string(char *ptr); + +/** + * Get the public key for a public account. + * + * This returns the public key derived from the account's signing key. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `account_id`: The account ID (32 bytes) + * - `out_public_key`: Output pointer for the public key + * + * # Returns + * - `Success` on successful retrieval + * - `KeyNotFound` if the account's key is not in this wallet + * - Error code on other failures + */ +enum WalletFfiError wallet_ffi_get_public_account_key(struct WalletHandle *handle, + const struct FfiBytes32 *account_id, + struct FfiPublicAccountKey *out_public_key); + +/** + * Get keys for a private account. + * + * Returns the nullifier public key (NPK) and incoming viewing public key (IPK) + * for the specified private account. These keys are safe to share publicly. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `account_id`: The account ID (32 bytes) + * - `out_keys`: Output pointer for the key data + * + * # Returns + * - `Success` on successful retrieval + * - `AccountNotFound` if the private account is not in this wallet + * - Error code on other failures + * + * # Memory + * The keys structure must be freed with `wallet_ffi_free_private_account_keys()`. + */ +enum WalletFfiError wallet_ffi_get_private_account_keys(struct WalletHandle *handle, + const struct FfiBytes32 *account_id, + struct FfiPrivateAccountKeys *out_keys); + +/** + * Free private account keys returned by `wallet_ffi_get_private_account_keys`. + * + * # Safety + * The keys must be either null or valid keys returned by + * `wallet_ffi_get_private_account_keys`. + */ +void wallet_ffi_free_private_account_keys(struct FfiPrivateAccountKeys *keys); + +/** + * Convert an account ID to a Base58 string. + * + * # Parameters + * - `account_id`: The account ID (32 bytes) + * + * # Returns + * - Pointer to null-terminated Base58 string on success + * - Null pointer on error + * + * # Memory + * The returned string must be freed with `wallet_ffi_free_string()`. + */ +char *wallet_ffi_account_id_to_base58(const struct FfiBytes32 *account_id); + +/** + * Parse a Base58 string into an account ID. + * + * # Parameters + * - `base58_str`: Null-terminated Base58 string + * - `out_account_id`: Output pointer for the account ID (32 bytes) + * + * # Returns + * - `Success` on successful parsing + * - `InvalidAccountId` if the string is not valid Base58 + * - Error code on other failures + */ +enum WalletFfiError wallet_ffi_account_id_from_base58(const char *base58_str, + struct FfiBytes32 *out_account_id); + +/** + * Synchronize private accounts to a specific block. + * + * This scans the blockchain from the last synced block to the specified block, + * updating private account balances based on any relevant transactions. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `block_id`: Target block number to sync to + * + * # Returns + * - `Success` if synchronization completed + * - `SyncError` if synchronization failed + * - Error code on other failures + * + * # Note + * This operation can take a while for large block ranges. The wallet + * internally uses a progress bar which may output to stdout. + */ +enum WalletFfiError wallet_ffi_sync_to_block(struct WalletHandle *handle, uint64_t block_id); + +/** + * Get the last synced block number. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `out_block_id`: Output pointer for the block number + * + * # Returns + * - `Success` on success + * - Error code on failure + */ +enum WalletFfiError wallet_ffi_get_last_synced_block(struct WalletHandle *handle, + uint64_t *out_block_id); + +/** + * Get the current block height from the sequencer. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `out_block_height`: Output pointer for the current block height + * + * # Returns + * - `Success` on success + * - `NetworkError` if the sequencer is unreachable + * - Error code on other failures + */ +enum WalletFfiError wallet_ffi_get_current_block_height(struct WalletHandle *handle, + uint64_t *out_block_height); + +/** + * Send a public token transfer. + * + * Transfers tokens from one public account to another on the network. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `from`: Source account ID (must be owned by this wallet) + * - `to`: Destination account ID + * - `amount_lo`: Lower 64 bits of amount to transfer + * - `amount_hi`: Upper 64 bits of amount to transfer + * - `out_result`: Output pointer for transfer result + * + * # Returns + * - `Success` if the transfer was submitted successfully + * - `InsufficientFunds` if the source account doesn't have enough balance + * - `KeyNotFound` if the source account's signing key is not in this wallet + * - Error code on other failures + * + * # Memory + * The result must be freed with `wallet_ffi_free_transfer_result()`. + */ +enum WalletFfiError wallet_ffi_transfer_public(struct WalletHandle *handle, + const struct FfiBytes32 *from, + const struct FfiBytes32 *to, + uint64_t amount_lo, + uint64_t amount_hi, + struct FfiTransferResult *out_result); + +/** + * Register a public account on the network. + * + * This initializes a public account on the blockchain. The account must be + * owned by this wallet. + * + * # Parameters + * - `handle`: Valid wallet handle + * - `account_id`: Account ID to register + * - `out_result`: Output pointer for registration result + * + * # Returns + * - `Success` if the registration was submitted successfully + * - Error code on failure + * + * # Memory + * The result must be freed with `wallet_ffi_free_transfer_result()`. + */ +enum WalletFfiError wallet_ffi_register_public_account(struct WalletHandle *handle, + const struct FfiBytes32 *account_id, + struct FfiTransferResult *out_result); + +/** + * Free a transfer result returned by `wallet_ffi_transfer_public` or + * `wallet_ffi_register_public_account`. + * + * # Safety + * The result must be either null or a valid result from a transfer function. + */ +void wallet_ffi_free_transfer_result(struct FfiTransferResult *result); + +/** + * Create a new wallet with fresh storage. + * + * This initializes a new wallet with a new seed derived from the password. + * Use this for first-time wallet creation. + * + * # Parameters + * - `config_path`: Path to the wallet configuration file (JSON) + * - `storage_path`: Path where wallet data will be stored + * - `password`: Password for encrypting the wallet seed + * + * # Returns + * - Opaque wallet handle on success + * - Null pointer on error (call `wallet_ffi_get_last_error()` for details) + * + * # Safety + * All string parameters must be valid null-terminated UTF-8 strings. + */ +struct WalletHandle *wallet_ffi_create_new(const char *config_path, + const char *storage_path, + const char *password); + +/** + * Open an existing wallet from storage. + * + * This loads a wallet that was previously created with `wallet_ffi_create_new()`. + * + * # Parameters + * - `config_path`: Path to the wallet configuration file (JSON) + * - `storage_path`: Path where wallet data is stored + * + * # Returns + * - Opaque wallet handle on success + * - Null pointer on error (call `wallet_ffi_get_last_error()` for details) + * + * # Safety + * All string parameters must be valid null-terminated UTF-8 strings. + */ +struct WalletHandle *wallet_ffi_open(const char *config_path, const char *storage_path); + +/** + * Destroy a wallet handle and free its resources. + * + * After calling this function, the handle is invalid and must not be used. + * + * # Safety + * - The handle must be either null or a valid handle from `wallet_ffi_create_new()` + * or `wallet_ffi_open()`. + * - The handle must not be used after this call. + */ +void wallet_ffi_destroy(struct WalletHandle *handle); + +/** + * Save wallet state to persistent storage. + * + * This should be called periodically or after important operations to ensure + * wallet data is persisted to disk. + * + * # Parameters + * - `handle`: Valid wallet handle + * + * # Returns + * - `Success` on successful save + * - Error code on failure + */ +enum WalletFfiError wallet_ffi_save(struct WalletHandle *handle); + +/** + * Get the sequencer address from the wallet configuration. + * + * # Parameters + * - `handle`: Valid wallet handle + * + * # Returns + * - Pointer to null-terminated string on success (caller must free with `wallet_ffi_free_string()`) + * - Null pointer on error + */ +char *wallet_ffi_get_sequencer_addr(struct WalletHandle *handle); + +/** + * Free a string returned by wallet FFI functions. + * + * # Safety + * The pointer must be either null or a valid string returned by an FFI function. + */ +void wallet_ffi_free_string(char *ptr); + +#endif /* WALLET_FFI_H */ From ec6caee2dc792f81551b8dc00569a77581abb8b0 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 21 Jan 2026 15:38:50 +0100 Subject: [PATCH 02/25] Missing fmt --- wallet-ffi/build.rs | 4 ++-- wallet-ffi/src/keys.rs | 4 +--- wallet-ffi/src/transfer.rs | 2 +- wallet-ffi/src/wallet.rs | 8 ++++++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/wallet-ffi/build.rs b/wallet-ffi/build.rs index 2d1b0cca..63ee0d9e 100644 --- a/wallet-ffi/build.rs +++ b/wallet-ffi/build.rs @@ -1,8 +1,8 @@ fn main() { let crate_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap(); - let config = cbindgen::Config::from_file("cbindgen.toml") - .expect("Unable to read cbindgen.toml"); + let config = + cbindgen::Config::from_file("cbindgen.toml").expect("Unable to read cbindgen.toml"); cbindgen::Builder::new() .with_crate(crate_dir) diff --git a/wallet-ffi/src/keys.rs b/wallet-ffi/src/keys.rs index d4a29e11..779dbce1 100644 --- a/wallet-ffi/src/keys.rs +++ b/wallet-ffi/src/keys.rs @@ -147,9 +147,7 @@ pub extern "C" fn wallet_ffi_free_private_account_keys(keys: *mut FfiPrivateAcco unsafe { let keys = &*keys; - if !keys.incoming_viewing_public_key.is_null() - && keys.incoming_viewing_public_key_len > 0 - { + if !keys.incoming_viewing_public_key.is_null() && keys.incoming_viewing_public_key_len > 0 { let slice = std::slice::from_raw_parts_mut( keys.incoming_viewing_public_key as *mut u8, keys.incoming_viewing_public_key_len, diff --git a/wallet-ffi/src/transfer.rs b/wallet-ffi/src/transfer.rs index d52ee9a8..3c0c8edb 100644 --- a/wallet-ffi/src/transfer.rs +++ b/wallet-ffi/src/transfer.rs @@ -1,6 +1,6 @@ //! Token transfer functions. -use std::ffi::{CString, c_ulonglong}; +use std::ffi::{c_ulonglong, CString}; use std::ptr; use common::error::ExecutionFailureKind; diff --git a/wallet-ffi/src/wallet.rs b/wallet-ffi/src/wallet.rs index 151bda94..7c70e19d 100644 --- a/wallet-ffi/src/wallet.rs +++ b/wallet-ffi/src/wallet.rs @@ -17,7 +17,9 @@ pub(crate) struct WalletWrapper { } /// Helper to get the wallet wrapper from an opaque handle. -pub(crate) fn get_wallet(handle: *mut WalletHandle) -> Result<&'static WalletWrapper, WalletFfiError> { +pub(crate) fn get_wallet( + handle: *mut WalletHandle, +) -> Result<&'static WalletWrapper, WalletFfiError> { if handle.is_null() { set_last_error("Null wallet handle"); return Err(WalletFfiError::NullPointer); @@ -27,7 +29,9 @@ pub(crate) fn get_wallet(handle: *mut WalletHandle) -> Result<&'static WalletWra /// Helper to get a mutable reference to the wallet wrapper. #[allow(dead_code)] -pub(crate) fn get_wallet_mut(handle: *mut WalletHandle) -> Result<&'static mut WalletWrapper, WalletFfiError> { +pub(crate) fn get_wallet_mut( + handle: *mut WalletHandle, +) -> Result<&'static mut WalletWrapper, WalletFfiError> { if handle.is_null() { set_last_error("Null wallet handle"); return Err(WalletFfiError::NullPointer); From 6d883d5528737ec10a7a3c440d9417af810d748c Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Jan 2026 10:15:23 +0100 Subject: [PATCH 03/25] Use bytearray instead of hi/lo for u128 --- wallet-ffi/src/account.rs | 24 +++++++----------------- wallet-ffi/src/transfer.rs | 14 ++++++-------- wallet-ffi/src/types.rs | 31 ++++++++----------------------- wallet-ffi/wallet_ffi.h | 32 ++++++++++---------------------- 4 files changed, 31 insertions(+), 70 deletions(-) diff --git a/wallet-ffi/src/account.rs b/wallet-ffi/src/account.rs index 53abb54f..db668e75 100644 --- a/wallet-ffi/src/account.rs +++ b/wallet-ffi/src/account.rs @@ -7,8 +7,7 @@ use nssa::AccountId; use crate::block_on; use crate::error::{set_last_error, WalletFfiError}; use crate::types::{ - split_u128, FfiAccount, FfiAccountList, FfiAccountListEntry, FfiBytes32, FfiProgramId, - WalletHandle, + FfiAccount, FfiAccountList, FfiAccountListEntry, FfiBytes32, FfiProgramId, WalletHandle, }; use crate::wallet::get_wallet; @@ -220,8 +219,7 @@ pub extern "C" fn wallet_ffi_free_account_list(list: *mut FfiAccountList) { /// - `handle`: Valid wallet handle /// - `account_id`: The account ID (32 bytes) /// - `is_public`: Whether this is a public account -/// - `out_balance_lo`: Output for lower 64 bits of balance -/// - `out_balance_hi`: Output for upper 64 bits of balance +/// - `out_balance`: Output for balance as little-endian [u8; 16] /// /// # Returns /// - `Success` on successful query @@ -231,15 +229,14 @@ pub extern "C" fn wallet_ffi_get_balance( handle: *mut WalletHandle, account_id: *const FfiBytes32, is_public: bool, - out_balance_lo: *mut u64, - out_balance_hi: *mut u64, + out_balance: *mut [u8; 16], ) -> WalletFfiError { let wrapper = match get_wallet(handle) { Ok(w) => w, Err(e) => return e, }; - if account_id.is_null() || out_balance_lo.is_null() || out_balance_hi.is_null() { + if account_id.is_null() || out_balance.is_null() { set_last_error("Null pointer argument"); return WalletFfiError::NullPointer; } @@ -273,10 +270,8 @@ pub extern "C" fn wallet_ffi_get_balance( } }; - let (lo, hi) = split_u128(balance); unsafe { - *out_balance_lo = lo; - *out_balance_hi = hi; + *out_balance = balance.to_le_bytes(); } WalletFfiError::Success @@ -340,19 +335,14 @@ pub extern "C" fn wallet_ffi_get_account_public( ptr::null() }; - let (balance_lo, balance_hi) = split_u128(account.balance); - let (nonce_lo, nonce_hi) = split_u128(account.nonce); - let program_owner = FfiProgramId { data: account.program_owner, }; unsafe { (*out_account).program_owner = program_owner; - (*out_account).balance_lo = balance_lo; - (*out_account).balance_hi = balance_hi; - (*out_account).nonce_lo = nonce_lo; - (*out_account).nonce_hi = nonce_hi; + (*out_account).balance = account.balance.to_le_bytes(); + (*out_account).nonce = account.nonce.to_le_bytes(); (*out_account).data = data_ptr; (*out_account).data_len = data_len; } diff --git a/wallet-ffi/src/transfer.rs b/wallet-ffi/src/transfer.rs index 3c0c8edb..e11858da 100644 --- a/wallet-ffi/src/transfer.rs +++ b/wallet-ffi/src/transfer.rs @@ -1,6 +1,6 @@ //! Token transfer functions. -use std::ffi::{c_ulonglong, CString}; +use std::ffi::CString; use std::ptr; use common::error::ExecutionFailureKind; @@ -9,7 +9,7 @@ use wallet::program_facades::native_token_transfer::NativeTokenTransfer; use crate::block_on; use crate::error::{set_last_error, WalletFfiError}; -use crate::types::{combine_u128, FfiBytes32, FfiTransferResult, WalletHandle}; +use crate::types::{FfiBytes32, FfiTransferResult, WalletHandle}; use crate::wallet::get_wallet; /// Send a public token transfer. @@ -20,8 +20,7 @@ use crate::wallet::get_wallet; /// - `handle`: Valid wallet handle /// - `from`: Source account ID (must be owned by this wallet) /// - `to`: Destination account ID -/// - `amount_lo`: Lower 64 bits of amount to transfer -/// - `amount_hi`: Upper 64 bits of amount to transfer +/// - `amount`: Amount to transfer as little-endian [u8; 16] /// - `out_result`: Output pointer for transfer result /// /// # Returns @@ -37,8 +36,7 @@ pub extern "C" fn wallet_ffi_transfer_public( handle: *mut WalletHandle, from: *const FfiBytes32, to: *const FfiBytes32, - amount_lo: u64, - amount_hi: u64, + amount: *const [u8; 16], out_result: *mut FfiTransferResult, ) -> WalletFfiError { let wrapper = match get_wallet(handle) { @@ -46,7 +44,7 @@ pub extern "C" fn wallet_ffi_transfer_public( Err(e) => return e, }; - if from.is_null() || to.is_null() || out_result.is_null() { + if from.is_null() || to.is_null() || amount.is_null() || out_result.is_null() { set_last_error("Null pointer argument"); return WalletFfiError::NullPointer; } @@ -61,7 +59,7 @@ pub extern "C" fn wallet_ffi_transfer_public( let from_id = AccountId::new(unsafe { (*from).data }); let to_id = AccountId::new(unsafe { (*to).data }); - let amount = combine_u128(amount_lo, amount_hi); + let amount = u128::from_le_bytes(unsafe { *amount }); let transfer = NativeTokenTransfer(&wallet); diff --git a/wallet-ffi/src/types.rs b/wallet-ffi/src/types.rs index ab199d7c..9bb67f19 100644 --- a/wallet-ffi/src/types.rs +++ b/wallet-ffi/src/types.rs @@ -27,35 +27,29 @@ pub struct FfiProgramId { /// Account data structure - C-compatible version of nssa Account. /// -/// Note: `balance` and `nonce` are u128 values split into lo/hi u64 parts -/// since C doesn't have native u128 support. +/// Note: `balance` and `nonce` are u128 values represented as little-endian +/// byte arrays since C doesn't have native u128 support. #[repr(C)] pub struct FfiAccount { pub program_owner: FfiProgramId, - /// Lower 64 bits of balance (u128) - pub balance_lo: u64, - /// Upper 64 bits of balance (u128) - pub balance_hi: u64, + /// Balance as little-endian [u8; 16] + pub balance: [u8; 16], /// Pointer to account data bytes pub data: *const u8, /// Length of account data pub data_len: usize, - /// Lower 64 bits of nonce (u128) - pub nonce_lo: u64, - /// Upper 64 bits of nonce (u128) - pub nonce_hi: u64, + /// Nonce as little-endian [u8; 16] + pub nonce: [u8; 16], } impl Default for FfiAccount { fn default() -> Self { Self { program_owner: FfiProgramId::default(), - balance_lo: 0, - balance_hi: 0, + balance: [0u8; 16], data: std::ptr::null(), data_len: 0, - nonce_lo: 0, - nonce_hi: 0, + nonce: [0u8; 16], } } } @@ -156,12 +150,3 @@ impl From for nssa::AccountId { } } -/// Helper to split a u128 into lo/hi u64 parts. -pub fn split_u128(value: u128) -> (u64, u64) { - (value as u64, (value >> 64) as u64) -} - -/// Helper to combine lo/hi u64 parts into a u128. -pub fn combine_u128(lo: u64, hi: u64) -> u128 { - (hi as u128) << 64 | (lo as u128) -} diff --git a/wallet-ffi/wallet_ffi.h b/wallet-ffi/wallet_ffi.h index c1f46653..6465ac25 100644 --- a/wallet-ffi/wallet_ffi.h +++ b/wallet-ffi/wallet_ffi.h @@ -144,19 +144,15 @@ typedef struct FfiProgramId { /** * Account data structure - C-compatible version of nssa Account. * - * Note: `balance` and `nonce` are u128 values split into lo/hi u64 parts - * since C doesn't have native u128 support. + * Note: `balance` and `nonce` are u128 values represented as little-endian + * byte arrays since C doesn't have native u128 support. */ typedef struct FfiAccount { struct FfiProgramId program_owner; /** - * Lower 64 bits of balance (u128) + * Balance as little-endian [u8; 16] */ - uint64_t balance_lo; - /** - * Upper 64 bits of balance (u128) - */ - uint64_t balance_hi; + uint8_t balance[16]; /** * Pointer to account data bytes */ @@ -166,13 +162,9 @@ typedef struct FfiAccount { */ uintptr_t data_len; /** - * Lower 64 bits of nonce (u128) + * Nonce as little-endian [u8; 16] */ - uint64_t nonce_lo; - /** - * Upper 64 bits of nonce (u128) - */ - uint64_t nonce_hi; + uint8_t nonce[16]; } FfiAccount; /** @@ -306,8 +298,7 @@ void wallet_ffi_free_account_list(struct FfiAccountList *list); * - `handle`: Valid wallet handle * - `account_id`: The account ID (32 bytes) * - `is_public`: Whether this is a public account - * - `out_balance_lo`: Output for lower 64 bits of balance - * - `out_balance_hi`: Output for upper 64 bits of balance + * - `out_balance`: Output for balance as little-endian [u8; 16] * * # Returns * - `Success` on successful query @@ -316,8 +307,7 @@ void wallet_ffi_free_account_list(struct FfiAccountList *list); enum WalletFfiError wallet_ffi_get_balance(struct WalletHandle *handle, const struct FfiBytes32 *account_id, bool is_public, - uint64_t *out_balance_lo, - uint64_t *out_balance_hi); + uint8_t (*out_balance)[16]); /** * Get full public account data from the network. @@ -505,8 +495,7 @@ enum WalletFfiError wallet_ffi_get_current_block_height(struct WalletHandle *han * - `handle`: Valid wallet handle * - `from`: Source account ID (must be owned by this wallet) * - `to`: Destination account ID - * - `amount_lo`: Lower 64 bits of amount to transfer - * - `amount_hi`: Upper 64 bits of amount to transfer + * - `amount`: Amount to transfer as little-endian [u8; 16] * - `out_result`: Output pointer for transfer result * * # Returns @@ -521,8 +510,7 @@ enum WalletFfiError wallet_ffi_get_current_block_height(struct WalletHandle *han enum WalletFfiError wallet_ffi_transfer_public(struct WalletHandle *handle, const struct FfiBytes32 *from, const struct FfiBytes32 *to, - uint64_t amount_lo, - uint64_t amount_hi, + const uint8_t (*amount)[16], struct FfiTransferResult *out_result); /** From a97066c41dda1917c02f4c77f1c7eb4e8c5d1777 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Jan 2026 10:29:37 +0100 Subject: [PATCH 04/25] Re-structure errors and clippy happy --- wallet-ffi/src/account.rs | 64 ++++++++++++++++++---------- wallet-ffi/src/error.rs | 55 ++---------------------- wallet-ffi/src/keys.rs | 51 ++++++++++++++-------- wallet-ffi/src/lib.rs | 6 +-- wallet-ffi/src/sync.rs | 33 ++++++++++----- wallet-ffi/src/transfer.rs | 32 +++++++++----- wallet-ffi/src/wallet.rs | 44 ++++++++++--------- wallet-ffi/wallet_ffi.h | 86 ++++++++++++++++++++++++++++++-------- 8 files changed, 221 insertions(+), 150 deletions(-) diff --git a/wallet-ffi/src/account.rs b/wallet-ffi/src/account.rs index db668e75..a058acc7 100644 --- a/wallet-ffi/src/account.rs +++ b/wallet-ffi/src/account.rs @@ -5,7 +5,7 @@ use std::ptr; use nssa::AccountId; use crate::block_on; -use crate::error::{set_last_error, WalletFfiError}; +use crate::error::{print_error, WalletFfiError}; use crate::types::{ FfiAccount, FfiAccountList, FfiAccountListEntry, FfiBytes32, FfiProgramId, WalletHandle, }; @@ -23,8 +23,12 @@ use crate::wallet::get_wallet; /// # Returns /// - `Success` on successful creation /// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_account_id` must be a valid pointer to a `FfiBytes32` struct #[no_mangle] -pub extern "C" fn wallet_ffi_create_account_public( +pub unsafe extern "C" fn wallet_ffi_create_account_public( handle: *mut WalletHandle, out_account_id: *mut FfiBytes32, ) -> WalletFfiError { @@ -34,14 +38,14 @@ pub extern "C" fn wallet_ffi_create_account_public( }; if out_account_id.is_null() { - set_last_error("Null output pointer for account_id"); + print_error("Null output pointer for account_id"); return WalletFfiError::NullPointer; } let mut wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -67,8 +71,12 @@ pub extern "C" fn wallet_ffi_create_account_public( /// # Returns /// - `Success` on successful creation /// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_account_id` must be a valid pointer to a `FfiBytes32` struct #[no_mangle] -pub extern "C" fn wallet_ffi_create_account_private( +pub unsafe extern "C" fn wallet_ffi_create_account_private( handle: *mut WalletHandle, out_account_id: *mut FfiBytes32, ) -> WalletFfiError { @@ -78,14 +86,14 @@ pub extern "C" fn wallet_ffi_create_account_private( }; if out_account_id.is_null() { - set_last_error("Null output pointer for account_id"); + print_error("Null output pointer for account_id"); return WalletFfiError::NullPointer; } let mut wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -113,8 +121,12 @@ pub extern "C" fn wallet_ffi_create_account_private( /// /// # Memory /// The returned list must be freed with `wallet_ffi_free_account_list()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_list` must be a valid pointer to a `FfiAccountList` struct #[no_mangle] -pub extern "C" fn wallet_ffi_list_accounts( +pub unsafe extern "C" fn wallet_ffi_list_accounts( handle: *mut WalletHandle, out_list: *mut FfiAccountList, ) -> WalletFfiError { @@ -124,14 +136,14 @@ pub extern "C" fn wallet_ffi_list_accounts( }; if out_list.is_null() { - set_last_error("Null output pointer for account list"); + print_error("Null output pointer for account list"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -196,7 +208,7 @@ pub extern "C" fn wallet_ffi_list_accounts( /// # Safety /// The list must be either null or a valid list returned by `wallet_ffi_list_accounts`. #[no_mangle] -pub extern "C" fn wallet_ffi_free_account_list(list: *mut FfiAccountList) { +pub unsafe extern "C" fn wallet_ffi_free_account_list(list: *mut FfiAccountList) { if list.is_null() { return; } @@ -224,8 +236,13 @@ pub extern "C" fn wallet_ffi_free_account_list(list: *mut FfiAccountList) { /// # Returns /// - `Success` on successful query /// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_balance` must be a valid pointer to a `[u8; 16]` array #[no_mangle] -pub extern "C" fn wallet_ffi_get_balance( +pub unsafe extern "C" fn wallet_ffi_get_balance( handle: *mut WalletHandle, account_id: *const FfiBytes32, is_public: bool, @@ -237,14 +254,14 @@ pub extern "C" fn wallet_ffi_get_balance( }; if account_id.is_null() || out_balance.is_null() { - set_last_error("Null pointer argument"); + print_error("Null pointer argument"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -255,7 +272,7 @@ pub extern "C" fn wallet_ffi_get_balance( match block_on(wallet.get_account_balance(account_id)) { Ok(Ok(b)) => b, Ok(Err(e)) => { - set_last_error(format!("Failed to get balance: {}", e)); + print_error(format!("Failed to get balance: {}", e)); return WalletFfiError::NetworkError; } Err(e) => return e, @@ -264,7 +281,7 @@ pub extern "C" fn wallet_ffi_get_balance( match wallet.get_account_private(&account_id) { Some(account) => account.balance, None => { - set_last_error("Private account not found"); + print_error("Private account not found"); return WalletFfiError::AccountNotFound; } } @@ -290,8 +307,13 @@ pub extern "C" fn wallet_ffi_get_balance( /// /// # Memory /// The account data must be freed with `wallet_ffi_free_account_data()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_account` must be a valid pointer to a `FfiAccount` struct #[no_mangle] -pub extern "C" fn wallet_ffi_get_account_public( +pub unsafe extern "C" fn wallet_ffi_get_account_public( handle: *mut WalletHandle, account_id: *const FfiBytes32, out_account: *mut FfiAccount, @@ -302,14 +324,14 @@ pub extern "C" fn wallet_ffi_get_account_public( }; if account_id.is_null() || out_account.is_null() { - set_last_error("Null pointer argument"); + print_error("Null pointer argument"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -319,7 +341,7 @@ pub extern "C" fn wallet_ffi_get_account_public( let account = match block_on(wallet.get_account_public(account_id)) { Ok(Ok(a)) => a, Ok(Err(e)) => { - set_last_error(format!("Failed to get account: {}", e)); + print_error(format!("Failed to get account: {}", e)); return WalletFfiError::NetworkError; } Err(e) => return e, @@ -356,7 +378,7 @@ pub extern "C" fn wallet_ffi_get_account_public( /// The account must be either null or a valid account returned by /// `wallet_ffi_get_account_public`. #[no_mangle] -pub extern "C" fn wallet_ffi_free_account_data(account: *mut FfiAccount) { +pub unsafe extern "C" fn wallet_ffi_free_account_data(account: *mut FfiAccount) { if account.is_null() { return; } diff --git a/wallet-ffi/src/error.rs b/wallet-ffi/src/error.rs index 46646259..ea366475 100644 --- a/wallet-ffi/src/error.rs +++ b/wallet-ffi/src/error.rs @@ -1,10 +1,6 @@ //! Error handling for the FFI layer. //! -//! Uses numeric error codes with a thread-local last error message. - -use std::cell::RefCell; -use std::ffi::{c_char, CString}; -use std::ptr; +//! Uses numeric error codes with error messages printed to stderr. /// Error codes returned by FFI functions. #[repr(C)] @@ -44,50 +40,7 @@ pub enum WalletFfiError { InternalError = 99, } -// Thread-local storage for the last error message -thread_local! { - static LAST_ERROR: RefCell> = const { RefCell::new(None) }; -} - -/// Set the last error message for the current thread. -pub fn set_last_error(msg: impl Into) { - LAST_ERROR.with(|e| { - *e.borrow_mut() = Some(msg.into()); - }); -} - -/// Clear the last error message. -pub fn clear_last_error() { - LAST_ERROR.with(|e| { - *e.borrow_mut() = None; - }); -} - -/// Get the last error message. -/// -/// Returns a pointer to a null-terminated string, or null if no error is set. -/// The caller owns the returned string and must free it with -/// `wallet_ffi_free_error_string`. -#[no_mangle] -pub extern "C" fn wallet_ffi_get_last_error() -> *mut c_char { - LAST_ERROR.with(|e| match e.borrow_mut().take() { - Some(msg) => CString::new(msg) - .map(|s| s.into_raw()) - .unwrap_or(ptr::null_mut()), - None => ptr::null_mut(), - }) -} - -/// Free an error string returned by `wallet_ffi_get_last_error`. -/// -/// # Safety -/// The pointer must be either null or a valid pointer returned by -/// `wallet_ffi_get_last_error`. -#[no_mangle] -pub extern "C" fn wallet_ffi_free_error_string(ptr: *mut c_char) { - if !ptr.is_null() { - unsafe { - drop(CString::from_raw(ptr)); - } - } +/// Log an error message to stderr. +pub fn print_error(msg: impl Into) { + eprintln!("[wallet-ffi] {}", msg.into()); } diff --git a/wallet-ffi/src/keys.rs b/wallet-ffi/src/keys.rs index 779dbce1..27989c0e 100644 --- a/wallet-ffi/src/keys.rs +++ b/wallet-ffi/src/keys.rs @@ -4,7 +4,7 @@ use std::ptr; use nssa::{AccountId, PublicKey}; -use crate::error::{set_last_error, WalletFfiError}; +use crate::error::{print_error, WalletFfiError}; use crate::types::{FfiBytes32, FfiPrivateAccountKeys, FfiPublicAccountKey, WalletHandle}; use crate::wallet::get_wallet; @@ -21,8 +21,13 @@ use crate::wallet::get_wallet; /// - `Success` on successful retrieval /// - `KeyNotFound` if the account's key is not in this wallet /// - Error code on other failures +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_public_key` must be a valid pointer to a `FfiPublicAccountKey` struct #[no_mangle] -pub extern "C" fn wallet_ffi_get_public_account_key( +pub unsafe extern "C" fn wallet_ffi_get_public_account_key( handle: *mut WalletHandle, account_id: *const FfiBytes32, out_public_key: *mut FfiPublicAccountKey, @@ -33,14 +38,14 @@ pub extern "C" fn wallet_ffi_get_public_account_key( }; if account_id.is_null() || out_public_key.is_null() { - set_last_error("Null pointer argument"); + print_error("Null pointer argument"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -50,7 +55,7 @@ pub extern "C" fn wallet_ffi_get_public_account_key( let private_key = match wallet.get_account_public_signing_key(&account_id) { Some(k) => k, None => { - set_last_error("Public account key not found in wallet"); + print_error("Public account key not found in wallet"); return WalletFfiError::KeyNotFound; } }; @@ -81,8 +86,13 @@ pub extern "C" fn wallet_ffi_get_public_account_key( /// /// # Memory /// The keys structure must be freed with `wallet_ffi_free_private_account_keys()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_keys` must be a valid pointer to a `FfiPrivateAccountKeys` struct #[no_mangle] -pub extern "C" fn wallet_ffi_get_private_account_keys( +pub unsafe extern "C" fn wallet_ffi_get_private_account_keys( handle: *mut WalletHandle, account_id: *const FfiBytes32, out_keys: *mut FfiPrivateAccountKeys, @@ -93,14 +103,14 @@ pub extern "C" fn wallet_ffi_get_private_account_keys( }; if account_id.is_null() || out_keys.is_null() { - set_last_error("Null pointer argument"); + print_error("Null pointer argument"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -110,7 +120,7 @@ pub extern "C" fn wallet_ffi_get_private_account_keys( let (key_chain, _account) = match wallet.storage().user_data.get_private_account(&account_id) { Some(k) => k, None => { - set_last_error("Private account not found in wallet"); + print_error("Private account not found in wallet"); return WalletFfiError::AccountNotFound; } }; @@ -140,7 +150,7 @@ pub extern "C" fn wallet_ffi_get_private_account_keys( /// The keys must be either null or valid keys returned by /// `wallet_ffi_get_private_account_keys`. #[no_mangle] -pub extern "C" fn wallet_ffi_free_private_account_keys(keys: *mut FfiPrivateAccountKeys) { +pub unsafe extern "C" fn wallet_ffi_free_private_account_keys(keys: *mut FfiPrivateAccountKeys) { if keys.is_null() { return; } @@ -168,12 +178,15 @@ pub extern "C" fn wallet_ffi_free_private_account_keys(keys: *mut FfiPrivateAcco /// /// # Memory /// The returned string must be freed with `wallet_ffi_free_string()`. +/// +/// # Safety +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct #[no_mangle] -pub extern "C" fn wallet_ffi_account_id_to_base58( +pub unsafe extern "C" fn wallet_ffi_account_id_to_base58( account_id: *const FfiBytes32, ) -> *mut std::ffi::c_char { if account_id.is_null() { - set_last_error("Null account_id pointer"); + print_error("Null account_id pointer"); return ptr::null_mut(); } @@ -183,7 +196,7 @@ pub extern "C" fn wallet_ffi_account_id_to_base58( match std::ffi::CString::new(base58_str) { Ok(s) => s.into_raw(), Err(e) => { - set_last_error(format!("Failed to create C string: {}", e)); + print_error(format!("Failed to create C string: {}", e)); ptr::null_mut() } } @@ -199,13 +212,17 @@ pub extern "C" fn wallet_ffi_account_id_to_base58( /// - `Success` on successful parsing /// - `InvalidAccountId` if the string is not valid Base58 /// - Error code on other failures +/// +/// # Safety +/// - `base58_str` must be a valid pointer to a null-terminated C string +/// - `out_account_id` must be a valid pointer to a `FfiBytes32` struct #[no_mangle] -pub extern "C" fn wallet_ffi_account_id_from_base58( +pub unsafe extern "C" fn wallet_ffi_account_id_from_base58( base58_str: *const std::ffi::c_char, out_account_id: *mut FfiBytes32, ) -> WalletFfiError { if base58_str.is_null() || out_account_id.is_null() { - set_last_error("Null pointer argument"); + print_error("Null pointer argument"); return WalletFfiError::NullPointer; } @@ -213,7 +230,7 @@ pub extern "C" fn wallet_ffi_account_id_from_base58( let str_slice = match c_str.to_str() { Ok(s) => s, Err(e) => { - set_last_error(format!("Invalid UTF-8: {}", e)); + print_error(format!("Invalid UTF-8: {}", e)); return WalletFfiError::InvalidUtf8; } }; @@ -221,7 +238,7 @@ pub extern "C" fn wallet_ffi_account_id_from_base58( let account_id: AccountId = match str_slice.parse() { Ok(id) => id, Err(e) => { - set_last_error(format!("Invalid Base58 account ID: {}", e)); + print_error(format!("Invalid Base58 account ID: {}", e)); return WalletFfiError::InvalidAccountId; } }; diff --git a/wallet-ffi/src/lib.rs b/wallet-ffi/src/lib.rs index 2b5713b7..093c2f21 100644 --- a/wallet-ffi/src/lib.rs +++ b/wallet-ffi/src/lib.rs @@ -32,7 +32,7 @@ use once_cell::sync::OnceCell; use std::sync::Arc; use tokio::runtime::Runtime; -use crate::error::{set_last_error, WalletFfiError}; +use crate::error::{print_error, WalletFfiError}; // Re-export public types for cbindgen pub use error::WalletFfiError as FfiError; @@ -44,7 +44,7 @@ static RUNTIME: OnceCell> = OnceCell::new(); /// Get a reference to the global runtime. pub(crate) fn get_runtime() -> Result<&'static Arc, WalletFfiError> { RUNTIME.get().ok_or_else(|| { - set_last_error("Runtime not initialized. Call wallet_ffi_init_runtime() first."); + print_error("Runtime not initialized. Call wallet_ffi_init_runtime() first."); WalletFfiError::RuntimeError }) } @@ -75,7 +75,7 @@ pub extern "C" fn wallet_ffi_init_runtime() -> WalletFfiError { match result { Ok(_) => WalletFfiError::Success, Err(e) => { - set_last_error(format!("Failed to initialize runtime: {}", e)); + print_error(format!("Failed to initialize runtime: {}", e)); WalletFfiError::RuntimeError } } diff --git a/wallet-ffi/src/sync.rs b/wallet-ffi/src/sync.rs index b4e9deb8..d1d7d560 100644 --- a/wallet-ffi/src/sync.rs +++ b/wallet-ffi/src/sync.rs @@ -1,7 +1,7 @@ //! Block synchronization functions. use crate::block_on; -use crate::error::{set_last_error, WalletFfiError}; +use crate::error::{print_error, WalletFfiError}; use crate::types::WalletHandle; use crate::wallet::get_wallet; @@ -22,8 +22,11 @@ use crate::wallet::get_wallet; /// # Note /// This operation can take a while for large block ranges. The wallet /// internally uses a progress bar which may output to stdout. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` #[no_mangle] -pub extern "C" fn wallet_ffi_sync_to_block( +pub unsafe extern "C" fn wallet_ffi_sync_to_block( handle: *mut WalletHandle, block_id: u64, ) -> WalletFfiError { @@ -35,7 +38,7 @@ pub extern "C" fn wallet_ffi_sync_to_block( let mut wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -43,7 +46,7 @@ pub extern "C" fn wallet_ffi_sync_to_block( match block_on(wallet.sync_to_block(block_id)) { Ok(Ok(())) => WalletFfiError::Success, Ok(Err(e)) => { - set_last_error(format!("Sync failed: {}", e)); + print_error(format!("Sync failed: {}", e)); WalletFfiError::SyncError } Err(e) => e, @@ -59,8 +62,12 @@ pub extern "C" fn wallet_ffi_sync_to_block( /// # Returns /// - `Success` on success /// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_block_id` must be a valid pointer to a `u64` #[no_mangle] -pub extern "C" fn wallet_ffi_get_last_synced_block( +pub unsafe extern "C" fn wallet_ffi_get_last_synced_block( handle: *mut WalletHandle, out_block_id: *mut u64, ) -> WalletFfiError { @@ -70,14 +77,14 @@ pub extern "C" fn wallet_ffi_get_last_synced_block( }; if out_block_id.is_null() { - set_last_error("Null output pointer"); + print_error("Null output pointer"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -99,8 +106,12 @@ pub extern "C" fn wallet_ffi_get_last_synced_block( /// - `Success` on success /// - `NetworkError` if the sequencer is unreachable /// - Error code on other failures +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `out_block_height` must be a valid pointer to a `u64` #[no_mangle] -pub extern "C" fn wallet_ffi_get_current_block_height( +pub unsafe extern "C" fn wallet_ffi_get_current_block_height( handle: *mut WalletHandle, out_block_height: *mut u64, ) -> WalletFfiError { @@ -110,14 +121,14 @@ pub extern "C" fn wallet_ffi_get_current_block_height( }; if out_block_height.is_null() { - set_last_error("Null output pointer"); + print_error("Null output pointer"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -130,7 +141,7 @@ pub extern "C" fn wallet_ffi_get_current_block_height( WalletFfiError::Success } Ok(Err(e)) => { - set_last_error(format!("Failed to get block height: {:?}", e)); + print_error(format!("Failed to get block height: {:?}", e)); WalletFfiError::NetworkError } Err(e) => e, diff --git a/wallet-ffi/src/transfer.rs b/wallet-ffi/src/transfer.rs index e11858da..c8357dcf 100644 --- a/wallet-ffi/src/transfer.rs +++ b/wallet-ffi/src/transfer.rs @@ -8,7 +8,7 @@ use nssa::AccountId; use wallet::program_facades::native_token_transfer::NativeTokenTransfer; use crate::block_on; -use crate::error::{set_last_error, WalletFfiError}; +use crate::error::{print_error, WalletFfiError}; use crate::types::{FfiBytes32, FfiTransferResult, WalletHandle}; use crate::wallet::get_wallet; @@ -31,8 +31,15 @@ use crate::wallet::get_wallet; /// /// # Memory /// The result must be freed with `wallet_ffi_free_transfer_result()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `from` must be a valid pointer to a `FfiBytes32` struct +/// - `to` must be a valid pointer to a `FfiBytes32` struct +/// - `amount` must be a valid pointer to a `[u8; 16]` array +/// - `out_result` must be a valid pointer to a `FfiTransferResult` struct #[no_mangle] -pub extern "C" fn wallet_ffi_transfer_public( +pub unsafe extern "C" fn wallet_ffi_transfer_public( handle: *mut WalletHandle, from: *const FfiBytes32, to: *const FfiBytes32, @@ -45,14 +52,14 @@ pub extern "C" fn wallet_ffi_transfer_public( }; if from.is_null() || to.is_null() || amount.is_null() || out_result.is_null() { - set_last_error("Null pointer argument"); + print_error("Null pointer argument"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -76,7 +83,7 @@ pub extern "C" fn wallet_ffi_transfer_public( WalletFfiError::Success } Ok(Err(e)) => { - set_last_error(format!("Transfer failed: {:?}", e)); + print_error(format!("Transfer failed: {:?}", e)); unsafe { (*out_result).tx_hash = ptr::null_mut(); (*out_result).success = false; @@ -109,8 +116,13 @@ pub extern "C" fn wallet_ffi_transfer_public( /// /// # Memory /// The result must be freed with `wallet_ffi_free_transfer_result()`. +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` +/// - `account_id` must be a valid pointer to a `FfiBytes32` struct +/// - `out_result` must be a valid pointer to a `FfiTransferResult` struct #[no_mangle] -pub extern "C" fn wallet_ffi_register_public_account( +pub unsafe extern "C" fn wallet_ffi_register_public_account( handle: *mut WalletHandle, account_id: *const FfiBytes32, out_result: *mut FfiTransferResult, @@ -121,14 +133,14 @@ pub extern "C" fn wallet_ffi_register_public_account( }; if account_id.is_null() || out_result.is_null() { - set_last_error("Null pointer argument"); + print_error("Null pointer argument"); return WalletFfiError::NullPointer; } let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -150,7 +162,7 @@ pub extern "C" fn wallet_ffi_register_public_account( WalletFfiError::Success } Ok(Err(e)) => { - set_last_error(format!("Registration failed: {:?}", e)); + print_error(format!("Registration failed: {:?}", e)); unsafe { (*out_result).tx_hash = ptr::null_mut(); (*out_result).success = false; @@ -172,7 +184,7 @@ pub extern "C" fn wallet_ffi_register_public_account( /// # Safety /// The result must be either null or a valid result from a transfer function. #[no_mangle] -pub extern "C" fn wallet_ffi_free_transfer_result(result: *mut FfiTransferResult) { +pub unsafe extern "C" fn wallet_ffi_free_transfer_result(result: *mut FfiTransferResult) { if result.is_null() { return; } diff --git a/wallet-ffi/src/wallet.rs b/wallet-ffi/src/wallet.rs index 7c70e19d..6c17d930 100644 --- a/wallet-ffi/src/wallet.rs +++ b/wallet-ffi/src/wallet.rs @@ -8,7 +8,7 @@ use std::sync::Mutex; use wallet::WalletCore; use crate::block_on; -use crate::error::{set_last_error, WalletFfiError}; +use crate::error::{print_error, WalletFfiError}; use crate::types::WalletHandle; /// Internal wrapper around WalletCore with mutex for thread safety. @@ -21,7 +21,7 @@ pub(crate) fn get_wallet( handle: *mut WalletHandle, ) -> Result<&'static WalletWrapper, WalletFfiError> { if handle.is_null() { - set_last_error("Null wallet handle"); + print_error("Null wallet handle"); return Err(WalletFfiError::NullPointer); } Ok(unsafe { &*(handle as *mut WalletWrapper) }) @@ -33,7 +33,7 @@ pub(crate) fn get_wallet_mut( handle: *mut WalletHandle, ) -> Result<&'static mut WalletWrapper, WalletFfiError> { if handle.is_null() { - set_last_error("Null wallet handle"); + print_error("Null wallet handle"); return Err(WalletFfiError::NullPointer); } Ok(unsafe { &mut *(handle as *mut WalletWrapper) }) @@ -42,7 +42,7 @@ pub(crate) fn get_wallet_mut( /// Helper to convert a C string to a Rust PathBuf. fn c_str_to_path(ptr: *const c_char, name: &str) -> Result { if ptr.is_null() { - set_last_error(format!("Null pointer for {}", name)); + print_error(format!("Null pointer for {}", name)); return Err(WalletFfiError::NullPointer); } @@ -50,7 +50,7 @@ fn c_str_to_path(ptr: *const c_char, name: &str) -> Result Ok(PathBuf::from(s)), Err(e) => { - set_last_error(format!("Invalid UTF-8 in {}: {}", name, e)); + print_error(format!("Invalid UTF-8 in {}: {}", name, e)); Err(WalletFfiError::InvalidUtf8) } } @@ -59,7 +59,7 @@ fn c_str_to_path(ptr: *const c_char, name: &str) -> Result Result { if ptr.is_null() { - set_last_error(format!("Null pointer for {}", name)); + print_error(format!("Null pointer for {}", name)); return Err(WalletFfiError::NullPointer); } @@ -67,7 +67,7 @@ fn c_str_to_string(ptr: *const c_char, name: &str) -> Result Ok(s.to_string()), Err(e) => { - set_last_error(format!("Invalid UTF-8 in {}: {}", name, e)); + print_error(format!("Invalid UTF-8 in {}: {}", name, e)); Err(WalletFfiError::InvalidUtf8) } } @@ -90,7 +90,7 @@ fn c_str_to_string(ptr: *const c_char, name: &str) -> Result { - set_last_error(format!("Failed to create wallet: {}", e)); + print_error(format!("Failed to create wallet: {}", e)); ptr::null_mut() } } @@ -139,7 +139,7 @@ pub extern "C" fn wallet_ffi_create_new( /// # Safety /// All string parameters must be valid null-terminated UTF-8 strings. #[no_mangle] -pub extern "C" fn wallet_ffi_open( +pub unsafe extern "C" fn wallet_ffi_open( config_path: *const c_char, storage_path: *const c_char, ) -> *mut WalletHandle { @@ -161,7 +161,7 @@ pub extern "C" fn wallet_ffi_open( Box::into_raw(wrapper) as *mut WalletHandle } Err(e) => { - set_last_error(format!("Failed to open wallet: {}", e)); + print_error(format!("Failed to open wallet: {}", e)); ptr::null_mut() } } @@ -176,7 +176,7 @@ pub extern "C" fn wallet_ffi_open( /// or `wallet_ffi_open()`. /// - The handle must not be used after this call. #[no_mangle] -pub extern "C" fn wallet_ffi_destroy(handle: *mut WalletHandle) { +pub unsafe extern "C" fn wallet_ffi_destroy(handle: *mut WalletHandle) { if !handle.is_null() { unsafe { drop(Box::from_raw(handle as *mut WalletWrapper)); @@ -195,8 +195,11 @@ pub extern "C" fn wallet_ffi_destroy(handle: *mut WalletHandle) { /// # Returns /// - `Success` on successful save /// - Error code on failure +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` #[no_mangle] -pub extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfiError { +pub unsafe extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfiError { let wrapper = match get_wallet(handle) { Ok(w) => w, Err(e) => return e, @@ -205,7 +208,7 @@ pub extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfiError { let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return WalletFfiError::InternalError; } }; @@ -213,7 +216,7 @@ pub extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfiError { match block_on(wallet.store_persistent_data()) { Ok(Ok(())) => WalletFfiError::Success, Ok(Err(e)) => { - set_last_error(format!("Failed to save wallet: {}", e)); + print_error(format!("Failed to save wallet: {}", e)); WalletFfiError::StorageError } Err(e) => e, @@ -228,8 +231,11 @@ pub extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfiError { /// # Returns /// - Pointer to null-terminated string on success (caller must free with `wallet_ffi_free_string()`) /// - Null pointer on error +/// +/// # Safety +/// - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` #[no_mangle] -pub extern "C" fn wallet_ffi_get_sequencer_addr(handle: *mut WalletHandle) -> *mut c_char { +pub unsafe extern "C" fn wallet_ffi_get_sequencer_addr(handle: *mut WalletHandle) -> *mut c_char { let wrapper = match get_wallet(handle) { Ok(w) => w, Err(_) => return ptr::null_mut(), @@ -238,7 +244,7 @@ pub extern "C" fn wallet_ffi_get_sequencer_addr(handle: *mut WalletHandle) -> *m let wallet = match wrapper.core.lock() { Ok(w) => w, Err(e) => { - set_last_error(format!("Failed to lock wallet: {}", e)); + print_error(format!("Failed to lock wallet: {}", e)); return ptr::null_mut(); } }; @@ -248,7 +254,7 @@ pub extern "C" fn wallet_ffi_get_sequencer_addr(handle: *mut WalletHandle) -> *m match std::ffi::CString::new(addr) { Ok(s) => s.into_raw(), Err(e) => { - set_last_error(format!("Invalid sequencer address: {}", e)); + print_error(format!("Invalid sequencer address: {}", e)); ptr::null_mut() } } @@ -259,7 +265,7 @@ pub extern "C" fn wallet_ffi_get_sequencer_addr(handle: *mut WalletHandle) -> *m /// # Safety /// The pointer must be either null or a valid string returned by an FFI function. #[no_mangle] -pub extern "C" fn wallet_ffi_free_string(ptr: *mut c_char) { +pub unsafe extern "C" fn wallet_ffi_free_string(ptr: *mut c_char) { if !ptr.is_null() { unsafe { drop(std::ffi::CString::from_raw(ptr)); diff --git a/wallet-ffi/wallet_ffi.h b/wallet-ffi/wallet_ffi.h index 6465ac25..7ae524ba 100644 --- a/wallet-ffi/wallet_ffi.h +++ b/wallet-ffi/wallet_ffi.h @@ -240,6 +240,10 @@ bool wallet_ffi_runtime_initialized(void); * # Returns * - `Success` on successful creation * - Error code on failure + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `out_account_id` must be a valid pointer to a `FfiBytes32` struct */ enum WalletFfiError wallet_ffi_create_account_public(struct WalletHandle *handle, struct FfiBytes32 *out_account_id); @@ -257,6 +261,10 @@ enum WalletFfiError wallet_ffi_create_account_public(struct WalletHandle *handle * # Returns * - `Success` on successful creation * - Error code on failure + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `out_account_id` must be a valid pointer to a `FfiBytes32` struct */ enum WalletFfiError wallet_ffi_create_account_private(struct WalletHandle *handle, struct FfiBytes32 *out_account_id); @@ -276,6 +284,10 @@ enum WalletFfiError wallet_ffi_create_account_private(struct WalletHandle *handl * * # Memory * The returned list must be freed with `wallet_ffi_free_account_list()`. + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `out_list` must be a valid pointer to a `FfiAccountList` struct */ enum WalletFfiError wallet_ffi_list_accounts(struct WalletHandle *handle, struct FfiAccountList *out_list); @@ -303,6 +315,11 @@ void wallet_ffi_free_account_list(struct FfiAccountList *list); * # Returns * - `Success` on successful query * - Error code on failure + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `account_id` must be a valid pointer to a `FfiBytes32` struct + * - `out_balance` must be a valid pointer to a `[u8; 16]` array */ enum WalletFfiError wallet_ffi_get_balance(struct WalletHandle *handle, const struct FfiBytes32 *account_id, @@ -323,6 +340,11 @@ enum WalletFfiError wallet_ffi_get_balance(struct WalletHandle *handle, * * # Memory * The account data must be freed with `wallet_ffi_free_account_data()`. + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `account_id` must be a valid pointer to a `FfiBytes32` struct + * - `out_account` must be a valid pointer to a `FfiAccount` struct */ enum WalletFfiError wallet_ffi_get_account_public(struct WalletHandle *handle, const struct FfiBytes32 *account_id, @@ -337,24 +359,6 @@ enum WalletFfiError wallet_ffi_get_account_public(struct WalletHandle *handle, */ void wallet_ffi_free_account_data(struct FfiAccount *account); -/** - * Get the last error message. - * - * Returns a pointer to a null-terminated string, or null if no error is set. - * The caller owns the returned string and must free it with - * `wallet_ffi_free_error_string`. - */ -char *wallet_ffi_get_last_error(void); - -/** - * Free an error string returned by `wallet_ffi_get_last_error`. - * - * # Safety - * The pointer must be either null or a valid pointer returned by - * `wallet_ffi_get_last_error`. - */ -void wallet_ffi_free_error_string(char *ptr); - /** * Get the public key for a public account. * @@ -369,6 +373,11 @@ void wallet_ffi_free_error_string(char *ptr); * - `Success` on successful retrieval * - `KeyNotFound` if the account's key is not in this wallet * - Error code on other failures + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `account_id` must be a valid pointer to a `FfiBytes32` struct + * - `out_public_key` must be a valid pointer to a `FfiPublicAccountKey` struct */ enum WalletFfiError wallet_ffi_get_public_account_key(struct WalletHandle *handle, const struct FfiBytes32 *account_id, @@ -392,6 +401,11 @@ enum WalletFfiError wallet_ffi_get_public_account_key(struct WalletHandle *handl * * # Memory * The keys structure must be freed with `wallet_ffi_free_private_account_keys()`. + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `account_id` must be a valid pointer to a `FfiBytes32` struct + * - `out_keys` must be a valid pointer to a `FfiPrivateAccountKeys` struct */ enum WalletFfiError wallet_ffi_get_private_account_keys(struct WalletHandle *handle, const struct FfiBytes32 *account_id, @@ -418,6 +432,9 @@ void wallet_ffi_free_private_account_keys(struct FfiPrivateAccountKeys *keys); * * # Memory * The returned string must be freed with `wallet_ffi_free_string()`. + * + * # Safety + * - `account_id` must be a valid pointer to a `FfiBytes32` struct */ char *wallet_ffi_account_id_to_base58(const struct FfiBytes32 *account_id); @@ -432,6 +449,10 @@ char *wallet_ffi_account_id_to_base58(const struct FfiBytes32 *account_id); * - `Success` on successful parsing * - `InvalidAccountId` if the string is not valid Base58 * - Error code on other failures + * + * # Safety + * - `base58_str` must be a valid pointer to a null-terminated C string + * - `out_account_id` must be a valid pointer to a `FfiBytes32` struct */ enum WalletFfiError wallet_ffi_account_id_from_base58(const char *base58_str, struct FfiBytes32 *out_account_id); @@ -454,6 +475,9 @@ enum WalletFfiError wallet_ffi_account_id_from_base58(const char *base58_str, * # Note * This operation can take a while for large block ranges. The wallet * internally uses a progress bar which may output to stdout. + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` */ enum WalletFfiError wallet_ffi_sync_to_block(struct WalletHandle *handle, uint64_t block_id); @@ -467,6 +491,10 @@ enum WalletFfiError wallet_ffi_sync_to_block(struct WalletHandle *handle, uint64 * # Returns * - `Success` on success * - Error code on failure + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `out_block_id` must be a valid pointer to a `u64` */ enum WalletFfiError wallet_ffi_get_last_synced_block(struct WalletHandle *handle, uint64_t *out_block_id); @@ -482,6 +510,10 @@ enum WalletFfiError wallet_ffi_get_last_synced_block(struct WalletHandle *handle * - `Success` on success * - `NetworkError` if the sequencer is unreachable * - Error code on other failures + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `out_block_height` must be a valid pointer to a `u64` */ enum WalletFfiError wallet_ffi_get_current_block_height(struct WalletHandle *handle, uint64_t *out_block_height); @@ -506,6 +538,13 @@ enum WalletFfiError wallet_ffi_get_current_block_height(struct WalletHandle *han * * # Memory * The result must be freed with `wallet_ffi_free_transfer_result()`. + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `from` must be a valid pointer to a `FfiBytes32` struct + * - `to` must be a valid pointer to a `FfiBytes32` struct + * - `amount` must be a valid pointer to a `[u8; 16]` array + * - `out_result` must be a valid pointer to a `FfiTransferResult` struct */ enum WalletFfiError wallet_ffi_transfer_public(struct WalletHandle *handle, const struct FfiBytes32 *from, @@ -530,6 +569,11 @@ enum WalletFfiError wallet_ffi_transfer_public(struct WalletHandle *handle, * * # Memory * The result must be freed with `wallet_ffi_free_transfer_result()`. + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` + * - `account_id` must be a valid pointer to a `FfiBytes32` struct + * - `out_result` must be a valid pointer to a `FfiTransferResult` struct */ enum WalletFfiError wallet_ffi_register_public_account(struct WalletHandle *handle, const struct FfiBytes32 *account_id, @@ -608,6 +652,9 @@ void wallet_ffi_destroy(struct WalletHandle *handle); * # Returns * - `Success` on successful save * - Error code on failure + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` */ enum WalletFfiError wallet_ffi_save(struct WalletHandle *handle); @@ -620,6 +667,9 @@ enum WalletFfiError wallet_ffi_save(struct WalletHandle *handle); * # Returns * - Pointer to null-terminated string on success (caller must free with `wallet_ffi_free_string()`) * - Null pointer on error + * + * # Safety + * - `handle` must be a valid wallet handle from `wallet_ffi_create_new` or `wallet_ffi_open` */ char *wallet_ffi_get_sequencer_addr(struct WalletHandle *handle); From c44e8d6a892290b135e27c871abd40aa87304e1c Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Jan 2026 10:36:14 +0100 Subject: [PATCH 05/25] Refactor runtime initialization --- wallet-ffi/src/lib.rs | 33 ++++++--------------------------- wallet-ffi/wallet_ffi.h | 9 --------- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/wallet-ffi/src/lib.rs b/wallet-ffi/src/lib.rs index 093c2f21..d4fa4051 100644 --- a/wallet-ffi/src/lib.rs +++ b/wallet-ffi/src/lib.rs @@ -28,9 +28,7 @@ pub mod transfer; pub mod types; pub mod wallet; -use once_cell::sync::OnceCell; -use std::sync::Arc; -use tokio::runtime::Runtime; +use tokio::runtime::{Handle}; use crate::error::{print_error, WalletFfiError}; @@ -38,15 +36,9 @@ use crate::error::{print_error, WalletFfiError}; pub use error::WalletFfiError as FfiError; pub use types::*; -// Global Tokio runtime - initialized once -static RUNTIME: OnceCell> = OnceCell::new(); - /// Get a reference to the global runtime. -pub(crate) fn get_runtime() -> Result<&'static Arc, WalletFfiError> { - RUNTIME.get().ok_or_else(|| { - print_error("Runtime not initialized. Call wallet_ffi_init_runtime() first."); - WalletFfiError::RuntimeError - }) +pub(crate) fn get_runtime() -> Result { + Handle::try_current().map_err(|_| WalletFfiError::RuntimeError) } /// Run an async future on the global runtime, blocking until completion. @@ -65,12 +57,9 @@ pub(crate) fn block_on(future: F) -> Result WalletFfiError { - let result = RUNTIME.get_or_try_init(|| { - tokio::runtime::Builder::new_multi_thread() - .enable_all() - .build() - .map(Arc::new) - }); + let result = tokio::runtime::Builder::new_multi_thread() + .enable_all() + .build(); match result { Ok(_) => WalletFfiError::Success, @@ -80,13 +69,3 @@ pub extern "C" fn wallet_ffi_init_runtime() -> WalletFfiError { } } } - -/// Check if the runtime is initialized. -/// -/// # Returns -/// - `true` if the runtime is ready -/// - `false` if `wallet_ffi_init_runtime()` hasn't been called yet -#[no_mangle] -pub extern "C" fn wallet_ffi_runtime_initialized() -> bool { - RUNTIME.get().is_some() -} diff --git a/wallet-ffi/wallet_ffi.h b/wallet-ffi/wallet_ffi.h index 7ae524ba..4158110b 100644 --- a/wallet-ffi/wallet_ffi.h +++ b/wallet-ffi/wallet_ffi.h @@ -218,15 +218,6 @@ typedef struct FfiTransferResult { */ enum WalletFfiError wallet_ffi_init_runtime(void); -/** - * Check if the runtime is initialized. - * - * # Returns - * - `true` if the runtime is ready - * - `false` if `wallet_ffi_init_runtime()` hasn't been called yet - */ -bool wallet_ffi_runtime_initialized(void); - /** * Create a new public account. * From 26a39bb005cd1cfadb311d4d712288317dd07d80 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Jan 2026 10:36:30 +0100 Subject: [PATCH 06/25] Fmt happy --- wallet-ffi/src/lib.rs | 2 +- wallet-ffi/src/types.rs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/wallet-ffi/src/lib.rs b/wallet-ffi/src/lib.rs index d4fa4051..3058d8b5 100644 --- a/wallet-ffi/src/lib.rs +++ b/wallet-ffi/src/lib.rs @@ -28,7 +28,7 @@ pub mod transfer; pub mod types; pub mod wallet; -use tokio::runtime::{Handle}; +use tokio::runtime::Handle; use crate::error::{print_error, WalletFfiError}; diff --git a/wallet-ffi/src/types.rs b/wallet-ffi/src/types.rs index 9bb67f19..3bcfd9fd 100644 --- a/wallet-ffi/src/types.rs +++ b/wallet-ffi/src/types.rs @@ -149,4 +149,3 @@ impl From for nssa::AccountId { nssa::AccountId::new(bytes.data) } } - From 272cbfe4006e5947c2cc696c491f54f46aaf5d45 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Jan 2026 10:43:46 +0100 Subject: [PATCH 07/25] Remove unused dependency once_cell from Cargo.toml --- Cargo.lock | 1 - wallet-ffi/Cargo.toml | 1 - 2 files changed, 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b4784794..61c7f64a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4873,7 +4873,6 @@ dependencies = [ "cbindgen", "common", "nssa", - "once_cell", "tokio", "wallet", ] diff --git a/wallet-ffi/Cargo.toml b/wallet-ffi/Cargo.toml index ae1ba57e..bc989fea 100644 --- a/wallet-ffi/Cargo.toml +++ b/wallet-ffi/Cargo.toml @@ -11,7 +11,6 @@ wallet.workspace = true nssa.workspace = true common.workspace = true tokio.workspace = true -once_cell.workspace = true [build-dependencies] cbindgen = "0.26" From addc65933f1c63f9cfa33b0ec1c193f191a80c5f Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Jan 2026 10:45:51 +0100 Subject: [PATCH 08/25] Fmt happy in nightly --- wallet-ffi/src/account.rs | 12 +++++++----- wallet-ffi/src/keys.rs | 8 +++++--- wallet-ffi/src/lib.rs | 7 +++---- wallet-ffi/src/sync.rs | 10 ++++++---- wallet-ffi/src/transfer.rs | 13 +++++++------ wallet-ffi/src/wallet.rs | 25 +++++++++++++++---------- 6 files changed, 43 insertions(+), 32 deletions(-) diff --git a/wallet-ffi/src/account.rs b/wallet-ffi/src/account.rs index a058acc7..b99d10cf 100644 --- a/wallet-ffi/src/account.rs +++ b/wallet-ffi/src/account.rs @@ -4,12 +4,14 @@ use std::ptr; use nssa::AccountId; -use crate::block_on; -use crate::error::{print_error, WalletFfiError}; -use crate::types::{ - FfiAccount, FfiAccountList, FfiAccountListEntry, FfiBytes32, FfiProgramId, WalletHandle, +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::{ + FfiAccount, FfiAccountList, FfiAccountListEntry, FfiBytes32, FfiProgramId, WalletHandle, + }, + wallet::get_wallet, }; -use crate::wallet::get_wallet; /// Create a new public account. /// diff --git a/wallet-ffi/src/keys.rs b/wallet-ffi/src/keys.rs index 27989c0e..e8309a81 100644 --- a/wallet-ffi/src/keys.rs +++ b/wallet-ffi/src/keys.rs @@ -4,9 +4,11 @@ use std::ptr; use nssa::{AccountId, PublicKey}; -use crate::error::{print_error, WalletFfiError}; -use crate::types::{FfiBytes32, FfiPrivateAccountKeys, FfiPublicAccountKey, WalletHandle}; -use crate::wallet::get_wallet; +use crate::{ + error::{print_error, WalletFfiError}, + types::{FfiBytes32, FfiPrivateAccountKeys, FfiPublicAccountKey, WalletHandle}, + wallet::get_wallet, +}; /// Get the public key for a public account. /// diff --git a/wallet-ffi/src/lib.rs b/wallet-ffi/src/lib.rs index 3058d8b5..75032300 100644 --- a/wallet-ffi/src/lib.rs +++ b/wallet-ffi/src/lib.rs @@ -28,14 +28,13 @@ pub mod transfer; pub mod types; pub mod wallet; -use tokio::runtime::Handle; - -use crate::error::{print_error, WalletFfiError}; - // Re-export public types for cbindgen pub use error::WalletFfiError as FfiError; +use tokio::runtime::Handle; pub use types::*; +use crate::error::{print_error, WalletFfiError}; + /// Get a reference to the global runtime. pub(crate) fn get_runtime() -> Result { Handle::try_current().map_err(|_| WalletFfiError::RuntimeError) diff --git a/wallet-ffi/src/sync.rs b/wallet-ffi/src/sync.rs index d1d7d560..3979f935 100644 --- a/wallet-ffi/src/sync.rs +++ b/wallet-ffi/src/sync.rs @@ -1,9 +1,11 @@ //! Block synchronization functions. -use crate::block_on; -use crate::error::{print_error, WalletFfiError}; -use crate::types::WalletHandle; -use crate::wallet::get_wallet; +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::WalletHandle, + wallet::get_wallet, +}; /// Synchronize private accounts to a specific block. /// diff --git a/wallet-ffi/src/transfer.rs b/wallet-ffi/src/transfer.rs index c8357dcf..055f0c32 100644 --- a/wallet-ffi/src/transfer.rs +++ b/wallet-ffi/src/transfer.rs @@ -1,16 +1,17 @@ //! Token transfer functions. -use std::ffi::CString; -use std::ptr; +use std::{ffi::CString, ptr}; use common::error::ExecutionFailureKind; use nssa::AccountId; use wallet::program_facades::native_token_transfer::NativeTokenTransfer; -use crate::block_on; -use crate::error::{print_error, WalletFfiError}; -use crate::types::{FfiBytes32, FfiTransferResult, WalletHandle}; -use crate::wallet::get_wallet; +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::{FfiBytes32, FfiTransferResult, WalletHandle}, + wallet::get_wallet, +}; /// Send a public token transfer. /// diff --git a/wallet-ffi/src/wallet.rs b/wallet-ffi/src/wallet.rs index 6c17d930..6f817f8e 100644 --- a/wallet-ffi/src/wallet.rs +++ b/wallet-ffi/src/wallet.rs @@ -1,15 +1,19 @@ //! Wallet lifecycle management functions. -use std::ffi::{c_char, CStr}; -use std::path::PathBuf; -use std::ptr; -use std::sync::Mutex; +use std::{ + ffi::{c_char, CStr}, + path::PathBuf, + ptr, + sync::Mutex, +}; use wallet::WalletCore; -use crate::block_on; -use crate::error::{print_error, WalletFfiError}; -use crate::types::WalletHandle; +use crate::{ + block_on, + error::{print_error, WalletFfiError}, + types::WalletHandle, +}; /// Internal wrapper around WalletCore with mutex for thread safety. pub(crate) struct WalletWrapper { @@ -172,8 +176,8 @@ pub unsafe extern "C" fn wallet_ffi_open( /// After calling this function, the handle is invalid and must not be used. /// /// # Safety -/// - The handle must be either null or a valid handle from `wallet_ffi_create_new()` -/// or `wallet_ffi_open()`. +/// - The handle must be either null or a valid handle from `wallet_ffi_create_new()` or +/// `wallet_ffi_open()`. /// - The handle must not be used after this call. #[no_mangle] pub unsafe extern "C" fn wallet_ffi_destroy(handle: *mut WalletHandle) { @@ -229,7 +233,8 @@ pub unsafe extern "C" fn wallet_ffi_save(handle: *mut WalletHandle) -> WalletFfi /// - `handle`: Valid wallet handle /// /// # Returns -/// - Pointer to null-terminated string on success (caller must free with `wallet_ffi_free_string()`) +/// - Pointer to null-terminated string on success (caller must free with +/// `wallet_ffi_free_string()`) /// - Null pointer on error /// /// # Safety From 82d5ce403c6c077b08bbf3f2e83740ae313c97d6 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 26 Jan 2026 10:53:17 +0100 Subject: [PATCH 09/25] Remove oncecell dep from workspace Cargo.toml --- Cargo.toml | 65 ++++++++++++++++++++--------------------- wallet-ffi/wallet_ffi.h | 7 +++-- 2 files changed, 35 insertions(+), 37 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index dffff452..7e174ecf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,25 +1,25 @@ [workspace] resolver = "3" members = [ - "integration_tests", - "sequencer_runner", - "storage", - "key_protocol", - "sequencer_rpc", - "mempool", - "wallet", - "wallet-ffi", - "sequencer_core", - "common", - "nssa", - "nssa/core", - "program_methods", - "program_methods/guest", - "test_program_methods", - "test_program_methods/guest", - "examples/program_deployment", - "examples/program_deployment/methods", - "examples/program_deployment/methods/guest", + "integration_tests", + "sequencer_runner", + "storage", + "key_protocol", + "sequencer_rpc", + "mempool", + "wallet", + "wallet-ffi", + "sequencer_core", + "common", + "nssa", + "nssa/core", + "program_methods", + "program_methods/guest", + "test_program_methods", + "test_program_methods/guest", + "examples/program_deployment", + "examples/program_deployment/methods", + "examples/program_deployment/methods/guest", ] [workspace.dependencies] @@ -35,14 +35,11 @@ sequencer_runner = { path = "sequencer_runner" } wallet = { path = "wallet" } wallet-ffi = { path = "wallet-ffi" } test_program_methods = { path = "test_program_methods" } - -once_cell = "1.19" - tokio = { version = "1.28.2", features = [ - "net", - "rt-multi-thread", - "sync", - "fs", + "net", + "rt-multi-thread", + "sync", + "fs", ] } risc0-zkvm = { version = "3.0.3", features = ['std'] } risc0-build = "3.0.3" @@ -81,20 +78,20 @@ base58 = "0.2.0" itertools = "0.14.0" rocksdb = { version = "0.24.0", default-features = false, features = [ - "snappy", - "bindgen-runtime", + "snappy", + "bindgen-runtime", ] } rand = { version = "0.8.5", features = ["std", "std_rng", "getrandom"] } k256 = { version = "0.13.3", features = [ - "ecdsa-core", - "arithmetic", - "expose-field", - "serde", - "pem", + "ecdsa-core", + "arithmetic", + "expose-field", + "serde", + "pem", ] } elliptic-curve = { version = "0.13.8", features = ["arithmetic"] } actix-web = { version = "=4.1.0", default-features = false, features = [ - "macros", + "macros", ] } clap = { version = "4.5.42", features = ["derive", "env"] } reqwest = { version = "0.11.16", features = ["json"] } diff --git a/wallet-ffi/wallet_ffi.h b/wallet-ffi/wallet_ffi.h index 4158110b..4786e5cc 100644 --- a/wallet-ffi/wallet_ffi.h +++ b/wallet-ffi/wallet_ffi.h @@ -625,8 +625,8 @@ struct WalletHandle *wallet_ffi_open(const char *config_path, const char *storag * After calling this function, the handle is invalid and must not be used. * * # Safety - * - The handle must be either null or a valid handle from `wallet_ffi_create_new()` - * or `wallet_ffi_open()`. + * - The handle must be either null or a valid handle from `wallet_ffi_create_new()` or + * `wallet_ffi_open()`. * - The handle must not be used after this call. */ void wallet_ffi_destroy(struct WalletHandle *handle); @@ -656,7 +656,8 @@ enum WalletFfiError wallet_ffi_save(struct WalletHandle *handle); * - `handle`: Valid wallet handle * * # Returns - * - Pointer to null-terminated string on success (caller must free with `wallet_ffi_free_string()`) + * - Pointer to null-terminated string on success (caller must free with + * `wallet_ffi_free_string()`) * - Null pointer on error * * # Safety From 8a00d8d8d484c46464c667cb752ed571cca885e7 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov Date: Wed, 28 Jan 2026 03:21:43 +0300 Subject: [PATCH 10/25] feat: implement Explorer --- Cargo.lock | 1159 ++++++++++++++++- Cargo.toml | 8 + artifacts/program_methods/amm.bin | Bin 460392 -> 460400 bytes .../authenticated_transfer.bin | Bin 380112 -> 380144 bytes artifacts/program_methods/pinata.bin | Bin 382736 -> 382724 bytes artifacts/program_methods/pinata_token.bin | Bin 390380 -> 390416 bytes .../privacy_preserving_circuit.bin | Bin 501540 -> 501620 bytes artifacts/program_methods/token.bin | Bin 418724 -> 418724 bytes artifacts/test_program_methods/burner.bin | Bin 376928 -> 376932 bytes .../test_program_methods/chain_caller.bin | Bin 390632 -> 390656 bytes .../test_program_methods/changer_claimer.bin | Bin 380056 -> 380060 bytes artifacts/test_program_methods/claimer.bin | Bin 375844 -> 375848 bytes .../test_program_methods/data_changer.bin | Bin 378544 -> 378564 bytes .../test_program_methods/extra_output.bin | Bin 375924 -> 375912 bytes .../malicious_authorization_changer.bin | Bin 382160 -> 382164 bytes artifacts/test_program_methods/minter.bin | Bin 375856 -> 375844 bytes .../test_program_methods/missing_output.bin | Bin 375992 -> 376000 bytes .../modified_transfer.bin | Bin 379380 -> 379384 bytes .../test_program_methods/nonce_changer.bin | Bin 375960 -> 375960 bytes artifacts/test_program_methods/noop.bin | Bin 375656 -> 375660 bytes .../program_owner_changer.bin | Bin 375868 -> 375876 bytes .../simple_balance_transfer.bin | Bin 377740 -> 377744 bytes explorer_service/.gitignore | 11 + explorer_service/Cargo.toml | 72 + explorer_service/Dockerfile | 52 + explorer_service/README.md | 71 + explorer_service/docker-compose.yml | 11 + explorer_service/public/explorer.css | 516 ++++++++ explorer_service/src/api.rs | 158 +++ .../src/components/account_preview.rs | 63 + .../src/components/block_preview.rs | 77 ++ explorer_service/src/components/mod.rs | 7 + .../src/components/transaction_preview.rs | 72 + explorer_service/src/format_utils.rs | 33 + explorer_service/src/lib.rs | 102 ++ explorer_service/src/main.rs | 79 ++ explorer_service/src/pages/account_page.rs | 229 ++++ explorer_service/src/pages/block_page.rs | 159 +++ explorer_service/src/pages/main_page.rs | 208 +++ explorer_service/src/pages/mod.rs | 9 + .../src/pages/transaction_page.rs | 262 ++++ indexer_service/Cargo.toml | 6 +- indexer_service/protocol/src/convert.rs | 43 +- indexer_service/protocol/src/lib.rs | 24 +- indexer_service/rpc/src/lib.rs | 20 +- indexer_service/src/lib.rs | 3 + indexer_service/src/main.rs | 6 + indexer_service/src/mock_service.rs | 271 ++++ indexer_service/src/service.rs | 13 + .../transaction.rs | 8 + .../transaction.rs | 10 +- nssa/src/public_transaction/transaction.rs | 4 +- 52 files changed, 3729 insertions(+), 37 deletions(-) create mode 100644 explorer_service/.gitignore create mode 100644 explorer_service/Cargo.toml create mode 100644 explorer_service/Dockerfile create mode 100644 explorer_service/README.md create mode 100644 explorer_service/docker-compose.yml create mode 100644 explorer_service/public/explorer.css create mode 100644 explorer_service/src/api.rs create mode 100644 explorer_service/src/components/account_preview.rs create mode 100644 explorer_service/src/components/block_preview.rs create mode 100644 explorer_service/src/components/mod.rs create mode 100644 explorer_service/src/components/transaction_preview.rs create mode 100644 explorer_service/src/format_utils.rs create mode 100644 explorer_service/src/lib.rs create mode 100644 explorer_service/src/main.rs create mode 100644 explorer_service/src/pages/account_page.rs create mode 100644 explorer_service/src/pages/block_page.rs create mode 100644 explorer_service/src/pages/main_page.rs create mode 100644 explorer_service/src/pages/mod.rs create mode 100644 explorer_service/src/pages/transaction_page.rs create mode 100644 indexer_service/src/mock_service.rs diff --git a/Cargo.lock b/Cargo.lock index 8cd4da9a..460e998a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -361,6 +361,18 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "any_spawner" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1384d3fe1eecb464229fcf6eebb72306591c56bf27b373561489458a7c73027d" +dependencies = [ + "futures", + "thiserror 2.0.17", + "tokio", + "wasm-bindgen-futures", +] + [[package]] name = "anyhow" version = "1.0.100" @@ -782,6 +794,23 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "async-lock" +version = "3.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-once-cell" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a" + [[package]] name = "async-stream" version = "0.3.6" @@ -821,6 +850,36 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "attribute-derive" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05832cdddc8f2650cc2cc187cc2e952b8c133a48eb055f35211f61ee81502d77" +dependencies = [ + "attribute-derive-macro", + "derive-where", + "manyhow", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "attribute-derive-macro" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a7cdbbd4bd005c5d3e2e9c885e6fa575db4f4a3572335b974d8db853b6beb61" +dependencies = [ + "collection_literals", + "interpolator", + "manyhow", + "proc-macro-utils", + "proc-macro2", + "quote", + "quote-use", + "syn 2.0.111", +] + [[package]] name = "atty" version = "0.2.14" @@ -845,7 +904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" dependencies = [ "async-trait", - "axum-core", + "axum-core 0.4.5", "bytes", "futures-util", "http 1.4.0", @@ -854,7 +913,7 @@ dependencies = [ "hyper", "hyper-util", "itoa", - "matchit", + "matchit 0.7.3", "memchr", "mime", "percent-encoding", @@ -872,6 +931,43 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" +dependencies = [ + "axum-core 0.5.6", + "base64", + "bytes", + "form_urlencoded", + "futures-util", + "http 1.4.0", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit 0.8.4", + "memchr", + "mime", + "multer", + "percent-encoding", + "pin-project-lite", + "serde_core", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "axum-core" version = "0.4.5" @@ -893,12 +989,37 @@ dependencies = [ "tracing", ] +[[package]] +name = "axum-core" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" +dependencies = [ + "bytes", + "futures-core", + "http 1.4.0", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "base-x" version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" +[[package]] +name = "base16" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d27c3610c36aee21ce8ac510e6224498de4228ad772a171ed65643a24693a5a8" + [[package]] name = "base16ct" version = "0.2.0" @@ -911,7 +1032,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" dependencies = [ - "const-str", + "const-str 0.4.3", "match-lookup", ] @@ -1369,6 +1490,23 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "codee" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9dbbdc4b4d349732bc6690de10a9de952bd39ba6a065c586e26600b6b0b91f5" +dependencies = [ + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "collection_literals" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2550f75b8cfac212855f6b1885455df8eaee8fe8e246b647d69146142e016084" + [[package]] name = "colorchoice" version = "1.0.4" @@ -1405,6 +1543,28 @@ dependencies = [ "url", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "config" +version = "0.15.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30fa8254caad766fc03cb0ccae691e14bf3bd72bfff27f72802ce729551b3d6" +dependencies = [ + "convert_case 0.6.0", + "pathdiff", + "serde_core", + "toml 0.9.11+spec-1.1.0", + "winnow", +] + [[package]] name = "console" version = "0.16.2" @@ -1418,6 +1578,26 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if", + "wasm-bindgen", +] + +[[package]] +name = "console_log" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8aed40e4edbf4d3b4431ab260b63fdc40f5780a4766824329ea0f1eefe3c0f" +dependencies = [ + "log", + "web-sys", +] + [[package]] name = "const-hex" version = "1.17.0" @@ -1442,12 +1622,53 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" +[[package]] +name = "const-str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0664d2867b4a32697dfe655557f5c3b187e9b605b38612a748e5ec99811d160" + +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "const_str_slice_concat" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f67855af358fcb20fac58f9d714c94e2b228fe5694c1c9b4ead4a366343eda1b" + [[package]] name = "convert_case" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "convert_case" version = "0.8.0" @@ -1685,6 +1906,20 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "data-encoding" version = "2.9.0" @@ -1708,7 +1943,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" dependencies = [ "data-encoding", - "syn 2.0.111", + "syn 1.0.109", ] [[package]] @@ -1743,6 +1978,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-where" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "derive_builder" version = "0.20.2" @@ -1866,6 +2112,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "drain_filter_polyfill" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" + [[package]] name = "duplicate" version = "2.0.1" @@ -1941,6 +2193,16 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +[[package]] +name = "either_of" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216d23e0ec69759a17f05e1c553f3a6870e5ec73420fbb07807a6f34d5d1d5a4" +dependencies = [ + "paste", + "pin-project-lite", +] + [[package]] name = "elf" version = "0.7.4" @@ -2034,6 +2296,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1731451909bde27714eacba19c2566362a7f35224f52b153d3f42cf60f72472" + [[package]] name = "errno" version = "0.3.14" @@ -2044,6 +2312,27 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "example_program_deployment_methods" version = "0.1.0" @@ -2061,6 +2350,33 @@ dependencies = [ "risc0-zkvm", ] +[[package]] +name = "explorer_service" +version = "0.1.0" +dependencies = [ + "axum 0.8.8", + "chrono", + "clap 4.5.53", + "console_error_panic_hook", + "console_log", + "env_logger", + "hex", + "indexer_service_protocol", + "indexer_service_rpc", + "jsonrpsee", + "leptos", + "leptos_axum", + "leptos_meta", + "leptos_router", + "log", + "serde", + "tokio", + "url", + "urlencoding", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -2202,6 +2518,7 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", ] [[package]] @@ -2240,7 +2557,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" dependencies = [ "gloo-timers", - "send_wrapper", + "send_wrapper 0.4.0", ] [[package]] @@ -2379,7 +2696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68a7f542ee6b35af73b06abc0dad1c1bae89964e4e253bc4b587b91c9637867b" dependencies = [ "cfg-if", - "dashmap", + "dashmap 5.5.3", "futures", "futures-timer", "no-std-compat", @@ -2403,6 +2720,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "guardian" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17e2ac29387b1aa07a1e448f7bb4f35b500787971e965b02842b900afa5c8f6f" + [[package]] name = "h2" version = "0.3.27" @@ -2565,6 +2888,15 @@ version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89e8d20b3799fa526152a5301a771eaaad80857f83e01b23216ceaafb2d9280" +[[package]] +name = "html-escape" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" +dependencies = [ + "utf8-width", +] + [[package]] name = "http" version = "0.2.12" @@ -2609,6 +2941,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range-header" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" + [[package]] name = "httparse" version = "1.10.1" @@ -2627,6 +2965,22 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +[[package]] +name = "hydration_context" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8714ae4adeaa846d838f380fbd72f049197de629948f91bf045329e0cf0a283" +dependencies = [ + "futures", + "js-sys", + "once_cell", + "or_poisoned", + "pin-project-lite", + "serde", + "throw_error", + "wasm-bindgen", +] + [[package]] name = "hyper" version = "1.8.1" @@ -2975,6 +3329,21 @@ dependencies = [ "wallet", ] +[[package]] +name = "interpolator" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" + +[[package]] +name = "inventory" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -3363,6 +3732,228 @@ dependencies = [ "spin", ] +[[package]] +name = "leptos" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9569fc37575a5d64c0512145af7630bf651007237ef67a8a77328199d315bb" +dependencies = [ + "any_spawner", + "base64", + "cfg-if", + "either_of", + "futures", + "getrandom 0.3.4", + "hydration_context", + "leptos_config", + "leptos_dom", + "leptos_hot_reload", + "leptos_macro", + "leptos_server", + "oco_ref", + "or_poisoned", + "paste", + "rand 0.9.2", + "reactive_graph", + "rustc-hash", + "rustc_version", + "send_wrapper 0.6.0", + "serde", + "serde_json", + "serde_qs", + "server_fn", + "slotmap", + "tachys", + "thiserror 2.0.17", + "throw_error", + "typed-builder 0.23.2", + "typed-builder-macro 0.23.2", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm_split_helpers", + "web-sys", +] + +[[package]] +name = "leptos_axum" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0caa95760f87f3067e05025140becefdbdfd36cbc2adac4519f06e1f1edf4af" +dependencies = [ + "any_spawner", + "axum 0.8.8", + "dashmap 6.1.0", + "futures", + "hydration_context", + "leptos", + "leptos_integration_utils", + "leptos_macro", + "leptos_meta", + "leptos_router", + "parking_lot", + "server_fn", + "tachys", + "tokio", + "tower 0.5.2", + "tower-http", +] + +[[package]] +name = "leptos_config" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071fc40aeb9fcab885965bad1887990477253ad51f926cd19068f45a44c59e89" +dependencies = [ + "config", + "regex", + "serde", + "thiserror 2.0.17", + "typed-builder 0.21.2", +] + +[[package]] +name = "leptos_dom" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78f4330c88694c5575e0bfe4eecf81b045d14e76a4f8b00d5fd2a63f8779f895" +dependencies = [ + "js-sys", + "or_poisoned", + "reactive_graph", + "send_wrapper 0.6.0", + "tachys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "leptos_hot_reload" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d61ec3e1ff8aaee8c5151688550c0363f85bc37845450764c31ff7584a33f38" +dependencies = [ + "anyhow", + "camino", + "indexmap 2.12.1", + "parking_lot", + "proc-macro2", + "quote", + "rstml", + "serde", + "syn 2.0.111", + "walkdir", +] + +[[package]] +name = "leptos_integration_utils" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13cccc9305df53757bae61bf15641bfa6a667b5f78456ace4879dfe0591ae0e8" +dependencies = [ + "futures", + "hydration_context", + "leptos", + "leptos_config", + "leptos_meta", + "leptos_router", + "reactive_graph", +] + +[[package]] +name = "leptos_macro" +version = "0.8.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c86ffd2e9cf3e264e9b3e16bdb086cefa26bd0fa7bc6a26b0cc5f6c1fd3178ed" +dependencies = [ + "attribute-derive", + "cfg-if", + "convert_case 0.10.0", + "html-escape", + "itertools 0.14.0", + "leptos_hot_reload", + "prettyplease", + "proc-macro-error2", + "proc-macro2", + "quote", + "rstml", + "rustc_version", + "server_fn_macro", + "syn 2.0.111", + "uuid", +] + +[[package]] +name = "leptos_meta" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d489e38d3f541e9e43ecc2e3a815527840345a2afca629b3e23fcc1dd254578" +dependencies = [ + "futures", + "indexmap 2.12.1", + "leptos", + "or_poisoned", + "send_wrapper 0.6.0", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "leptos_router" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e573711f2fb9ab5d655ec38115220d359eaaf1dcb93cc0ea624543b6dba959" +dependencies = [ + "any_spawner", + "either_of", + "futures", + "gloo-net", + "js-sys", + "leptos", + "leptos_router_macro", + "or_poisoned", + "percent-encoding", + "reactive_graph", + "rustc_version", + "send_wrapper 0.6.0", + "tachys", + "thiserror 2.0.17", + "url", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "leptos_router_macro" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "409c0bd99f986c3cfa1a4db2443c835bc602ded1a12784e22ecb28c3ed5a2ae2" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "leptos_server" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf1045af93050bf3388d1c138426393fc131f6d9e46a65519da884c033ed730" +dependencies = [ + "any_spawner", + "base64", + "codee", + "futures", + "hydration_context", + "or_poisoned", + "reactive_graph", + "send_wrapper 0.6.0", + "serde", + "serde_json", + "server_fn", + "tachys", +] + [[package]] name = "libc" version = "0.2.178" @@ -3445,6 +4036,12 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "linear-map" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" + [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -3704,7 +4301,7 @@ name = "logos-blockchain-http-api-common" version = "0.1.0" source = "git+https://github.com/logos-blockchain/logos-blockchain.git#451df112f8574aea2840d04fffb7e16e76d24f42" dependencies = [ - "axum", + "axum 0.7.9", "governor", "logos-blockchain-core", "logos-blockchain-key-management-system-keys", @@ -3981,6 +4578,29 @@ dependencies = [ "libc", ] +[[package]] +name = "manyhow" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b33efb3ca6d3b07393750d4030418d594ab1139cee518f0dc88db70fec873587" +dependencies = [ + "manyhow-macros", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "manyhow-macros" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46fce34d199b78b6e6073abf984c9cf5fd3e9330145a93ee0738a7443e371495" +dependencies = [ + "proc-macro-utils", + "proc-macro2", + "quote", +] + [[package]] name = "match-lookup" version = "0.1.1" @@ -3998,6 +4618,12 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "matchit" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" + [[package]] name = "maybe-async" version = "0.2.10" @@ -4055,6 +4681,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -4073,6 +4709,23 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "multer" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 1.4.0", + "httparse", + "memchr", + "mime", + "spin", + "version_check", +] + [[package]] name = "multiaddr" version = "0.18.2" @@ -4130,6 +4783,12 @@ dependencies = [ "tempfile", ] +[[package]] +name = "next_tuple" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60993920e071b0c9b66f14e2b32740a4e27ffc82854dcd72035887f336a09a28" + [[package]] name = "nimue" version = "0.1.1" @@ -4292,6 +4951,16 @@ dependencies = [ "libm", ] +[[package]] +name = "num_cpus" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +dependencies = [ + "hermit-abi 0.5.2", + "libc", +] + [[package]] name = "num_enum" version = "0.7.5" @@ -4322,6 +4991,16 @@ dependencies = [ "malloc_buf", ] +[[package]] +name = "oco_ref" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed0423ff9973dea4d6bd075934fdda86ebb8c05bdf9d6b0507067d4a1226371d" +dependencies = [ + "serde", + "thiserror 2.0.17", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -4407,6 +5086,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "or_poisoned" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c04f5d74368e4d0dfe06c45c8627c81bd7c317d52762d118fb9b3076f6420fd" + [[package]] name = "os_str_bytes" version = "6.6.1" @@ -4440,6 +5125,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.5" @@ -4469,6 +5160,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -4597,6 +5294,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.111", +] + [[package]] name = "proc-macro-crate" version = "3.4.0" @@ -4628,6 +5335,17 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "proc-macro-utils" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeaf08a13de400bc215877b5bdc088f241b12eb42f0a548d3390dc1c56bb7071" +dependencies = [ + "proc-macro2", + "quote", + "smallvec", +] + [[package]] name = "proc-macro2" version = "1.0.103" @@ -4647,6 +5365,7 @@ dependencies = [ "quote", "syn 2.0.111", "version_check", + "yansi", ] [[package]] @@ -4792,6 +5511,28 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "quote-use" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9619db1197b497a36178cfc736dc96b271fe918875fbf1344c436a7e93d0321e" +dependencies = [ + "quote", + "quote-use-macros", +] + +[[package]] +name = "quote-use-macros" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82ebfb7faafadc06a7ab141a6f67bcfb24cb8beb158c6fe933f2f035afa99f35" +dependencies = [ + "proc-macro-utils", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "r-efi" version = "5.3.0" @@ -4875,6 +5616,60 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "reactive_graph" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f0df355582937223ea403e52490201d65295bd6981383c69bfae5a1f8730c2" +dependencies = [ + "any_spawner", + "async-lock", + "futures", + "guardian", + "hydration_context", + "indexmap 2.12.1", + "or_poisoned", + "paste", + "pin-project-lite", + "rustc-hash", + "rustc_version", + "send_wrapper 0.6.0", + "serde", + "slotmap", + "thiserror 2.0.17", + "web-sys", +] + +[[package]] +name = "reactive_stores" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35372f05664a62a3dd389503371a15b8feb3396f99f6ec000de651fddb030942" +dependencies = [ + "dashmap 6.1.0", + "guardian", + "itertools 0.14.0", + "or_poisoned", + "paste", + "reactive_graph", + "reactive_stores_macro", + "rustc-hash", + "send_wrapper 0.6.0", +] + +[[package]] +name = "reactive_stores_macro" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fa40919eb2975100283b2a70e68eafce1e8bcf81f0622ff168e4c2b3f8d46bb" +dependencies = [ + "convert_case 0.8.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "redox_syscall" version = "0.5.18" @@ -5311,6 +6106,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rstml" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61cf4616de7499fc5164570d40ca4e1b24d231c6833a88bff0fe00725080fd56" +dependencies = [ + "derive-where", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.111", + "syn_derive", + "thiserror 2.0.17", +] + [[package]] name = "ruint" version = "1.17.0" @@ -5615,6 +6425,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" +dependencies = [ + "futures-core", +] + [[package]] name = "sequencer_core" version = "0.1.0" @@ -5755,6 +6574,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_qs" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3faaf9e727533a19351a43cc5a8de957372163c7d35cc48c90b75cdda13c352" +dependencies = [ + "percent-encoding", + "serde", + "thiserror 2.0.17", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -5764,6 +6594,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" +dependencies = [ + "serde_core", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -5817,6 +6656,71 @@ dependencies = [ "serde", ] +[[package]] +name = "server_fn" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353d02fa2886cd8dae0b8da0965289fa8f2ecc7df633d1ce965f62fdf9644d29" +dependencies = [ + "axum 0.8.8", + "base64", + "bytes", + "const-str 0.7.1", + "const_format", + "dashmap 6.1.0", + "futures", + "gloo-net", + "http 1.4.0", + "http-body-util", + "hyper", + "inventory", + "js-sys", + "pin-project-lite", + "rustc_version", + "rustversion", + "send_wrapper 0.6.0", + "serde", + "serde_json", + "serde_qs", + "server_fn_macro_default", + "thiserror 2.0.17", + "throw_error", + "tokio", + "tower 0.5.2", + "tower-layer", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "950b8cfc9ff5f39ca879c5a7c5e640de2695a199e18e424c3289d0964cabe642" +dependencies = [ + "const_format", + "convert_case 0.8.0", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.111", + "xxhash-rust", +] + +[[package]] +name = "server_fn_macro_default" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63eb08f80db903d3c42f64e60ebb3875e0305be502bdc064ec0a0eab42207f00" +dependencies = [ + "server_fn_macro", + "syn 2.0.111", +] + [[package]] name = "sha1" version = "0.10.6" @@ -5870,6 +6774,15 @@ version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +[[package]] +name = "slotmap" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.15.1" @@ -6051,6 +6964,18 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn_derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb066a04799e45f5d582e8fc6ec8e6d6896040d00898eb4e6a835196815b219" +dependencies = [ + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -6092,6 +7017,40 @@ dependencies = [ "libc", ] +[[package]] +name = "tachys" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b2db11e455f7e84e2cc3e76f8a3f3843f7956096265d5ecff781eabe235077" +dependencies = [ + "any_spawner", + "async-trait", + "const_str_slice_concat", + "drain_filter_polyfill", + "either_of", + "erased", + "futures", + "html-escape", + "indexmap 2.12.1", + "itertools 0.14.0", + "js-sys", + "linear-map", + "next_tuple", + "oco_ref", + "or_poisoned", + "parking_lot", + "paste", + "reactive_graph", + "reactive_stores", + "rustc-hash", + "rustc_version", + "send_wrapper 0.6.0", + "slotmap", + "throw_error", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "tempfile" version = "3.23.0" @@ -6208,6 +7167,15 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "throw_error" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0ed6038fcbc0795aca7c92963ddda636573b956679204e044492d2b13c8f64" +dependencies = [ + "pin-project-lite", +] + [[package]] name = "time" version = "0.3.44" @@ -6344,6 +7312,18 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "tokio-tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite", +] + [[package]] name = "tokio-util" version = "0.7.18" @@ -6374,11 +7354,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_edit 0.22.27", ] +[[package]] +name = "toml" +version = "0.9.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" +dependencies = [ + "serde_core", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "winnow", +] + [[package]] name = "toml_datetime" version = "0.6.11" @@ -6390,9 +7383,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.4+spec-1.0.0" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe3cea6b2aa3b910092f6abd4053ea464fab5f9c170ba5e9a6aead16ec4af2b6" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] @@ -6405,7 +7398,7 @@ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap 2.12.1", "serde", - "serde_spanned", + "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", "winnow", @@ -6418,16 +7411,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ "indexmap 2.12.1", - "toml_datetime 0.7.4+spec-1.0.0", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "winnow", ] [[package]] name = "toml_parser" -version = "1.0.5+spec-1.0.0" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c03bee5ce3696f31250db0bbaff18bc43301ce0e8db2ed1f07cbb2acf89984c" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] @@ -6473,14 +7466,24 @@ checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "bitflags 2.10.0", "bytes", + "futures-core", "futures-util", "http 1.4.0", "http-body", + "http-body-util", + "http-range-header", + "httpdate", "iri-string", + "mime", + "mime_guess", + "percent-encoding", "pin-project-lite", + "tokio", + "tokio-util", "tower 0.5.2", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -6501,7 +7504,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3790eac6ad3fb8d9d96c2b040ae06e2517aa24b067545d1078b96ae72f7bb9a7" dependencies = [ - "axum", + "axum 0.7.9", "forwarded-header-value", "governor", "http 1.4.0", @@ -6575,6 +7578,63 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" +dependencies = [ + "bytes", + "data-encoding", + "http 1.4.0", + "httparse", + "log", + "rand 0.9.2", + "sha1", + "thiserror 2.0.17", + "utf-8", +] + +[[package]] +name = "typed-builder" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fef81aec2ca29576f9f6ae8755108640d0a86dd3161b2e8bca6cfa554e98f77d" +dependencies = [ + "typed-builder-macro 0.21.2", +] + +[[package]] +name = "typed-builder" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31aa81521b70f94402501d848ccc0ecaa8f93c8eb6999eb9747e72287757ffda" +dependencies = [ + "typed-builder-macro 0.23.2", +] + +[[package]] +name = "typed-builder-macro" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ecb9ecf7799210407c14a8cfdfe0173365780968dc57973ed082211958e0b18" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "typed-builder-macro" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076a02dc54dd46795c2e9c8282ed40bcfb1e22747e955de9389a1de28190fb26" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "typenum" version = "1.19.0" @@ -6587,6 +7647,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-ident" version = "1.0.22" @@ -6660,6 +7726,24 @@ dependencies = [ "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" + [[package]] name = "utf8_iter" version = "1.0.4" @@ -6672,6 +7756,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" +dependencies = [ + "getrandom 0.3.4", + "js-sys", + "wasm-bindgen", +] + [[package]] name = "valuable" version = "0.1.1" @@ -6837,6 +7932,28 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasm_split_helpers" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a114b3073258dd5de3d812cdd048cca6842342755e828a14dbf15f843f2d1b84" +dependencies = [ + "async-once-cell", + "wasm_split_macros", +] + +[[package]] +name = "wasm_split_macros" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56481f8ed1a9f9ae97ea7b08a5e2b12e8adf9a7818a6ba952b918e09c7be8bf0" +dependencies = [ + "base16", + "quote", + "sha2", + "syn 2.0.111", +] + [[package]] name = "web-sys" version = "0.3.83" @@ -7240,6 +8357,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "xxhash-rust" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" + [[package]] name = "yaml-rust2" version = "0.10.4" @@ -7251,6 +8374,12 @@ dependencies = [ "hashlink", ] +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.8.1" diff --git a/Cargo.toml b/Cargo.toml index 328d23d4..dcceb699 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,6 +16,7 @@ members = [ "indexer_service", "indexer_service/protocol", "indexer_service/rpc", + "explorer_service", "program_methods", "program_methods/guest", "test_program_methods", @@ -116,3 +117,10 @@ actix-web = { version = "=4.1.0", default-features = false, features = [ ] } clap = { version = "4.5.42", features = ["derive", "env"] } reqwest = { version = "0.12", features = ["json", "rustls-tls", "stream"] } + +# Profile for leptos WASM release builds +[profile.wasm-release] +inherits = "release" +opt-level = 'z' +lto = true +codegen-units = 1 diff --git a/artifacts/program_methods/amm.bin b/artifacts/program_methods/amm.bin index 01efd3245ccabd51a46aa41808a1e96c50ec7104..3786adb0de8459a5d10e427a31d7fadf890287fc 100644 GIT binary patch delta 80604 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 D`d=MK delta 80742 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 I{inbC|9sm7;{X5v diff --git a/artifacts/program_methods/authenticated_transfer.bin b/artifacts/program_methods/authenticated_transfer.bin index 14176e55aa04bb45ceca70aacbb51945f3f07d03..8dc4982529759b219eef619930abeb5260833e0f 100644 GIT binary patch delta 79053 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 z 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 R7Yz&?vE{rK&40Q0{{cR0(c=IB diff --git a/artifacts/program_methods/pinata_token.bin b/artifacts/program_methods/pinata_token.bin index 8ba4f1dd0fc05160fc7b46e4392ade7f98dfbde1..f57e2539f6e04675faa6dd3c44cd829ff25767ba 100644 GIT binary patch delta 80528 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 HA20tuiJXF) delta 80563 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 kzCj6ztxM+B?_8=^ZP|}(-F12Ws_yQCw{E)Gr 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 z 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

U>RVz#m&Y9 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 DQW9`j delta 79265 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 KKe+$uzW)dBUP(0o diff --git a/artifacts/test_program_methods/burner.bin b/artifacts/test_program_methods/burner.bin index 8b739241e2ee03c79669f19b7eca86739b445d6a..a2240d6247f3cef4b475bda7c13f5f6c95e5dcdc 100644 GIT binary patch delta 76995 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 diff --git a/artifacts/test_program_methods/chain_caller.bin b/artifacts/test_program_methods/chain_caller.bin index e72262b285b7f96b8a193cd309d4f7b2797628d2..a9a1949792c31db75350fd8983d8197eedcc2037 100644 GIT binary patch delta 79504 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 O_0IZZF46w^%KroQoJiaN delta 79570 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 diff --git a/artifacts/test_program_methods/changer_claimer.bin b/artifacts/test_program_methods/changer_claimer.bin index 86c3e695e134cc129704ccd129fbc59ac2fb909e..3c15821bb5831db26388e66221841e267f10d5a4 100644 GIT binary patch delta 78147 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 delta 78195 zcmZ_X513Zd+W7JH>}IA(gQ=#YNIg?SQ^H7*gpn{2l4w$xYUtmjj^c!P29-gFah{kE zLXI#IMIpza2q6j~L?MJ3;^gQxzwf>GTC?w2*Y(@i`(DRq-S_&l*IxV2v*(#<;a&SJ zxNE=aPKo;45A2rc_tc3ecM0ltrK`F;UNioaMEmrHgN|rf-`MzVrCGQ<``}iImP3vC zwzBU2bcgQ8MgLtqKRvqpfh}{T+*GA2yAO8d%Qti%nP^!ZR@jg(>d`eQ9+w{8qib6; z=IBgQ*)6#^V_WA|yQkK7X-F3(hXuv|NzYCW9yKj&X-JD6C+4*1d0oy8Jzvggmzl^& zXD0S(mt`_)qWEc)8Ok!^vbvISH@80JhKF03Zb@=86WQ&u68ogHa!pNf*yh-DVgB^Q ziuA(#Ziz+dy8JGQW7Avn_v?5}y44YR?Xv1jyE(0Bb1xJ1QQR+`+jYP8N43k$r{_8q zsqDLaK-ZN)`@I+dotUh4nHjcHU3NPApvj5W=@|!|klAu-{r#(#SM_+ZMa>N_CGykB z-u;8hL(-#rj}6TG>AKzr2PQkcqxYnsvTJ%;MUV6~N45{@PESwkS(Gk6w0}_CCcWs; zO9FFBI{UDmdl$EvTK~l#-OSl7x)qE`-*(6WLET;H(TCj~6bI?#jlI$Zhj$L@dNPxJ z(lZY~EigZ)*Bm~$Wtr@G<<;rDqVqZzCvP}3kvFb#X=|Ar#x4_@RTHKZ&q!Al9dSVT z-*wYk9CV`Dw(#*^+GU<-YD{I9++f!9npy=}rd~r8ghZHT|z6uPxZ` zA!EjySMOSRN>`Jfd&>BBS;dKVb23eOPL|p4p#-rT{*~_4XaC^U>U3_O0}{6_ujq4q zR#1FVy1xI|ptAGw;m1DFCa8QmopHutLGc62`4~L1g1Sf3^GlBp>K;ySD!nhLyC*$k4Ninv(ELGdl=S?Bji-#aoV{nYuVrb|jYrHe1m zPM423sO45!_?6eDt49pB|9xe8>xc=qD8@V ziJA>-6CKjkqcYN)C+zdLx~c85US@S=u!dMDQEnn#d1d=_$3I)A>wnEi*Wa6&-g{F1 zK9v>YOlH=~bD79Fb9$!-Od2aYH)P^r`&5n{m*pavN2IGJUYfpdQm^A)-8QaMrn%wa zOw)q@zv1DN&3-N9Xq@y_yF{X~+re!ZU&7QR6LQ{m4gWjrzj6y>t?9CF&~bTk@>~wa zVd*7*|94Q=ZTZm4+9ra^w#&<>Ke10x**%?i{ZT>P`OAk~e{7I$x3+J(psH(NPDqzj zP3&G2E{!M0Wn>n%Yn^Gj9n9h^d?4u7GZD1Qe3@P)Ui@%+vs5`Qy{D?@{^sx&ha_6u z(DTF=Q%x~hoNZxN-F@len|cQ3sC30m*9LW6(>re(n0{^U1vSfC2R&-aZcMaEuf4fr zP}wfM_2%B4i#OAL&@L-!FPP{ZPBE3?Hq;?q&LrDLH(M}o_kebcBW^~9T?Po zmoB>byr6O{=i9Kre3qVZWADy&4=|_ypOKi&=`}YVoIdZC)#+jL4oqB^&YjnB`QUlE zL3B;68@s&h*1n0B;qj=OlU{h+_d#)Sx_)E9^4jX-6M^ZueCO@``QI~cC`_*`Oebm| z?7I6%_QGxn{4)5T{QuT#lcx0Qq}k2?&%7#WDkxjP|F60xX_ip7c~;WYymvxyQq8-A zgLW&QJt_Dq(KP7MoCdRLTn0T{I;nZ;97~$=L8CZgc-Wom{ofx z%?j#>8}RzhNi)bg{jo8*T=HD~O}Jv;q$%4s%D?;*;>o1hVB352Q#y+Cb4>#UGPtVD zutLr2Yl3Im)*cp*wkwVC#2+V;|0jFG+QWc>w}QCX+VA)m<`c z%=NhPXjZZ9u=_X0RM7zkI9xFkaSd*5{WxBs;y>c!=idvqG!p?nKA1Ct!D=#V9M z8nfUGPE%Wd49+<-uKyr5gOX;K%|HG}@=xz7>q`bW%%mvDJ2hzvDUd@l;Adk7;EY7% zXK--|hsZj=-k8yYIYicP;Tss>SUZ56nvt7=C(r(oW*48CG<$5nXEZReLukhOGrXK} z?q#dJ_zO$rta#jgcX8x!D;s~HX5Y%8nlehi9ZJ{>!>QKWPeV-VeBJRJ@9=*v*`cPMSJf?@?SnG(N~bU~_i7vxok{ zbwqh89!|bn1W)1m*fp(ziH;N|q$;(QZtt1Sw2^ZpCBrLIh9T%PxpQ5c=CQPpK z>9}%Id=a|~*E4z9)R%df+$v#~Rd8_Z5-Hp(VRDAM$vh`8FHlfHfvfO;xR3IoISKO( z4Yslk&dW=f6%61!>vwP`@;g}P*0kEjDcy4A$Zc{)f5LdGW+qJsJHa3BlQ1Qf+@whl zPq2LxrURDl#fxwfC#_rMCXC#SbKbD)ai%-PGs{Tf-+E1Bd+BEOrUaULFYMTh} z=&pmKvF_j!tUK6%<&MAE4k&2H0pzaVFA)u}7|RpD&@i4#m@6od$APW3!V_2?4V<@P zc|0hz4RmHgT>dV&EOpzqhU37?FcSPJX!O{j$mA3!^#W33;s-`PH4>p%;wR>-o`Iw0fdiK zw!e?DJZ2@W2ky-&f!zd7$Hmwk(Fd_SbGiJzSpo7$<9vmzh`4^rJVJpykhum%GWvca z;vGzK@!fDE4{UaTAK``P#qojz6Q&IJV1P0qm*Al)z68%x{vH=Mc^os?nRA8#6w`pL zxyNuV0|*~4Xz)jT2$qvvIwEKvp zsW7Hlg)CF9;*vjJS@QqsxO6aES@Iw8@*fN1cK@Zq zQm?`Wufj$Zm;4WvrGr1b{5>iz`Hjkw-?b+*+SEUX;2;X(t)a0{St^{4>+Vh3l!Q4G z&%7`8*;pT<;i|q2V9&wakErjSPeu@L>R&pz%4^^nuYpQs$$!Yp|F?=uhmR^t{(3L} z-JWs(>{UbK`(A~_AzcHl>q=MDHq(Ze|8=arxy#G!mNQIrs zQlZUZ&G$GD#~ZhAWyv4l<)5J9(*8i@lvEh+RhXm_q{0+s$^Vy^e}{@o{sLvmf6>dY zi{okE(q^_JG=@%sJP_+q%0k@JG}V}{SC)kLt{r}$v?g+KfL~BnG;olbTCL+ zDokvuAkAi(3Kf_9smhW+-^;I2aml~iS^Ad>FL@PSaS7pWG&HVNmi+I%{2x_ZI;dBc z{PuiY&}U5t`S`#V?!Qzxz!pfMR5-?~FhIp6{{&^pzrf2cQ*p^3r!4u`MftXWrgXMS zkP0^{ONAv-1sNY(mU&#oCI1O!$$uA@+@B1y`Q&5X#|xD|z>Dus#R;1!*zP_!8GiC| zgfY|jY#wca$;4ZTx1>Pcbsui+;=S=U;=C;gR0sdU#plNz-huTRSbz_-t?@q%jbHZQ4G9gp_lW1!jBMm1 z;z5Tb!gdFfB%dJfp`P1hT&r=}gGpPIFfV!iyrS}@o3+YP{~J6()&C9;jmMobJ1Niu z|5-I44SwB|_Xt$TWe76BUsPN=XxE#U$*P0D;dRO#@ebuqxQzB%OM8ab@uyIb@ld>n zgK^2jv4`N=QSlFZ{()EEa6l}T2k`)WWY}O}-p12Zd^hf;+>OLe&M6u=lY%8n;ttQo zdmfEF9M?V;djys}h_=9-k1Lcfz_XOg@FU9Oa1H~IjZ>6YH5AB*qAf5JvAmymuE4Sf z&Qr1MvGZkE_SpGyT#4oJM^2_i)-L`KmKkM}_nCqDHw7}K(H59TvHU>6xfbg+@+6M8 zhQ>VBwj9DiLG|EA)Szgt=I zJMs2U&r2718`!k*_|sJtNQG0p3WHT#IvAoX`P01o=_)SyS13#V-8x?$f9_QYQely@ zR9K@ckpH@hOa7b6lK+F3|C5SKeuHxO_>Q9({;^Zxz4kn>!pJy*ei|A_D@zAgdHL6O0abU2X$vo!9Y0v9Sz#Y2@Z!!wmH$4iuF;;nSBk8S@U{1a|#{SG$FNUF0f_=AGZ z6kKRsa5PT~Pb86S3DX_#R_=*sk?*cw=i;qTCc|vWFU5}#msfGJgE!!UWpR8ip0_ON z9)A+%CJL%m!aTf&3(+{+z)I_=hrm3K<&ZhQh~Upi-+&+&qkD)^EDS*5PRc3fd4 z4}9O^c;gXRSyp+=e$Dgu!tvJ7xVN(8_rxjP!J#TaPNO1asc;6?`9oD)^3PG0{AphP zbQPEUEBd*|Z-yxq(q4r-y$W|JOa8N7{&OlW9jsQC{Exl-E&bg33+Jh!@e8lQ9lX^;*y`b zRTW5u$Gr+qsJK*kN?G#X@$%nOamnALEcp%1^HXM*N{|ZwRh9~Q{hLqeemLG58uwS0 z`~hD62`Vn_4^+;O*B|9xh4CsuDoj$A4sQ1H|Ec1VU#%?pk9+w~s5tANDOCkh;a%M4 zDf`njE}j|3MvnG6VOrt=#KT80;=`?7d;~64@yD!Pd?_w2>uNG7;HSWW`G|rURG7dg zw}1wZ9uV18=#RHNoiqz5koW>?7r#gHm-A&08{c5<;v4bFbXY`z^!I;wCeD>-Ybhu^ zj@u&*By9uNTe}A4;4Q@SZ2W)LF8+VGiUvDS5Vm(b-@_o^#Sg)Iln=wTD zf5vi*oPWVG#m>LsMasMJD&;?ME;Hcr|C0Lr6xKOWY-Gk$O$8Yg^rC{Bvcs*TguwL1 za!8!}VmSoP{cs&$RB}ER_b1+l0-2FZtX+H}9x^5sSE!&sj+slCiuJYpG8}IWji2=8 z>lW;Bxajy~)9EO_JwSa{b@)l=y`%Z|1o88%+wnaNS(G_gK1p3(%zwE3m-9YN!G!0M zl**PccNTL9l<&fe$Ht3r4W3856WMZFwmC5}WJ{Plyo9(rt!G%f_&;ze_l5Yp{(u6p zOV}(Glt0DE7vuQnc(d}C_*^xE+wnr>Z*i^i_b0Odt5m^{Bz&b@j|DUb_IxwVUr$1*_YNqCccb0qJ!rch8#LSP$MVC^d0gJs0d_hH#1=LfLtfb(Lk z56L4q-uMw37bcmZYC25GBA7yf90ImF+l|vpCukrWh~6?s?$v z)-FB+=ak25=0042_aZ?K(HnS0*j{-4C(L>Z)~G4`5N}o;ev13ifLml)?COAZ$*4b? zY>j^=?mliGh09d@SiF(=zIFhY;Mo!n`=^1)6s#ekg-y5pI=l<^+xQGJ12FBu_KSx1vA}*`L-f{ue%)IA?Vj?@EMn*RC9J<{3R>C$&w;R-8xW%CV=w}!^=l;z5pnHtO3BLb%8a#T2V}+u;pg!_ zp}GH0rC`JRaRW1O*~ZvcdcM~4b$Fr5pNl_J9X^HE;r4a_Tkr;#FQ0$Eq#$=w+~GIa zToV6IQJW#Gk&oi|-*7z*x|`97IAe1hKgF8=2@lyTUi@`s)<2h83Wll%-u3)GE>rQ3 z@EYYUc$4y%c#HBkc)-W;0Dp)r*MFWy;)2k>;-RX-Zd|SWe|WKSa0VYNlv`q1L(#?$ zv^=+Ia(MsYqY?#4RiPuEpxhbHRPKf=l?!pPIwZqz;ivHcM&JZ-cPYNk+TMQyGn)cA zucM6@4!9G}r$AQiQ`RoN0!xR^EAdd=$>x7)?c&>U1@S@~-}lVO;r`1qX-mO;5^`+9 zan`PZVk{Rb=aaCUR?eqjIjx)rV>u0@Ez=Caau&GwS(vlL_Rj!@Q6Q_@C7g@pEO0Kx zdCH@3KjjN?iSig+s$7m|E04$XE>WNVCsD9QB}~B;wtKmjPs8!n&^R6E-0cR~!mK!z z&wg(w%{-FisrtCnM-MB=p;`{O9ElHY_jb9(a z6Fy6Z5oYgqp~RKcsZfhZx1L{cKiH2qKE<2E}`97Km?JeL043_f}a?>}Wk2ZR*@^8*R82jO{211EA! zH{lH1;Ja!7GKD{2Jp=Wgf5r3F4DFWqcsE0V>6$vrnCvf-G%p)39PljVUY?Ke+y~E7 z`N!blTa#gH(%$j7T=^u=sS>Z?bX=(_48;{+#toi}Yn9LUe39p|c#Fy(-`puPiGrN3 z;tr;Iz6=jg@qc)}3YV(5%;+@b*?6AvO?X|CIsUg&u%oGfzh&Whf#-X0#e^} ztFfHt&e!5;%GcqW#L@ka`#%L+Rl<#Uhw{x>UkU$-G=Nt+TzK+==*qVe z%XMW3mE`7>aU8!&$7!A_Nkj!_Qy}Mckxf{LWkxz+xjB7~?>xTg4}1IgMTX zSu9iT>hH#K8rRzPm!7~cCywX-@9uW>6v!Uu+76E_##G3&1H2f^Y2{pl<*aai1Iwyj zY&$4DF%d4xKGxr2Sz~3ky(k+*DNtUCXDF}6OO#*6b;_@Ke#`Sac(cmih*JgMCGD8F4p1;a z`7_U7dHxy?Rr%lJ8OlH7D&<{x!-V+m*X3;1{}5Gh8t+ht<6MR$r`6>+Pk9lZulyF) z9c=Kt5ie5%*o-%SAMfyIXLJ6|{2?y*iUjR%J%5iEsr;Wk|AKe3hQc+)4jecvax}#O zfBYlbA?I!>3JTbx?v%(LpK0w9&c-rB&cm_Hkn;#!jt`?i>R)f|;&ZUfm~$0gjNOGT zwcHlCglBOb3GT}FrL~K1$8rpvzs35(^gWI@eiIGr3)3w;l*%Eik50psS$bw7T=nJD zk}Ff?P<}~=RXWT187zx(i1l_Xhp5oHUUev^Rn9rh2edDaw}!^HI37@{g=w!6q=6&w zX0?ZXaHom!9v_YM9`{%E@!SSi*$$+=zu^VS2jJC_qx*j{E}+eXImmM%?&YSCA)JGE)4&W_ zMC32Gb^}`F`32nR$7B>HzYdrDBo6PtynLphA}o*`-iTO-HxpcVZu9t|o{R82RlhG@ zqud|o{wy8JmM|wchy7D9$Q9UxQ*n{1Fa$5DPli!x;B350`8>~~JYR@28shrna1uxT z)8GUOW~hWISf)JM0y7QEnsAUpc@ZFri>-*GPMZ;dMWk%T4cnAhW7%D>`_Np8^v=677E{0G)+ zWDkxveghTjHS&LF^7&8pU;1{v}53x2|U+&eiE0f{1te%@^g4WlR5tXpLBhO>>y_8x zPQS+kcpDcfzwh}Y&!6COmH!2v#hPfvE+ypW|9g$#r_mHh7xE0(7f;w7ci10SxkX0& zV#!zWNw^3Rb&sB;Z9@M(8R$gk=EE|Hcb& zxCi9FXYJyf@B_rdDxh~v~WkBv;@h#qgqnlBtnc@Z{{mW@{69xL1-s<^wyj30ZJMktuY#|*o zLoefsKaxncgn11wRDKJuQr>`bCiDHj=se|z#}w>V3Gydmv@<_}TVVFbA5G%^--i;}gOj6zri2nKBXku`$NHF_iQ}!I@odRg7pCDVE;Bq0 z>j7OJI+e6-@S%c&l0Rc#TtMD$4aR*xD`xNFbTuVL^%kJ@N|NO{NhrDYL zr&NRUC|Iq0J6@xFC*Gud53W~UgfsTUJMgfzdu;#3i~kp=bcO#>kf$1G#0AP3qnIJ( zR@U?F9$w?culGC$m#g|WkK+8Fr3!8%VYTvnyhZsg&-ZzL0B8JPGJM36DgV{lP5Exm ze~#k(E24t?ATermWLKfg^Ef=5d>5a9EB}f;1us^<%-Vg9*xjt&8P}2>iVdT*yOcB3~L~OPFk296M$9wgm-*rGwj>Czv}u--XL*V1>=kyC||WFCBFB+zD63 z9h!W+p~>9;52m0)5RdQ>>q5K7%e?qAo>$>Ps{V^OuSMM6E4Wzsb?fj2hTQ*-FKeD~ zlIK(K1R8KNbgi`sw}iRD^ISYnb$E;CTXC(8r)0{~6m;TJDRqA3fLO0V@ADTpn8br_29QP^%IeJ!gz<9&d@asQety`{H^P&%=~Y~^gIi9Qu){6P0DjU-(nr^zs$g`6l_-&(zv`; zJb(qB@AbS0&r174=$AK=Zc@@@YN;FGAJX$HRV{1wjGD<06dp1;Qh zD*iLx!vJ#Z0QMipg{XC0zY8vGor((z!h+a6Jom!0D&k`}0+&vS7wPr5K*g8hHP|iU z&3N|Sar>W%Q>x%AFX3yPLkDgObIZBA?UNt9`DDhXSw~aGrP}jMET?s}@k1#rr?K<3 zI8{NxnUu(R|0o4wmr#r4G<1Fv%V`>IndWIMtJ=k%!Lq8IS7BKL&M#m&B+maS=l-9~ z6m_IT2JjsTVwbQJ=i|V}_q#Z!S5l`6o$<{7jg5{7npNI=e^G7E!+Q^-m<047pen!PX814VwFc5 zM|OO3x4>m8o{jtM8|UwhE0o)M-mjUt|L;#h&R6l29Efw3lTx8+3bIT$9B&Pc2TOhR z!DISh{!T6fEN1L71GinoXG;d;W}t_vAO88nlPQ=_!Vp@OC!lAnqfQd$dCxE6#cB^< z!K;;D$6J-xTNl{&GbY4w)<5s_Re?AMXXM6H+QxGp9-`tMJ$J&RRXiWhQa%`Oh%DEC z{$y!f5W2|ok$6CxctHI;AB#&>ycn-%)wc;-<4+Ca&#-(HlhgW6TpQ+x_n(Bhhk|vg zfkmDl_Phk={Y^KS?M5a{L&+^;~?^5x7aId!PP}n~Ww4R# zggdY(Gr~Q{CElU@IbN2h?*H4ug1EsQo_~-AREPC=^wh5WC?Z-^2XK)XgxxdVDL5Ou z9sE1)pyCU0pOi{?oq}?e@C%-WImG-wKTMv&k7oCa2iO%4=#XzRf@sPww{|mfmFJY_ z>v5`_23&<3DX65wY}?_}xWoQ&d?hYcUhVm1&uj2#mH!5wsr=3q)_(=6ID%}#tg@$kJK zhhV=;BfI?l@j1lZo6eK1UAzR#Y36)7o`LtKKo02@DO=zYuEcWMInToLv0GG+SiAUR zSWZjlrI^#I$;+^u1uniE%UR%@dX|C=j(I?djOa^im#`hnDt7)B%PMyM9v9&j6iEH{ zQzN^02i!;HAAsd7vGJ7YOo5z6u0lSRv%t9k%UR&u9VgF<-4kC!+?^%oTD$yGEQ{KC zl+=#N9^eS{{sd35d4JWjXxTJ^&!}$;_}S6|1?&)>adIF zt~k3>JizWvw)g*@6m(DthvOpUKDa{p7|+LhJ`q>`J^mGr1$e%4170KTx%>a`t{~j) zg!u#SR2}~1Iq`R9uFd#nqB=x+G2 z7ysPzmw0#=b^rf{g4M~mgCDSA#BNI4U&g0jHN_|3t;!Q|aeiF?QqR*pUxC-By2cf* zmICE#adx*jeuL+^c#w+Uf`_UBKZ|D_9M^vV=XH-=hf}&>t(UM44^b7~#$|Nio_KcS zb*jT|)A^xO&$xp^yjjK1!5N3d@zUw6e_e2amr#Z~s0tV3p~{nRx$;!cGd%wT&s6!d zrnCOnsDkTA(4Oo0CcH`I-->rDr*X1ZyoU=s-|Kl%ih_Qs!ozq6Q|9jX8?aFqjz96x zL*owQpMxnN9$woy?+?Lw*e%-g@Mz`haJ8zRnrjQfyBXJkAH0Nm&%fdd8f?z%a~^^9Um-mo=Mv8(K{}Xi z?ecHL?TP2u_*2#{z5?eHZym<@{lCv`flK%j_i9QAOwJXNU3_0$eR@2=wpgxgF5Vu? zY3SSm%UR=m0KNo|r6BzI|0%Y>B@D)LS~(BFavC|Gh4oYJFf41v#m~jEW}Hj0tO@5) zSk{betpC7VNP#SpXba33EXUZn9LwFzc|4Z8ne!ycx00`BO~LWTk6y99eHUHA&w;pb z_b zZ#R=m{Sm~Y`!D~Xi7Sx)7{Gy^lQ_F~+~7fY84U(uc3_6$A=Bfh;H&W=%KyeamEXfX za4KON*h4{~O6Yzie_l^{7(Q6}8hnuQ5?r9X5!Vig2fP_iQ!~)wDmecn0L;ssK9i*CbEln!l@!g=nA?}Agk25D;}zR5SA%)@j@)e)cFuxseBlgL*(K| z;6=)Pu3`NzQw2wpAXDrr^v7}xosYwtl#8((A{Rdi%al8xf@R8`2je{DA=hyJ$*Oe; zXOSSQ+Ibk3RquQ*mb1dS6w6uTJPONc<$NKQ)6RJemebO?JVk*lI#)0r%OY}~gyp<; zo`Pl3IZwlK);LecoK{V~0?S$C;#XpQsZPzJAl~@?9@f|DyT|frl`CPb{q%ah%9l&? z5-f{$ki=PLMb|c8#C<*Y!}H=ro-)T#u%|d)^#jFM#Mgl-cnvOOl(LE!;GHV|D&BMw z10XH~=))nM`H!w9Y4b0_3$VMc+>Gl^bp3JtyUiB#vkiRGEFodO@cb2CG$X$B=2Y?w zNP~+L(E!e}ra3mg7gia?L*fy*&p`T7573i`1JE@2FweR(|MTkt{^ueNpr-sZ)3 zc>V#WXwN+{wZAT!F~i2b@DmVKAU+UpR~>f6^~&9Ghe7#LpN*e(cs{~&AKXXfAA{#J zAeKz@{l9S(6rP+PwMT;!aFsg7Y1|JV7k0-N6eM58zr!@)~i9f>m~pvgS5VXzh6)T&Wsphqowqzy(9&4iB_;Gd9ADkH#ro;UWr(RRiUC zgYrbYQ~6Tsk|0_W|MudKdwv4%QT3P4W&LeEJ09^W60%t&?pnPK?@-5VpBp)Em5;%F z&WYSn+kN0pko~e8jUZ{L4UZkAHg|yevw)Y>rTE$bZ zQm|VUtg|k&d$iY0&ExxeZi{ozjR&|N?lX%YO0|r3XaruR;-m4V*eNrHg57a}xdiV~ zo{T%37k4lXmnvUw?FPKki?84QGQ1nP~M0~D{sa#l|RF) zl)thL|9Tz=^@y8QT<(8I=>mKV-lZBi9xpgQ9^gs1)2P@b*0U1Pl;7#a@9}&eF1Gc< z``<$p3{;Em9lS<$uo1t{X-E6~e_;N?3r5ESXmLyAVtXAZwkAESakA$Uye6t2-T%&@ zAbCOD;4nN?c?3S00n&arfa`J2g>n9kc=i?fW^0RR2Dak?D*hd=Q2q%o2rd27d4+^SP!Yn*(JP(z2N?*bo z%Hjsr;62K3Snp(arJ+UOT74G&zIut zv2lCT@j~U9c=cHI{{Nb&z-+Z0)LFX$t@XSPZ&eMxjmyTx9lnnjDt~0XBoWQf{jcS|82&MPzfjF@hUzImtU37*QcW?d=;;o z7!PP2&YKkbZO`v}{@^y&e?L{>6A}i~p*znrtBpBT4X6m0D38Jurp6tX;cDfJ@#$&@ zs_~hadsDc>FI02>ou?Z7hJeSaFNO{#M6`yO;IpI z74*hc%17fB$^*pH;{lwAYt`rb({agVaeOEq%MQ62y&7*)@l+)RBh?;1jz_Bwmf=w< z{;9-qmYu?^fAPSf@>}B#%DH&LjCerpae3Tc$`n&@aa>>~<4ct9#Jf}j_u%tY{58D! z^0maD*or5q4qK;g?x!9dm z^YG>?;{n}{GdPRFP4549Qqap4;Ct{48ptI>PRrM@oOaR1-+J}D!ShBuOXY9IgRYM2 ze}?4|O*Ym)e=u4Vh`;sxJsxf=Nc?9!T3tDJ;XP^*{)OvRevA2>1=qv_$j1F{$Tw^F z{ZsZYVa}kSN+k@#dz44u+-u_oM&n}TF_J$!pI<_VE=)`D?aW|;J(L;Tj5nzK&+zPU z2kia-D+&rK;|{*X+m(0XqU+*#1D;0*Jhg`%bh^Wsf2m`BD!v1|HE|i1J&rbR_c)xf z=>8v=tGtAi=j(B)YT!n^Q+XcFWd>Xax8u9i0A9rFRs0paka*Mg|9+xCrqDI;tLNRG z|HS>~#QEkO8HDIFQr@qXJdKGjs$tP>wF28cfrmRaSk6uj-f!Ne7?1d*Wh{TCn9&_lgXDBB!8{7%U@T+`8S?~ zHa6i`62vaycPuZHo&Uh{GTC_#UV`1VzWaj6F5VMAPCTGM25_#miaQT5B6mnROJrMuHpRuhy=C-|<_jf&9B8yLbV9N5#*wcJX2OJ>m%pDE=a0dG_dK4I&Kab_5mh+2P-YJEf-2dt* zF#Pm8+5+<`mUlMJuVHy7DJC>(t=Wnrmj&S}S%LfnVAF(`hvdR4~F!dD3GhMXt z?|fi+=yd)a%R{I0A6TAho%djQsB~_`@=WO*+!H-hI%i_}U=#Jv0J15NXFQkC8p|`D z^FFw;G6j+ z->%{^fG4niK3E=FJ;gpt!7Qev1G_C3imkZd=J*GThc1j9%?kepr02f45BVTjF{GgZci08*}m1^KgT&KJO=iCwx;5q9VT>7N_j`uc?cg87QA)kUG z)xg1c^t`yiLvW>X5tbQ?w!j>T^%^<~#~c5oHr8us;6#4@CC8+QELk)IR0TO^Be8Ti zNaF0lvnGoI1oQxq&zi*5qmtrDi-dgA9XKv|Rv@K)8~tGMi{cmO})(YMAO z{A%si*x8Gk$5ZEd1tak+)xd>#h4MITZi_pZVC@#!IxqgV=MA_ZuAed=P%yMQZtxR4 zL-`9VQyy)B`3lR7Ie(2;-~%X-8QS-O$S&R%%OP@Zk7Wjr zPO*0J!C0o;c?j04{wy4C4UNOFUiIgyc=-E&mr^kFswkiS z>F^5*`la)m8r+V{l)v-*ljjCprSgBr)0i>$Sf6|_a@0X!x?!2oru+ZF6zm=%1+oRE z2cD;naWAZo@!>e$8X9|JeT?s(z~7T$#tIVAh3z*iGqgrp=R!AqB7awmLo`VCUkYBM zKspRBBzyxhdlJ7U%Yc%^<##yxst)DKI1KAO9^v_XtOtC7sxNoTGAsj@{@GfXaVkMN zsKm8uO6Pd4!mCyMpSaKb{HQq&>A&zGcmBisI|a6bjZRfWZPz4D`Yi}DkmmwSE| z?^O9O;PN}-0oLIecc}aS+OQx_c+>OSc(!WbeY{8cBb;+*Tz`w_FFkL^ol>g8cN8p8 z{s}Kp{uM7&i}H7TpYk7AAM-sp-uUZxSTEAkSYs(^U>#Yq$bO(eItZ+ThvMq8Cc0of zpaRd`@ftPYUUC0>AYWIzn-54;%XSs%-7 zZI$ZaTD%nxvGJF2_C0Zjui*;iw-&ShbioEMVIy9mDs0A`mc$Kyh6h~}-+r?n<}6S? z5|5e{{}Sp2cqVqw3pb`HsG{INJL0GC5|!{NUZony{5RKj6+av=q{E|Z{qrTR1~3N? z$4A@vGCWVkQ=d|>odyrJ37L=Z!9XP(jti7W;vJ91GjO5jah@-c`j5r=lX2lQO-`9< z6l_-=+=F*1zlJleji;;u&rt5Pg!5YYRNP1TGCW-QUR==RRAAOoFsP}351%+sx$~pE zT3y*RV$;oYq31(zp~^4vd?YS*ae4pWPZ!{0aj8qd#hy>X^HsbA&t|}+@_&4L9&ddv z9`H=u>G{~#D6{?(=6Y2io`YAZZ$>Y}RjPq!Jg>s*RQ@)+OXctI`~%(-!$nvxfIBG z>ME3CIZvHOVL45mFT`@1I*-9}nmU(bIZd6%V>!#5Ct*3u?ERO21Cjzc&0NAX+(&sj zmJ5xGUx9}!Uy0?scJWzQt_#j7yh-_bEN7j){|06b1-n#270!@F6>fpK1c|V-2u^Vy8Td^~i zHg_w}Ie50pZ-Z-DW5rB4&%c2=mV({u;|7aypSNS5?D;g$XW%lGKg{#FxK72-*OvR= z1r%&o31jj6cj5tz$E%bpJpbME47^k2Uy0Yf8@G2Y-eVo!|8GzQGAUJ_Z^8XG#0^yA zLGQ)B16L~F?fHJs58`D}zFhzLo6Zz$RSneQqK$C}PkDaU^K*E<%Kwk&mvNnnzt-gN z{*y3oP_RKIyn}ZrZ^WH8#RJ;x`7_U3ajDAx8n5~&uK&H{U&ljjwEuz0dxGnL6om5; znB(z)&2fd3JePPr9ZysFLp`5^t5v)dclua;|L+0{22c=f2{YF7c+ZpYaFst5mnqM{ zRmxZ5KA*(xUyBEQqJI8=LsZZ-fGW?o;4;-fHBNpSH+TmgpnSLI`#nF1hkTlf8+e3* znW}+WJWu&4JbX)>|12(7e!+8{=T~vH%3mi=se-pCkSkNP@q~kSV)tfqx3!D^iCeN} zod3eB)K9+?PeyCX#WS!hI_H)+RbeSV^Vy4ncx!0fTN+RgDDx)sdmnPCmIn}CTJ5jf zfaD42P^<@Bq~h{c>qu|FN2$2fKL@X&{n64s*PXkbHVN{OdQfT^S0+`Vr{_cQ1{Lp(_b4BYi$0G#9DsY#K}Xxc zcPaD|G?l%}yBzyiq%JlzDJ#_y3@vw&cC!Sy9`rWa)F@6_(Htv+7 zAUABDzt2lSFYMk0Ka7W{_`7(tYTyq%Q^mV2=QL#i?p^Sic$FH^mAD^v?}8WO)HIdw zE(KLIc&HuFAJTy8pkM_bBvkw?yj#Vu!W~q55931R4S3P6ct$>0!TQ$)pLhwM;Vr7d zSGf45_y-DmKSP86jT>x>7c1|FCy?)EcpzT)XTI6aA_+L83!mZm*Z(hW-~keLsu8cp zdvJlBk^kbPYOw3GG)P=pkh|L%xJbok;+e`1;VR{KQqlk;infH==y|i}Pw{S*zZI`i z4Ypp%4E$f*UM^ms;>Y48%Bf2zsQoLhFc~l7w23zUcpR?dtT>DU*~10aE`AS|v&Q*8 zEUVo40o+M>F_uMc<0iis*Me4j7 z%V`>IT>oC8Kvu0wcm>O)%Hd z$RcwIpI}*J&YxjfRL)zmoCVI?u&i?DZ?G&n=kKsAI_I5O)`V=V|G@lAfh>w>3(PNA z7M1gFSl?WB<9OpwHe-Er`Afy+%6h=6=4&h&Tduze(~W}FY7rLVX^rusJQP5?pfoDSd@0rgc-r$bcu_{v`+xq*H3gM7+xxW%%yv9HGv1@` zaJlkNc(L-Y_y-oPtQxsc9rzqOM0@Vqe=6>TyV&^O@qn9oU+)s`p33T#E5Qb`J;R z4!6WRI0FygJFb5vPU(Vcy@cyFmU3H)>%uiM8> zX~Nuyv-gcX&-3k`=i^Q)|1Lb-Sw8>YN5KSFfFHvB+Qc0!!9$dndVbpTGkCble;$`9 zzl3L7v;LVr3Kpt_H$1=N`8~Ws<$vh;V|+i0FnrI)BF$J$K2FLZ!H44^^TN-L(a-(kn%8bhd4gM z^Jvc(;h`LosDF;hSPEvS3&+KHHa@@}l4|R4yyT~`9AoD@@nY=m6)#)6_!_+8^f>=@ zy!Fhc`+s2Gq~K{92+w;u_|4iiuv;2X9sY?o;npO`qB{6LkzIZd`~~rYZG5=3i;uw7 zrRwMP=Tnf$8pyI0=2*K5Rah3O^DVd!{+rEz*4o9N!?MbqS7TY!&M)B^DGJ>E`gh|K4Op)Ihu|6NEGc>^)x6+H5*Dk3 zet2FdHzNsi9G?BJ_`) zh@&kqx8qW~2eJdJtzG;jTi^K=tPjCj9BtA+Q?iZ%eF)NAxnxFWFh_FbdaJ2I^yzj7 zo~`!iN6+7#Yf+P!5iG~l`7tc3+<7UMRqnhD z>+8UBi8pP0{(qJNedT*jCCGJPyVtffN^tpA3_xn2V|sRU_Y1upC5rZi!m^Sl~QQ}LH^ z-QjWmYj{Ob?6+{!AxZIZ;~fg(jY}`qGqRqWvQ3DUqZUIPPETm~@St3OG_rT!GJ{c8vNe_zF={s&(D%}sI6e`%n_8_j1R3&&eSV=JtuFh|9u{?T6j{wgj5 zIL@nI?Ba6&l?Enz4P5FH!cjCd{@rU}hKfu5`@Q-Ps<;f`VXyuY8xQaQ(!fTqfe*a~ zKK2^eqT*7&<(tiCa4#Hhe3uOC8O)91VgKO_9P2f3yw|{qUIT+vTm~@JtACk_%M4uZ z)t?#0qyEDIJVb#$PnURp9P6{>iLe2;k33Rgy@&fB$Uob~c|V90d4^n}@@2qZNPD(_ zQnJifDnUm4wb$Sd6_*Cuz14g`f5Y+C(AW{{0d-PwsedYN_Wi%pRDulP46lKqDlQFN zjrELNtKw4sIOU0Mm+N1a`L{}t z1|Ibqs8w-k;G?*Ku>L11F7-e2>TgwXso(ltH-q8zH_PlpLA*6Iw!wM|^Hf|KIH9Ql zsg-30s<;f`WUqdSic9_Ju721*4P2oTq=75F24<UvdQ+Mk1S?rwVj-@;t~d(>b7yCK*9Dpf%`T#jd{o69QC zFW_nwufrKf#y79EcuC*bZ{lY6|F`+3hYj&U8!yJIYm?yfOD=PsvJDK(h48mIVw;5aNKii_bhiwQz&*;5|`Lf`9=*KtK^m2#Y8mk%X|z z77(8#tnaVxntSKo>A5`tk?)h!U481*sk7BNr{*H5wYpMTui>7p;P5Gx(os0yEBw#Z z@LRVv#9z0OF*>m-Pw*jl4Ua9Zl89PAG#g(+=q9}gs zainN)v#Fv9{@@ef2nZgozyBuS3pZCv6Er;MNo>*P>`I6F{)>RsmCc!Zr33AHiC;c5#eo5a4%K)o897kvbzW}VRRIbwm{0;CC7gb8T^!wUN zfHA>*z>4M90lwExkk>AIj&LX&MOi)Rl*-T_;;OvAqdtS&-~(~Q^&SY2dTuiyW0 z4BkIDu@q_ee!%J;!bO^(VPiYeYXo)W_&DGVXH`lMr{l2`oAE&P7agM!?A?QM;KTU4 z#2TIlSp9OsI1R4@tbS>s4nGK3{Zd069ybmg>zGuUsmGrKSp7oFk2Sm%@XOa~*;Sng z>&JJLuDY&Ly4lP)@PB~c#DMx%uG+7W;*Qd_fY+P{+0z_3ZUTCW8${_R6Hy$wtxq{- zPXhk8Czk%K3HYgkA z`%8eQJU&Uk?<{>C@I?*p?*^={_bkH*wSXf(1UG^#ecj-F39!1USr^JD0IT1+xN|Qr z`=AGR!PGrOMT0`H46wS`xJe`YDPYyUgN3EeDkJCdedC- zW$|?UnXJtfZ3dw{`^L=_!39U6N_a@$PTUCix?S+KdV)LWfI|&C_Zr~g*xC9{ zA3PVz)Byi*9vX#St(4Bw_(v~j5Iv>UgLdnh=d;qL-g^_AsX+2$YD$MIBoeuW2(%Fz8;m=goa zpb;Dic=*tXB`9e+;THfORffUUD|!L&p$G=*E1YsXI?1~F%*jf?f5Ur-Li+tKz{7{& z_ZXD&s1>YT42z5h>omgG0Z02x?2QJ_TY_Jk2VA#juLGVk3_`0{5MFe8A2{`kbw25h1t=mEg$&x~%s7Yg=5z(81+ z@)}_EchMs~!CipWpE*B9!y_Z?Ip8T8J{GY0d&|o-d=p^xSIRHK{OJVy#8|=p_(Loj zo&i|>J>|MuUJF?L)o@F{e-beM3V2!{s6MFr1P7gnJ?_e!v-%(eteW?Z&@8|3H$mcb)E4#%`y8dSoHHz2JOu3$Qr|L4z*(D`h>VPb(uT6GBF+wb=JU$BJT$MZ!x&;(Cr9$K17;8xha(tD?@( z!jXivKh)DhYt>@3Zu@B4CzfZsDMxKFrk80HN5l#u>f0>wf=DjL)9%=ds6{w+T#G~O zxDqh=$`+H?L@a#ACnB;ui@Ql(^7_eN;kr`!(_39QScylkXiq8}?#k1KbdHwy-q1Os z90raHjdB9la;XT3y#798Za3k?4rmfnVTFW5+2Zay!JJVJdBSNNCd73EH}SX(?>CO@ z4n4~PKO&b!fo;<$WyX0&nTzC)_BMxBiYSsFeZbhz6>^6QpU^n4ogi`I*>dIs#!PwG zgT}{Zhq1?_Fu=5d?I)qtz|?k`WZTlZ$(+}XMMV*Hi61!J7MW#`WU<+XwA)VG!e&zp zwJPn8=cU@7eV_z?PbN@GHR$+Sf7Pa>=!5>_ZKdFYPB37+Qpd*e2Mlg&>(n8l&Z*j~GL1+zukah(($2xi;~#5GwO?b?Ngx>IZOVp>Q4U z2g3KGfCeN%BxNO`=T;qTXw>%TENaOldvdiHIh6-KV)T>;Qu_U^#>dJLCEWD_Vl&%~ zX~5*sTaAe|FXo^NE-d!&{~Z1{7BmP#H;fz}3a?6(5lc0zc&L@Kto`wRtk`j*C}MWtbB6^ng=)lsPlbRMk*L~hVhcyIh7hfAFmznSb8@f8 zjA}6vy)s^i*H$u~szdS6I@VgXc&rknHql~_)zaD=4T-L`IhO7L5%mK`8%qtht4tb zw!}PA-uj#|tTs>wGiOv+|IeMYI<%I4{**IURPzTm>XM&0u5FVfilD!K#2hCefhT+` zv|JW=QI+)``+A4gT8(vkcd&PC%b|7ss1^?Gi0a z(il}Pectf9BHwnbfJTWOa%KhLZ27Hi#zC_7yfH++@ub1zN1isumIcn~PC#u=SY+D? zm&=|u4nEwAsqaNNw=?2!$FdtmsBjGg@yRpB82RYaM!6h?9wlz*TRx7uEKU^u@pAqP z#?UfJJcqkMKrO~2H;JY7j4`=J1kP?Wh6%NqPq|+|zG?9(o?RQnRM?6~iv}B`Mt@>Z z0kPBEO`D|1{hu}VJE)KZD&#dUAoN=Ctnryzkgy;Ka9{>w?9d~7#Q45|zi`sNfWP0+ z!*aEvH{kC#HfN|j|L;b3t!Px0xY~KQ$;fJNgx<~vp3-D^uPml-=Zo|MJ4=BT5ie`c z8J}zp3?6yTn9%%m{_95fm|Wu|r#)|sZ~owz=ZzD~0~I$@$$^U0C>h9uxQJ$jZ~L+3 z*~n2ci!mQL5XU8g#fWXC|Fkh~5WVYa(mN%UW97>)8K&Iug0Zi(o;CKKTR4+#Hz-um zXgT3Uqq3-IR8?tRdO*{gS^NQ&>z^>jHS_m|7mZ0h`Hn)!9nTqK_RD>lCe70K%_!%; z)^d+mzGO_E%K{NF7TcUTB#K~(X&h4mNT~*opSCw*wC4e z8lzG_*-Y4BJB{)AYlVTH^^P$i{q8^V7o48P`=T!|M*hyD)ba>HBHRk$cKnDFC!uzj zaGdt!g0c?D&c zhrMbH=^6Ny4p}65)fm(K-CLNb#V0KNq{U0O1->u*qa{8*7(USg-~IJ;?&g{2>;|V<7$b2V;}q(0Ux+AM-oCFJd-n`{l}V{9JFt}I@3!nV z-rxK*Rfj>aArj2R26p9OI|ol&ki}ad!s>Gn%>}Xfh#;5w6hSV#rCLezBG@R%-Js5(qbdix0y9HBBFO zIb;@!m(&Z9ldGnAKkZZs2jhg)o2M%rtRgpg*%QX7am~b~Yp|7T87;TGXbhRrVn}+d z&usJ{E4}Y6`6tVsLi^N_M{(&<)0Q7k;)_c4|Wn4J(GQqKa%$}l)k z0-89!z{x2@oi2MytcWsU`HAh27?nb~<8t#{x$QD@OxeTyC<-B=7s4#MOd6M)A1?b2 zCxT-G((plqgAQUgo*-QFNX*o$?<@>MivKY@6R{V%IHtD8C*GP*vo1H+jYP&U zaS(%`>43Qbm5*I+enam3Uvr->L1Nn@h`a*Fht}J(<&Q5mm&;{Wm}8E0k&Q=XRzxI5 z<|lO8rG~YnrnDkn5uSRs1X1V6#s6cDNQuBUdUou^V3P>_5C!i0uRx`jMaXsH#O?^} zMikQQX^g{2;xjPLV^nZQJ^koN+qOJmMWKUS3I~b895RfPy%HLjPuAEVbmb9i- zTE8?MdHXNTQMFV6i*ad9&7rYf&N*6$`=dB=kGRiTlcAQxED|}f6GGSno*+#(*nVTT zU=H?u!mP-bt-ZK#-e;u_wQ87onXEK=8AH}?Pq3JAtDd|dN`C@Z|9CDrcW;t+?II%1%MsEs7 zlZ))W-mI1(8)zm&O(%io`Ye*?y$PFi!u94EGm6WUdM6!997r^>GK9fYTY}qi{IAXL z)F67kjrJMaLU}2$VfRuA$*JGS`tC7kQ`dw* zuH9&UrN)quR>fmVJq~xv+Fh8J?RFE^wilL3+^FV-DZ0**!)`Rk&gUMI3t_^Pr+1K) zXqPy*1#$AU8_kbTNswxf5X~e6;i-rtZLyk`BDddYUeFaLIJnw=$dDGXV1s7M)9y6) zli&J{Ikbz|zN0#-(0YQ9!$;=+zpgW5IpQXBRN1l^LS80d6K%&1h@5tlIe%(Xqf!e> z3IF~b=Av@MkY;uTs^kf!j%~>iH=AEW*Z7upClaUdVTAvra9 z?P!`X$ishYp1+VL5ko!-Sv7(>D?>^t6@D0UFUCe7ghlh2hxD6|B$pKv9wNGncvbHs zqA89@Q+R?P=Cy5`F%|9{A`iUP3>St(SPl=+2NA}C2vpJ9L#`!wP~>G4LtM`n=q_SD z_fT~i_B(UDyz*9a)k2CG2r98qZEhG=P|WRUUD z*-15^Q3nKqG8$R}R2OF|DgBC~c{R~G`*H|r7lYD|nmTqhucciSn!E2F!(yWK{N1A< zT4{1HWM*;1AI#x3&l0{s=P3G%87gFTbuZ+zcEUNxGaeNtx3dtWRwb5T6nT3jUIga^ zX=;zPiJ~5Xyn77x@tIA34@A^Y5jjLCO&TpPxXb+NR06*g*y7p5N7 z_Xtf_*`jigXN)aGklFI?Y7T}>bSB?z9#H0%1aY#0H+MW<&tO3!{w$wnbXR|S4Isza0uZ-m?}B! z9&`B^*K#c4IyMFOV8qhTxIFDyW0L&kJ?3F$P=IKo*7-_4TzKygSVu-+I>LKs)NPx;cx4}7=5NK$&1*5l^JtMh? zgpvmo3H4%_?$dsQxcgIE%+XT?@sK5OL&3uYk#GHIpF>)P?iX9k@lz8Q)51DieuxAT z+5|E|%KPY=drhw#dhjhy;yM=2b2Rql{oBC9Pu^$lI~CrR5zk|xfD>Xt-QGKd3xVbc zY$)nb40R|+iu=sUR9|fq3J(Nb@ILYmdg{FKo9{CxO@$cYEK9+sh%m?RjjM9-r{g{3 zn*s|F8Y*lNeAgiOufE^3d+3VQClK#MCq`BnDjIRMFBU4k512EjIx&u~Xi_5r3=V_A zCT~QRgvd@Lp@1tC3H*DCtcJ3s3#OxliAKtR4?eE^}r(s^QCW_pXiF5B(jA|Lm&Mzt{2Ug>!x>(%d|84Ga`dR z&tm@@{6cH1-jN1Kqh-%S=0#jK4czuG-|hj6>wo8(#2Bh_M>p) z98Gu*bLH~Cm@{jXgfOkl;yCTnzB5)a;(Ey6%=9*Q%~1j|7C})SZL|Jr9^8c^1NxP5 z7DtYlSr*6bku?avzx!A7(&>c+wx$m~+~#p*oS%5WS%_nrO=8@V+4m9i*e-@UDTs3k zBKj!8Cd|%Sq$+*5xCt)nz!6e-n7&EMC>+5pg$Q~Pd?W8K zFWm|!x9-=SJtK()?T1-M!6l9(U(VQSeyYrou#erC5adfZ?mMaR$97o}+Q*Ozw>`uN zzUws3j!d!dA@2)ch5JKJ{oUMc=FpMULcJUhZO#$O1q#_bc_SEu+f>AcktND@!>_PD zy2{AYh%muoZ6X3EiseVQ;#`YcA#tcK1O*_YPD6 z$L|o6pff{2g?o8lM&Dba!UdMzYYRjJWh}Le37W^z!Dcg8d6P*a5fq__;Nga09D|Ya zvF!*GIMj`D6sqFbhw&70)^_uQBORRG;XEP-O%VdEZwu~*H~RW^WE~NqAabyI7$IAP zvW7xEd4$KgDxG*Rz#-~2YV?@xChEHkt3nL|EfsDYf_n;k*C< z6ez_WC$HOK-n9tslq9k0KXFOyviiBYxSvEvN(4%RbO8zs2nZ1V+YCA93m-S9Z`|hz zbLw6&c<{Wa(Lf;(K|{oKxQ=+8AiakQC5$2VmExX3dOj@dV(QKM=b=zRn!obw6IY$3 zN)(PQ|M`@8{`6v;_1tn3PB{%(_pTs-XgfSXHpD?JhKqIAJZ*lj=D|+dSTaTa(n5Jo zA8`vCmRxNu35q-508ZIRTBUYZXf7~DD9naSP|-_JEkf@yYJ3sw9sEY@hgAy6J0>kH zs$OPQ-$8K<>WyT8moc&!g?3h=34@&ZS95BaI*||COQ99e$HbSPdDdJ}!!2Re-ejYT zS`gf1YiE7eYH;2`-?l3L#gD|i)iVQG(j59Xu*j`xZG8`9yh}c3Y_4UkfbW@#zH&)Rh0EQl z4>jzz*IUJG#v#QErh^;v9H(QBYqm%hBi*KLUCtRi+rz?By!I|_BBYdvT!&n8c;}FfOI|YH-=PYc z+>>1v0=Wg&@{KYeD^hs`9r2KEQSnH^TR*+>`8j3WqA+ zvjZgfL-<;xZ-PEY+x$T$eKGnX@cRy^;9}d6;6`l$Cx-EdQm zp01P+zh>?)H@t-+Es(4tMxz0ZtOcqsSM;XwsF-cA0aE8>NVzmf1E!7sS*! zWuR@xavbfS3VVm@RpLAhvr_L;j6#cj4vI9YEBgd_dsJl|bbip#_2kCg=E}S^J-Jg&5{eRc#Y^Pj&Uq($e+I8XeX!7OxncN@Vxzm@~Z25wX|_>87-4`ZZ=; ztEU^)>3E81njWi@nvrJaG%{vqsVPg9WuG3;8NO_D_BpY-v!txz=2Xv)?c+J)Qe!%{ zZ(=T#77j}+O#7zY0sF4lb7)nnXWNnSoL5sb+YXEUm)g?y(B}JT)TGj5X-zXs+MJ@G zk-t-o+8r8em+Ic`vbv>GQaT~Eu-##?<*CYchqnHyY5gp+D;Q3FlbUgWv9*4@_t2JI ze`s3&=qCS9a97jxtcFsaqEc9)bmy|%Ls!I`ucG&Q^q$c)om~q@urk%C{iU%3Qzh;D zrq{h<&!elB&FXk*M(mVj`@6i?DsI-KHVo(%uUNWl|A3=nvAa@T2E7`uxOds^L0`w? z6<00WcxrxnYR@b6Qd>rLu+#f=s@@qx?EhYv8g<6RRK4M+#&aG>UP3;(QMAL0@uyUr>>F~N4*W$RkbvoP@ zOBIc1UNgN&1rP+*p{igFKpQ)=OQM9iFJ|ESZe=|iPVO%?HZbK<1*4SR-D_U&>`T2_B*?6B++b;jM5 zmeKU#Y*VKL$2`nVnOY5c%nmRu9S!tt|9Y@qT ztkYxh!#c;}P19euXGg{5sku|z$4fI(tEP57q;y}MBV%=@bv~ue6()x)#?vU6`HA=5 z*g0NWo$7Mqjq#k_sl_+;i<=)(du|*N?oq|qIf<)ci8&=nc6~;&b=+)C%}*YaUhx<` zrTR{5llnE8ow{+_s`LS7TE`iwzSG;JGtV6dEW2QO`*_{(=svKl?3UwV;o>vHQfqJh zAzpFqvL$6>WAW00WzBBy9gF9*m^S>56~pg{$d+6>nN!N+uHNe&L+nz2hBQY$JPcal({eo-nP5&E)@2ES~dUuXx8f z1-;|-a(34WB+UG)5~c@<`TV!-nuOVSb;20_f8~`4lS^3v|JA!LVM-}aOipkB2ggsG zbMPtgHY@(?9sfEO>p5q8pLoky!JNPP1jA~35}LT;xRc^XP0dQ2+}_kP#>7nA92qla zSAy1qEoQpm@pERZjIY0-^#{i6IjOzjV3=4uZqhdy)2cp$W0l6^G4l;BKZwB`9D4f4 z#M?4h8!!LFm`-%%>c>6}yDCc$@>jg@zxdL+$y>KEJkk4rDz5+>977u?{e$R}<#CJoC3(05(8&v$T?Z)KN;dwSb0Y5|sb*-Pq3-CeKyH~uvHr_WD z+q5F~X1qF{tlmL?{o9)(Z9L~&V`gD@oNmJ1b0fcjD|;uHuJ8z){T(w-oRVO?b8-HF zDE~8D*(YK4+Wc#FlFxY3!u*luWeT?RO_)v;$RWP^dk#rX!lcDQ@5c2`;gDI6`oWm& zejFj|_>ab{XTW3a0Q%4Q;O+PeBeHiHQ#dGL_S=4^lQw(+%~&_vZOlK6v%anNJ1!m= zjr;PSjoFM3u<Gwc^*CZ3uwW9(?w&3S!&{EQ}hh9{^e zTg-H4DmRUo({V$*^C@GP?FOeO467p8*|X?%(};xGV5^@%^HP_zAijiA>>9@UwDEQ; z?%5DODlNIFilcT$!eraLPQP+?<-27RGs|(kGZUu5*4v2}4~mX*=iiJOJUH6h%kU`W zC3qhBZWa87dq(ko=J>rF*0U0(C+kd(+GSWTgD3xHWao3@+5y(xZ_KAOSb*g`xN*fz zAH@5|W94(!eH1@5Hh;ypAH`3slPvy&elKSK?YMjVXUqa8EAya)FWkUQ#D!iZ9~8+4XZ7%RK)yH_>NM%2UO13S5PLxJ3D?3@*zw z=+@;24P$0M131fe(DdM#8Be~uz??bf%FXd%vHmMw-z=wl7L&H5h#QZc;5G-aKirJE z+x@!<=V0kxCiq({H>-s8>GheP%efy}C$ZeXT>N=FQPppCV6FC(=0*y12VY~|!D$U* zMs9$vgA%MecoyppnjaJkZjjsTfCgc?Np`Y3I0MTKb9fL>#?1dHkh`a=@Eevp>1NwN z2PRbRraf%~ zytO%9s%y=mbCz!97|odz`!aq(Z10>4zl@KI?On0%%lH?uV!w+9XxkB zD>N>mG!_cDOSw!v<#xvOBgC`boa;vH&$%W+rQJIBWVz)gu4 zh|{RhYfjeJ@vo9ixj31b^kaAAZCt8ueFy$&OoejEAu+S>j%Z@O!1@~5wha?IEV?LP zfa~E#b{vo4MUht|zlk@FC12RfgBGP3Hfs-l6|-D}y*v7MW197^xxt#N@J8b9f-;m* z&b&KXzpwqnBNxu3zMS!kxl-rg?$&E4OAN26Kj+|Y8O8T2vc8QcW61*=*IvmT4x^Uc z(o9wLskqP;Fyx^sZio+8mi%kH{9+ZC{2P?XPgc+ODm<D=T-PeB}j$;lqLVL4z*{fBaXJJ>LZjT z|8y^ZL=;a_uc|sfD&VoQs``4bLWzn?eo|TT7kc?mskr1nqb&LF*W^q8OzDRzK`MN# zEEWE)sSxJ>tKyPxI!bxCNq!ctwT4t&@(*{G{-wfTufl0AA!w5+RF?cJy!@+FTspW$ zS@Q4q@*lAAVE?7UJg>q^ufl2-m;4H4>EK&0f0v3&{*TI%-|+BYhHU>Fg2og?TUB*4 zWvOsNSiz=bnBFQb9h{^r`2}A7I2D)t34v|@QsFkQ!c4Ei-O7^xqL=@Yic1IO%98(u zm;a^2-Tq63?OuhnPPG?NT^wyy)%BI7gRXejeF>Yw#}+*Q{>aB-y(o{zQU5e>N>(gr zz&!}{BEfCa!5FWB3shWoV63v_&+zigR9y1!=%o6W3eS5LmUXLeVqO`UtiEQXx|wVeBRqhIke7R9y0hDNBBdm!DK|$-h}y@?VeyJ)##?f>d}( zSt@+(<$tToqqZB^CT%2Hv7sv!A!DlQ!iQ0RRruSh@UODu zx9L`UhT7q1;|WMv^80%E{la*-|1zQhUWIX9g$XJy`ID5TgWJ9QJ5^lrXDLhmQd~5L zkKN(MI~xkt&WXGNZ%|%|yNs|O?o8b5z~#IH2)DS|iL;5u# z<72H~z~w6bIi9SXel$PtQSOd6&W}1g7H2ProIIX_O{$<5mOTi!xaotJEBD1~mHXje zln3B^2H@%s#xfx1)3E&Xz&dG8r$F|=C5*tb$Ikg!_SpGsT#4nTCR2Q~wTsWdGNaCA zSZ37u4lM6*!fjmK+(m(2B=_KGtExWduvl;mbK~Kv--2ZgBuJ9iEkAUO1v3&1h*jS8 zaIPiHNN@;o(VXpn#*a!CcjBcRhrXarSnV^c-z8-p5ep{rBAS(xWwsiIEX8HsFke=2 zS<9~|Oa7+X`APGsN{|YlD@%p{YF99^W1?A*{4{0B?}YWd9jW4y-%UAq&>HDgI8!A^ zg;C1VL5Y{2RB_3_Sy}R*^zxrp@!&ygu_}-X?|KzBs?$6dCVsluC; z_hLOGf2#W2=y;8w3Z%gnoYuNRYdOtpHa?ChOMXu;|3np+_D@!p{4r6!+-Nh*1u8)* zj8&EjcjD$}wKuPlEhkqwZnQ9Ahs3LQe8n03tlY-G!*g-4*2!YqRKg*6gK}HELpgz4@jVRJ!D+bD6VZT9$HSFJ;9})`JYO6>XvECf6l_!p=i*Lu z(9rJD417FpV!Z?p#_g=Xz!UKK))~ifJ$y2OWQ&;taN?;%AaMhUlb>|gs}m@wwJ zjej9Q-jB$XUxf2id?H@1d?_whz8p8;5R9|+AFvKb5I6HMhb-KGExx}lmOeIK#mzAZ$M_&FXDlYk-DNFtzUjAPy zPJXg_zbcRl?RwTe1X(!Rm~v&wAL!)|QE?eip0eZ@*2+(2m@8C*RJcl6D%@GCLWY^8 z;*y_Imi(o7%+vO#b6h*WvkrG6X1>Sci3dLyOOkMWudu)+^unbsf%r^o7rz^qo!#D~ zQy`b-SMWUYC(7p^N?P|0?ea5m+Ovu9D-*=0SWBGsA2U;>0ttgDkOp3~b`89Q@1#Q> z>WRk9SGWSZyI=hixjRxnVe5~#cJ(jDX^Ru4nT>C;hI0PJ%vTg_q`_8!;--EduJu$1 zx0pEyXDc_to0Oa4iKFZfVj1AcxER;7?M;$=F3qm}6fPwm5BEQAUZr5Rs_;FYhndk} zkDHyu(>e{vT9p|%8Sln!1}5TSH6!<8=`h^l=02P6JQquQ!T!snKSaT?G>~gMSZD1j zRATACc|Ddj;QStzL*)DcmP6#c3Cj#Se~Ncud;N=>&nYnMu}j#BM=5WU2KZ^Oi+_V< z%ALQ%lhuqhJ~_0DH^XvBoLgcJfxG_3%^?)jQ}^q(_+~0JriM)UU~AXFX;==K^XXU) znezy&?-ltt+PIE%=cfv1bN>$(1)pptP#}9898=up7>+(Zi(2x@=R7QnvH_M4SZAvS z<-ETJ&sv(WeehieJYV?+y!)JJ5k85RCrQYZ2HD5oq(D{p18>CcygsXM=&*;FIS2P# z7M<5CtX+Ji6g75aANOFc|kvGo)zdnhmSrNSyKdn6r*|HHCJ&Zl(a8z6MxJPpf~ zm)ikt#Il1f-ZXhsESU1(yr;o4u}q=!94s?5#CG_(cxm)KwVi4PWD%z4aOGT)AX_%R z_L0MBSe_8D#ms>@90KKJLkjeiHpbCbRh@A(tDXkk_Yj+@xO8|7o~0T*4$prjVZx1X z2;nj3Myq}-ULM7h<{}CzNeHHd^WbjWYIVYdTg=>xcdG_g<1H$G7fu@;z29tl3ML+I zanl0lDYwQlpm5_`K$#RwreFjma-kV$?HU+@Wq{6kIJ1A`VR$p~xUE0M+T~BhGGOOY zEISlzNvchwK=!~T+=BHXxeZ4f-))gY!VJx#M_J`7upEL$vCuzYIRtLi-_M0hrhL48 z#glPtESM3Q@uaNc-zktO8$f}0rs`0R@eAI7UQ}^;0(wbV@;}9kUQ3t+?a77h(0-vI zTgAGcfe=k}@^Xp7qrKRC$dW`q~3_)y${cpV!r#v4_9Dy~!m zScH4Lo^bd7n0bzZQBn|WJc8l>sNg>TZ^b3AC&DlT{u<9#-ibRifP=`8Mcjl7NV$r) z#EaDc`r&=VgZ-B(gDBWVf}7&2aON8cnv*SNuEX_ocC%? zwDf!k&LiJl*m9E;jCs>OfN-QAwGKPw3$>n~!X@Op_+p&@R^+94vhvH;i>V-2+Tnc0 z)A8h)Uco3lOEqvFUZgx0?^3=PCn}=>6ylyAMmx0Fi!ZJ1q*+eEaMi#oc*kb9>eJ0X zcn?$7ggub6q~j3wM)@RMdY=0HpF_bcmCzs0S00ErC=bD#l=E)j;X>QJ{ETTNj<%}mGjaYsHShoHnEy`Uvme*)nPkah^{oT=49{7y+xjgm0}R#( zPss-i1Giww5`h_cos(+U%Ja<{pH`|j#(XZat`lg=&(Ckv3Rbu9%;39utbaWNACjQ`F%h-E>8PAYG8=xJlsRYM|jT1<5m2e+D@7=6qKrj3-Mg# z33$2krFf5W5pMKFG{9>-Pw_kzcd5ze{(mzCWimJ%I0*gbjo#b z8FqKmuGVzM7B}7TLgEeN{wKHFb8Uf3I1kHt?p%P&mB--^lqcX$7ex7!aChZGTxeU9 zE8!J5*ku2MA39N>uY}8w=Vrr&rd7k}&KeiL8p{kOUBXKg$a(A%OfP<&QZ>*I%Xz%mcJL>bJ$84y-o3dr zV|QtuisiKAmlT5my@2Jca^8+PE0Q$@O;6;l6pL!1?O*|xMcKpp=sq;SqA9QqR$w_K zt?eGxIVlz#lC!J_Vm;t3p07Sx;(Y#hdsM$~?FtJ$U*nD$9mvh&9;_GX{hlAd^VA}K z1aDM+9Pdi1f<;oG{G8_{*lbVme`Jf9mvG+pgn%t(R^sv769TrFdCl`$&u`&m@%Dsd zvvD1uVBYqGfQ{+IOSUHjY%%i*ZdDN7{bIwoxwtjJS=0s3b87&fjmIe8jJGI1H;nU7 zckm(!+ArbF+Y{0|8+(Y&Hwgh7dx+;Nul4-4=MA`0<$o|NS-W5p2|0`~SXAsmwRPBG z+{A~6d*qys3&}q`7!DT}YZpHj%M3Xmk7b6OdnGAYOhGqF-0KbKPZgK? zO-C4$P7c)LdsSZsaB{5< zGR!F|E<2E`+fVY!c#ukv2FBsUj)WZ(zXR?0Qe33sMV_z5(-~lJX=hD6g6ET;ON;V8 z;YVxffc4L1RuzbU!%I{L`*4Nwzj%jod}M9c^;{oMb~DHjj>Cy>6J~OZ{$)h>*@AGF zW9C86593@axcCBG^j+kq@NDJ9)(fd1?bkn}cKqNPv;VTkO( zJa_bb1RkaGyWx$yqWZ_;%wwM`!2P>b7=P3`vGUeeG zHzTpE3Fk9$f=@`^fwqD7;w3FT`Ec*Yn2Xy3Q5SIbXz&gLu^VQ)Vk{v!T z+>P}ink`PMV>X9^a^-or=MRaX0a+7|;R59+JwNODd0edWm*JcrqxQ;ia=I#5O@a0s zp4Z{ID*qk4TlsywM;-GIai0sLMfWkzQ{H?A$G=Dwd_jU%vu7cW|BODY#S(Kz69nPYK&4hX!?FYHf7~py1uo%b{5=T`DUkSfYZu>v z|0Eu_@q_uyC3f*9_%9q>s>wRZ+QoCQ%ov+o|Kp}V1+wVEE!_;ng;w%$c?ga+zSD{I zD!yO@hmi)|X*?gxqT50xxh`zQa?GbQV)2BLd>UrP`2COYJYPhCOmTB6$hG}@ECUK} zHtFW*Gx&6i>jm+2GfWLg&YDYc%`v4`k>{&%y{ZJYW#hdv&K%441!VtaiXW$7wn|up z*D61Uw<*7f^J$=wt-lo~eoY|R_Uw+4jf=boEUa9a~B4|z;{0qy7 z!!6FY7mYa-_n<&_;PA6UyLe|T19a|+^&#z!*=+wz;jvOdy$e1*ObD`MibrBSptC)n zi;L8NFYr7T&sFh@1M~Sm++yYu3i@!2!^h@ya|7N)g;6BPL*xYhhuGy`>iKfKL&dMg zyOoRae&wmSRdR3C;LQ|tQNGnWmmXyRo4ojEp10sWs{VGIr~Dl*QvMMqrC_%0;DU2% zCye)eF`lU!D8vhuuf#i)uf=J}|f=hAaH{yJeA30QzI^<389qCXO0J{=4rVS{qMwfi9Pq8DG`c_rSh>c57w|BTvS zi;I-sPTGQUh9Ji{XLRj^0iFlr*{Xq|c$@M_+-YCb;n~(Xc7`^4@#I#oU>hE#8u%9X z{3~kk2Ru>v7wc@h16Pl!9WVBL1D;9!F2ED0{8eYYJVNh51ph>UK&LOf#3K1 zAs+u<)WD~Brt%iNNqM{H?>v8x)2gMtB>yphpKA(2SK(GcLg+tm1NNv@kR3N!1)SH| z-G1|MBaQyc&73c&q?dB ze+FIeHIF|u5FfyS$ zaNwSGq7Gvh@s2fahHs&@XaUnM~=lw3c`(FD3Ai>bFrM);l?i@U^$PS3-EHxTlrvy z?yz?8yRe*w&i7zBO~WnS%*IJs)h=NU1+uE0AH=c-oFB$=NSx>6;kY#ga){PjyZC!} z67jf=|7Gps`^R$rT}ndCCLBJ_1a=9Xu^bZTu6R0jYhskOi;u>$h#yOV4CoeX7rza! zRqf3j$NJksL04O01qotTVI`I|;Jg|)!^cq|9qh7p@gMOJ;s@Gzi}9gdyfv0J;hdSI zU_1rAY=uGAF5y%>UsV{2$3gTqCfZpyKK%>EyawyNq^v3|-J5&iVPV;4yr-&3|2WAdl%=r31ByzxMnsE{ozx^8*D1 zb)&Q37d%^eujju!@5lLSMyl~B<@iOlXCxg*8-Hl29tCTm2cHE;u7C&pIe>rB~P*AUa zG{Rk;f5e$8z6a+k|Bk0JK=)24aWRWn#XH~v7G+wn1L@{;8_(nUGZ?__UWL0o-;0;1 z2It_#bm(p_Z{SV`Mmz8p-k{>Y;=RgkC-S+0e3}1XOzmw!u*#W{$E{s_k>_V|+JtBT zpWu2-X%{NUjGj9ww5xxC=dqYWVEd=S#bH61k1xT^=pd64xzyf=yDL}V&2;EGSm*g2 z&+pQ6safymQjTfuyiWOLykGehoW>#yH-4M$Qr6!Xb*+Al1pP~#>|>;g)XR!?zG`PJyhUzpP#U{!3YZ50T*BbRN#VQ|uBtV>!*7 zyW&;&APS_xQPwU#8p~TjY%UR&! z8CcE&=L7J>fi>p$e<)Z-f;&x4uyz%CV_DVCCrJb980TQdWVZ~{A4eO19{}sy`^2xq zv!EwQasJe_8O#%qT>EDR1w8$5|CdD>42Un0cIA7&a-o^Y6v^|zlY{w)PCPixh~G1W zA53yL9Bk|Vc_x3I8_S?1|JZZ+L;9QrVSb$7HROqkLmphZlW~3=KAJBct3RZD9hTFo zEe*)a=yEKl)d|)^)E>$MNFkQf(tX~4-kNl&VU~G*8JFABnDx(}&!J#R)96A`fj23y z^ZbtIcdf4UZwJnz$GoB0d>POao9h5e5@@9j~ib|@O&aJy*Rp( zO~9*EgO_@~9B)$bt8tf>(Ey5ZZcBClpBff~|A2)oN^3Wu3eRhBiE6MC?`Rcu@Gc(A zfZdG#iF+z%74gJ$G53F$a2f>@TSpBH_k5=3QF!kmQT}?t$lXoNUCZZWOF}{^_MFxmLH2I;f8m zDt;X9a#$4a?YXb#emFxuZcb6Npp30;R#Q(xT%A;aUqhsnLH14 zwRZ9DxD$)W`B*HcmGkjfPCMsbSpPZFK6n)IbP{MkX(reLS78!9kAwzcf=OAs`2Bbi z@dItV!rH~x;K?ffv$cy?;m!Tr0F!aEmjb!6xr9HloQBSSV>xY{|HaSau@uM*b($R7 z#gD{tRylXWauzusjcXoqlQhtS0$DUJ;RGy;#<@3^HQ{^`mNny?gJq34_s4RKod;sM znK=)^ax;^S^&dBR6zKc+FdS|C=oRbx_ml#D8qS5Q0Uu}O3Fo*A`6~86dmZ6{_&j{Iav8o#c^SS^`Ab}+e86@5c|GMG_;Te7@MT!uKLj&yI|YR* z;U&DOM>OJilqcXyRsSBmc@n?>=PInCV3$hRi5sW} znp{r@Dt;2qRPl*;vT_P{QGONgSM|Tgb1zZ%|7KJ8w5uxg#eI}7!FkH};W5e;c;WHU zjIG16Xu~aTDzPkT=k<7RvgS$@H}6p(tJEcYfE!`n#s!DyA8Qx?4;QQa*bU(#b@4Pj zSH@W5WIaX9^O%c^MoF2XOR_p=pneKhNj67al`?xW&xLxPTpS?vFPV zMl*03UaR6)SqB4__y6m>gm*l@i{GL_`^aSe#4=;9!~LGCaf3clJdH)(O8EesW6l4J znTD!B+|+XmJVrIp25(_N?shr=4?ijD@Kn6{`Se+uq!1#~C_x(jbm4W#fts>4_Dp4_Y; zTk_Z7{b~R|<7NY*_;1!@s38OBd~+BN`={V2TM)L$7mabYYTyLC_lowxSFPocO~qr1 zBEN|XRQ`Hgq`c9((hlI@X+hlf&j6Z*1vPur5|^q5GI4?dxaWmIxYNLB5A$$OImljyI|J zq8Y3|Dd2ZSg45y$FX0!@zv5l0fj@EgNm-^OJ*gq;`uQ=H)_B+yBM8EINpJKoB38=N^j8c+gPjEvj? z=bm9L_rK1zpd=P{P^=S(PxV}iC%OiR&%n2$V14Us`TQ-n!$Dp`p66k>i)tVr zmnolv%azZ^b1&eT($45(c;BdK08irVbFl2c%)qm@U^kKh{p=EK{5Q{k;K9;>jsJr; zDVsa^?09YzPq*GgzO+BsI_#fm-T#{g1$=|S9<#Ho zgBfOqMteRV&sPnO!(XXIcsCx;8gTVzV_6f<4~Ubh;1Mt3F}z8|pTzUkdHezX0CUnX zJiZ}`A64F4q67i=z(vkx;HY2&dE@T!rt)b?qKMj2}@AR^o@1f5Q#9J-aF2 zhvjzd{O?_?e_as2ySCHuC{>|8o~wK?o~PUlFHvrdwjW?jT_L_xQlWz&R3p_S5dza6=aGR zVL9zw{pYmh{{Nybz%Sv2s=`WKcy-jkYgiu9T!U*pzwLPgE>Za(;OW!S#{f!=scx!kcJ6UGBfq z!G9Edu8#Q;DPy)`w~Xm9r`NHbu`yo!LeJxIsj5E-H!Gn%*?$?rZ0rqx=uf=N-|Jj7Vmd8f?gEJTP^24SYA3g_r>y($+;hvce~C5u)N!K9*pH(u=8m+ANQg_X6V}c zSbtLB60RpJpY>`MB)79Lr<0^9n4F(atNeJa#*;#`4tcT!H1O*?A3?r)1e!|8ess1@agj zZgKNAmJbrn8?b!vaDE@lL#OkHSf1&eKgROV>AV@sL#Oi>SRQKG`K)N~zj4!$0=eJ2gvMCz@6OGzync6X ziRJaX^C7s*s^}JkP~znUPlPwp=IP zz*p3J3B_TV2cZXT+gUk8s;_3Pp3)1&qd!i$uf;G|4hxW!F#3iKjs zg`{8)=Bdg1^X#zLy1gL zm9?v|7t0}X{u9d-I{%Gjik<((cVTxO==5l47e5lqjE5Wd|85lMRev;&wyNqLSg-mM zR9sehKGu7Dj^{CW10B|*QQ5&;@HRI?^7;P`U4ZYx`&|M~;ey+uDV~exD?jXcf#)Z1 zxypYAm);(>my|KRK*3sDAYShI70;{iHkJQ6F1RBa;G4KidA;Y2k(0rsd_=(#RbewO zXUg1jeSCiC@UX;9I+iI7x45Z?b8;geh&QQtL#z*RV;pYMKgY1y{MyHO$5{UM8&j4Y z3$JW_xzfoDttDHobgQu(^We&c8;$4Bv(RDiahz{Jj>Iyc1o`qS94%?zZL(&1;9!S? z{+aS#t{}+bR*dzC`{HQh?|5OoC725XC0Pgb==Hh0m!ozr`@&Y_h`6h#tNi6S z`!03=e}#e`cSR$7)${cUgh?iUyeRpdpo_u$f zZIi!XfM+S6jW?6;u5=IJZMXq7gc9ZEkMl`}0cF|&^~Du9IM3OmNq8e} zYvU=rN5xlTLwm0NPMoRQZ=77nqM+b-+dv*8#dsd^6Kwomyh$~%8h626ZG0yl zqvDO9U`;8Xh#M`4W+0j46%6n^80V=9L-FwEq6S9dE^5G2aUbPHQeXKayee|i{71p! zsK6ZYB!@sbAJ0=x;zH$T@J!{8@fcIY)xiXt?%^x77K+aQ_ zFc8am>O2I?Y37`VPB ztdU^jD-^hk^2NB1@+CM=`7$hLg{xnL3vt*#1Gt)k5|wZ*o~e92o~K-b7b_?6D&?E; z2IU#zYolL0S`ym!&j6ND@FfW{Mmfe`TDuW%$Fi!OcVJnx&O31ex1d1kH+ed=i#Nx| z6F(WYz+U2)4G(`QI*q@@1PGv{(lt|y`1|DuE&ajx<-T(T;Pmtm>z4%wZa@AZ5i&R6*lCMlSw z3LeGVloxt_+Vf)E>eXlfOYywdBEO6`DgO`eS58(?P*f3BSm*g2&+p>JD*r=V@Aatu zr+BdP7QF9`D83yRt*LR+d{?``{OI{-yf~_0e#3h?3v!rqInUcZYfNHYO@pRA9;1A? z=PtF({r@Nm%2b6Oo=?ELRJ@PpzPQ1g(ExJsD&-+~oAT+}a{oU=7vQsSv$vuKN8>%p z1vtAhieKdU63>_60+oLiE_^$z&-&-zcBNpEEfAM@zRB}+yjkVnhU>i(4d^aBYJKFC z=ed#P`p>^!L%}LlVZP_b@h%l#AvE-2$SM)@5)cXkf?r^Buk%vBYR@q8RESMlCB_k*Z| zzIeQHuIC}1^Kc3IVgC$Z1O;WPfwS-u<XeB@M*^Q&Es`?kK zA5cEw{XlT3mj{q|%nam#B`JH-W?15P9gt;0i_X_7Yqkp#$U)~0O{6w zSPoeyo1cF<|0oshb+PUJssu-l}8f-BfW!b0WGJa56Xn1Om!keg54=eaPc{05#6 z#`{#f8P5JB>aTT@f>ElV9iB`Ft!)QGtiu8FtJ+uw;5-Z$TFDw1iKC5w_yI3c{sk9pi8|Qp`7h7=@obeJ zdx0HvmivDO1$$iqJ`gwB8g`{N9)H0}Y%EeoRIK zB^1aMxrEoS?2&6A&b>hP*m(e!L*Vjn#j=MkK975W?4fg~qF8VUx%UJEz65iKu#$IvzSGnOfI4IF(XKWt{vbthkLRx{KL$(3vY?s;SMNVWmzsYUvM=S{fmD|P?> zjDq3n?*XJO;fd$REV`48f7=xgrUUmb_gFk$b$A}0jNQB7Tk&iaUy2v1`d{FRq)JF% z%BNWd;NAsy$EGyeqtUpOxO*3T3ocg!UWzx;Ue{o_yl$8JDxUEo*A?vIN8@CUN*F_d z{EJA9Yy-FABIOrxVse#|=W#C1wjF+kC#rbba?Za-6i5?tcROl1Kh0JN z=i&3BTfPs>8M~(V_BSyy=f9 ze<qQoSxwg~s4z&pDLx&OsX>!=`bCf=+nWO>fU4faJH9D(Ql6}cPU zpnR<7o;42czcF(n1r7d=8p!e7A7`rgVBAxAC@xkW>G^EW=i=p(AN0=*TtGp={%8Q> zak=s&tdC(Kj<%}mE3iInxks=_NcJLXQKn0Xb?R9@q`((`&;q4GE4@;Xs_ zALCBRo1;B6Zfp07u-+5EGoE9 zx3A+yOli3B-7PGK$oVZShsgOIEQiSXT`Y&lc_W^!{82gUUyhke_=E&mM9!b#x0Scx z4a#5PEy`cx2JC>V|1Hi`-i6yL|5(oX*G?7uOhT4&70y=Pi#sX*iRF;F4*$k-$ejPh zatNHwE5_W2n@}K&{K%v&a0%V890KQ~u|Ds6;ApF=J^}0V{wsL}6Kikw*mpdcSMa;O zEb8FT`|#9!>D94dM&mRhpBs|TQy|Agx|D)FSf(gAkMXgS`Ccb>kLlN9nNk;j1Ndvfv?^sk;+f|Uu_>yW9gp(G@zhdRcMUYD!0I!l-uBK$_czjxdYBV zI2v$g+*A1|Tqq9uX8=8iv{Oxf`clr zTxMYzz;IfTd&P%X2GE|kxLGm(-YWw*!ul+n#tx0L`E#-C;704ui(~x#KlboDTOsp$ z{xKQ`kYyA0s1eJx|De_UbX%PzO*}Wp8&v!dyu6v4k(fDD;p5w3bi%qn5sO%t%woB3$U^ZSrU>RY!#mzBT2Izbo zmH|5V#4kYEfnEcHRDw+Tc)UpM;Uv$6xLn1rlz1yQfS9=! zPhdc8=~edlF+8|+O+0CytX*K9_53_8j4GIAxb%>k2243#rMwzvsu`%jeU#VWyc+ZQ z|4j;HgyF_-zu{@h8?c_j_i?mURey-}44yNAM=l1;gHUkR{Dx%!?yO2)%s=^y522Bm z{QduW6M1t*K^rN+=W!Ou9<;OmSam3ep(Ajo%y5U3 z(nL232HOJhvA9`VHzWKlc-&q2B+vak55Nl*FaA^o_Jkbf1I_8PryCZGvXwCDfumJ{_HiZKPhk( z=8$kRKENitVeR7UupD#eO1x0z|7Pvte_&Y?&VS+H5CsMN#iTW?zb^SvLbW8!iXJ*U zuMO=Q=!*X!?tU6R%G$+8<17vtOCXrhTdZCDHY|tKd1jIVS>>+aZY-yGO6_@M4n_m65Ra{>ECO3Euysr|Zfxo>5{#9{lz^to1fI8T1QokG4J8-m$ zQ$JbV!)xFKl^_j_^%}TH#bp2!z517`xYWNNm#MStp<3qi|05L4RSA#dU5C3vz(2)< zw{(j99M*fZ1V8Zqm5tN#d<*PR6HpS4DlMsQwcJFVO|3xRb1*%_3D?ZxYVEK)xRZ*hyVW1Qm=vK zQ35+sRlUM%V5N%70KWC=?^1E8|D#v`=bAX@zckSLt=dzViKDHm`cSN=u)T^){h?m{ z;VLczIK!)dmW#{%Pa3$%Yhb!d2u4v=eXG~N?J6$yU-IggtGEo{e_s7pZ9KUDN(0|} z4ea(B_{D4BR~47~Z7XZfU;;;5RrO(5&tS(e9`ql~zzDB_e6NACy#~%zaT&l2tWVS1 zJ>QA-X*(;ZANJ2cd8DF1k8pHL-c)kl=Mt5N$oqo|;XX-+uX_!yRdH$WEw8by5MN5sy+(q9XdwErT%$X{{1<-Wtak$AOjfZ zH84TNrGa~J;)v+Vc)#Zda3>Xi1ou#W{B7?4`Kn+M38l)V!ekWeh3Ft zK$0A?msP$Dc)Qo$j<=)vrwW%^ufZR@2AaQ9dqAylv~j7$dO+<|Tm~@2tDl!t2{M3T zUIQalTpF0_HBhSJQh%CP{}vUO`b)j~$>l0R8d%{quu{dPfp5JAcB#13|Iw@evx-ao z*6VA{VA5n#5N%v)v7W;ADlQESt=)hbuHrI)Gram|skqd?saE}DhMBGsq=8$#25whz zY2c+=4P=;d6_@(|^Xk8<;!^*6U7x>yWOl0rY2X*HfnQZz8fd$r))blqjy5i}SkGWb z6_@%WRDITehRIh6GJvza2F_J+X<&wGKKCyd;Kh6nkO6eDp95Z!e7FBH!fjrI-*^pv=Qa2}Zq++sa%iUs zGx#%}d0!&Ee)*SZVt ziJMs;kLxXp;)C!8;_|{m+8d6CtM<;p#mW=kXaC1gp~zOaj)XicFAk-FGMsoSVRl(R zg6Gpfck4xX(|?gamHG^5qK(Hl@|q5(Ss#VV@j~k{8<~Gy;VwxSmoSrULdQ>71LG6H zzYib-`WuhGClUP1XX0BoGoUrm9)E_nyp}L)>x4V-cp)J9%|GYuIA6o* zZrfj#q~Q9^;R}Pt{J?c9mOl4q$mU<$-P;Bp4sz}8O=`;s3z@!M@(Y{7KAd|e{=ma9}4_!S+j2){@q zz6{IniY>8wv<&C=r@?sGK^2z2Y?5u;J7ODW$!-p*%|GgEzK+ih)eGZEa~B20Y6e<< z!z!JhF!{E^LwN0+nhNGKEWe_WYdh$;gBe?$WoFp{oQVr(CCok>e|Z;Y1?>;VGQ&UO zO$!ocNf77rf4!>kO{bj8vWLrlXH6U${#{VV8fu8sPs01MKrJ zKjC1HWQrTJwoAC$$uAh@+WLd)#DaIf?vNIXD_KKz!uoa6Vy1Lb!X$7~_V5J?Hs6pi z%WVg*rgQ2sfCB43vHS`}D?7zKGWb2AEm>y1jem78@%33|ymbo>w)_IaTsxrQSbhP) zomF?>%~vGMX1V^!0N$rSzKAr+HgH;FezAz(cI#oC!ty5%8sH+Pw2`L zQ8I5}l8^vl0)d4@9`)B%T@scbi5n3#5H^MghW?dECJ6~3Ant>+yByY4K~^XP)Ub#k zqJlpsh%5vMLIi=hyFmPbfKiTs0X?2Qs37}QzwY_T>zRHD>p?iT`}XZyRrmkiegoM3 zL_-Nr+Y3#K5%B4N-TdD%1^#`2-A}vRP{0T5J)vix+npBteS1sR;X=Vt&d?$K_&pyW z+(X*;KM8m?;I`0A==meybr(PeiXFM$ZvKIHKFEW0 zD_}SIS!(|~=ZqGWvjMwr*o!Uh*$8;swt=2`#q)m#?7oA19dNEp&AFq6|6_n3`PIOX zY(ETmq)gmOp=^)BCl#W$Kul=2hOh&DD9T?8c%*^W58u~2MwR8_g=`vYw+sD3nnkXeaJ*9 zBgX$+;12_Nqr@?^eK6erfbg>|{7(4LS;RUV%{MtM4F>Se} zci{qg3qn{BIPSwB*fT5tr6#xHhXKC<_{xId@k`v)-mroEG2k9BP};xaPlFJ85ZYov zmjJ$f;;f+^z7;V3V0)_vo0@YxX(_e@Tly}*&gp$0Z~_iLQ{2Dobojla;l**Nj-ma| zfK59LFdlI5r4HVE){vBM0_^?(dr~~#_fd?k0bWwTrvZMYzcuV6Z^8xlmz>Wm5GF3e zFK$j5wq%O{yT50?wYYy7VE31tOSOCxu>1Sur5ZQSgk1rAd4WG6gj!F>f{GnJ5AYvb zGln^S2p8NR%XWj1ZbknK*o}@nR;-vt&|ARe3kCtZDZPco3%&{1jR_uKZ242kXw&?O z6wi+^%~LaUecg{~Z7g2!16*)}6YB~Fe6;=DZ&zJBxy{i1fZZ=K9lB>5KH;nh`LFz} zC>U4=*!^lx3I7qW`%#_}Uc3sX`Ke*cdhaR>)3^^OzgG~r_?!v(ryz}qZA0<^VD~}P z#l;JI*T68n0tR+(GjJVX*TF3<+YxIq8TbZ-wAkWF=i`?F;G~0s{w;vr7~$>30>5&h zePM&QdTPLU5=JtP{eXpj9338i?7Swmx83hG8-gpRwMdK! zGhs581X3j|iJL7`Zg(vzlij1LZc!IEncppLlLg(P+F+x1OoOMsNqxP@-JW=pi|$c*n{=yC*V=vIdM9~tGF{JmYe)^bQ<(Y(hVaGCZjRI44*IRJ?E-hI z*73kN__+~;FzdoX$-!{>N~X`sQmITv6Dd<_LalS9D)zlqyYZrXn2 z9PkmYpcb16+jltGf1nQ0-qA~D+B27vJr>uYHklsw09^~L-Mky=xAZMA?qJ->aa8Tqb)=Q{nieP9c>{h9@qiDFuKKo*5i*hiCoMafA{T) zPkIYG&-3;ty?4V+RS2Vt!Q4M9*RBnhITs9LFdEJFZmtp$wb>i!d{MU9JE>vPRBIkW zOa!Dt#P-3>-lrN6C7r22gvM`Cb)GYI(i1RFEK5q^M zQMH)<2)(LBhBhg$q$if_OF}0{cZ3C(r54cF4?yg1c~o+ z7;i3;5P{lA*Ij#T!=AeybtnTEg?e{QUk zuf6`(MQ5Ks*xXTf+X?JQ)spZB$fYtQp=p?y44N(tHG%IVku{m$^oO&lI#e~JEt0ls z$f{CZn)MtwtDK8TEvn*W@?obv<6YEHii?m%I)rHs7*+PhXS}p8i;yS!3c0voiJ^49 z{qbh+AWNU|j+5(Fx4X9(SLhA8UB zE#AQmCXL}VqgwJP<3Zv`Pq&|b&fB9wIc%j7#=!qlSWY|mGjDbaMTUs^VFs@(<51_h z(+HDLyCp8v8ZsdD*ob*YVV^XvaPW~Oh+5)Y*xx_rO&h2~v|sqS_wiO3nK0%`W*X57 z<>^ROt)tNNhlA`osr83U%P6X?N@W;Q>ruFss1+e@9V<)~{u@%&a`mFxx1fB`_W0e( zAv{`l5A0DI0M3h0x{iAh*c+dM3JqDNdDZ48&pz5rtXaM`rpqc#l|ANJZ@Q_bP;S$B zk6-nycUEIZP0tm1-gt`41w~e;GDBs?<2drOIMt!i8P6D{A-AiZgBDk+YF~${+UK70 z4z%|@@9lYV9o;4$nUvLIOFQs_H`T7%>g|4NJvP)dj|&SaseeG&aGSSx?q6n9p8*8# zf?=dFjyks{^+&z%dGCNuH`aRIo8Ec#*5|$1AHb2MvCox8#**SxLX~i#squv$3L3>t z7^Y&ab*OgQ3*O0{uQ_MC*FU9NFmHST<=-7Q#Xk3fH|4-2R7M5}i&GZTP(;3_RKd!J z%1^VH(x$X0A42xFmptk1HLNF{#1{X`8*HH@Of&9>K4N_#V>!|QqKGCH64We?8D~k7 z;Vq$`2?5XL`*7QNc_(+8^{8dBx7@Kd?df9@w;$Q&&FT#^rco!82}ku#r`Npf_1ksZ zyh%IWuy<|q_UpI^?e4daRiPt#=|rE0i&J-aV-d{Q`?h&gs_&`%UdOvPRK4M~-+BGl z{KlJ9P08exrc`mj?7iE(sU0s_{hNwqIH|ICjP(}82xG2=$;!2?A9&H5=ryUhc>i{1LN*XX!|Q>^BUz2Y4_Wrua->t=S{ zOWw>5LO3Z9`kl9XL(u@m8-u(xW&&cJ%XH-(yZse!-)TGImlAm+n4VgF)6UxNP3d@1 zvCUOHI6v5CZ;aO&>t5GM5<9nV=hc0;S6v-@3oJyog3Jw-SKCK|RgA$Zwm z$AVYAf9VZ`A4tlK5|HmOv%h%N+o!d|#rEO4z_tBPVaF7sStgUrN7EsQ!q`uuAQY*K zqg@&(nt6oQEi#g(vKDtxvzD~VU1R@6XRmICJ8*0N^EGdF$GTp7&D*!*;*8&WGb6>Pp%?;4HRSr40T2sTF9|U?WJEJk2ZL$D3U@G z1}Mg*ENfp?N@yckfZkO^8I^YXRpiz_M63cb$5N$G>rnoDd(NF?uD$zOGTE-TuAF;IN-YI1m=PSMmz639*(G6XY~&-VFfVH+f?LP#G4W4!~`l0K0j zJQFERgh)73@qD}dT5{=9ouxY95kodE(8NP;th=4_$KJV~!E`WQec|XOE@=c3u~!uj6(rsEI(YaVpWVz>bWXgwZ<;E zo?JPvmgdlYb#i6bia zQBboBZX|2F*pab0=~9HoIhCGPmwWoQnPAmB+S(aikos-2A%oE*KC}xeDa~jaBS~EI zd9t6q=_Yc;QMK(mS)L1(3WgFxKAQPP!<_iquKX%l+rY#FihvxozL4rv`S$l;CCxqw zBNZ`4VOuFRG0Kw@)+1-U`(Uz%J?UohdJ8fc1yqYP3-BmIVwfLtZTqP(HQd*zg=$T; zuNjz8@X6f~XfJ3{bJr;pmZ^h)ZQe>gVLx{Z>1}0Unq?7Z@N6(o%WVd`3)~bUq`_8YE_Z=E1hQ}JtDvT9I%#y;)bYfrl zb@ESrNcvMA_(IAgLKKkAx0imO%$T7T9J^@2{8QX$LPBE<$|$WO=hK8e_BL`sBMJ;< zvBC^n8V0C7+fBETg@<-bsQLG7)&O<_PGOC>=c7)M&yW>6DoB(8k5r_QLOya4ty4nM_^CZiGzv zcn>(Wv@^d)Cba@I;9>p|)~5&_eRPfTqpEH74Q*ZpKi!gmDzx&H<89C=w|EyxL}>c6 zLaEs<(r_e7J*gn!Y~Ud+hS?PqN@0xr7(2bppJ(B+o5(okAHKbgbc;_2l}wZk*Y0RC_V5%(G-j^r;V}z_w$; z$u%yaG~E7aBMI!A>mmA3Euk?%O`|kSjVwJTH6oP>=2(UAGxRp`U)0NyEHXa{c&eLa zicmqly`i-fa%(*mxpoDK+-2JD+(l+K&{zzh%Fu9}7iv0o>s{og27GK{d}l?1G@~hV zJ~Xwj|A4$}8b#h8!1kg$jFeepd;lq$3GDW#$lcRH7op0Xp*)=iQr~($Q7v1GrZCVwJt*w`58m z^D&Vd`&opTNO2m?w^ueN28~oik%7r}AtugrzMDkWeOZc-)?}#TF$^waYO;M0U%8h| z>%%-e!~}s0c9t3?i+j)COZJ`{Bh3zxxg$H}@X13dcLjrOiotzk`dpsE=A&+?gE+>d zbQxDwnV_7#hCmesF*>*w$^=nnpML^D_W>Ko}+6P|iRN6x}F3-{LB_Gan#(&WSKEA7X8ov*v+F{c)CthfH69 zC=k;VCO~G4Nf8|45Uo}KrDlkWGE9EqC`%(z!B$&~Yn$7=h#$J6a70xXo)@mCf`r}j z06Fs1iW^;WS2)HB0(RZQ-U*FZyF8A{I70Ex*T&v|4|%uU{vbK9RqImt+xG}#8g#$M z?zW!nWnaB>;-2=7jpW}N+N2nS;ju|jGvukUA9#o?U4$q|A-xnaT714t$}F??)MUYX z)yBO35ILrmX^nZy< z!G}GO-Ea??Zf8DBZaT7d*+tsXNm*OEi7ag(+)NbQUG8im)E=+fL{95VQ-qqxA|iYp z5hhT5d(O|$*8k?CWRC^{V#VVu(FjGEj^k@Kkpmh&4Sfppgvzaoc}DFKo5<nUBF6u6UHp=nDe4 zP{i;N77ntmP&~9eVDc!`XzZX44PD8XhwnfTk3%j{--rc#Z%M1MuU@@o)%nX|V)R)O zJ@&{X8typ)mHds1r}+W{8#)PM%%dU+ZhP5LoM!OMZWI-U95S8iA?h>wIQ(Q9p>eMj zlBz(AIGm6>pN?EUwZiHT&Sb6qRs|~WK23Dv;w-lTKTT-d3x?2)O(on%f+vkTg z4tR*~iqI9*IAUj__pwKBCXe(%=@702%!fEYgV03z$WO_U$L6cApQtE;D4DCSK?xb( z_DLUgH@W`mpOU$|&EYs^j2LnBB19&2>30Q%n4rBNfyxC+r#{Q8(Wf9#Mo${55izu= zN0j`=pH^zJ!VPp1wuk=@`S*FXlR#z3zmovs;-|>ftq5faAL+CEQWDXbDI}zB?53&8 zLah)eLQ=G{d^9joN{kZI%| zXnMhFFz6$qsBTFV&Z>ff{npduFc>!mn}PxzjY1BAurEGM23tWaF>e!dlCQW(3e zQEpuY2|M?fWDs+yHHDF~j#fqCm6yoz_KmMioNVVmN1k23^_OH|f_>s1vd8+vw~}{E z=pyGR_IcN9NW9pjDhlh@KTpo^8j){MDL@2XAd+SwK4TIu;na!y z*-ySqrr2v=Bn|t%7s<5^e8!NXj6qQaK*3#7yZuFSQmc0GrF8$Ui;F@B4o3->J5l5& z?aiwvQI_*MNgUrbjZ*SEX{fyB)SID<;eJCQiA4U9+Ht=nAMdZ?+TQnDqFSj>m5!0Q xM3|gJU{+eG3i@3xlMmVWE_RAn&u9&Y2c0z5-}Dms^(hm+y#8O0nt1&`{vUC@4wnD` delta 77262 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 delta 78390 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 XnZ0V|VPnr2GiLu)dmldb(l7lVDq)G% diff --git a/artifacts/test_program_methods/extra_output.bin b/artifacts/test_program_methods/extra_output.bin index 39c0998954d7eaf98e680bf36164d46846f9dfd6..160e9800ad3e0b5d3d21c62ea9398097f105e342 100644 GIT binary patch delta 77669 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 F{{hEucz^%^ delta 77659 zcmZtP4}4bR`@r%0Ic>F)ETumzJA6=t6S2X_MK)q_1mkY^D5kRc`wO4`|ck zpxytU=>BaoyR?$>G_|4{1>IJ*-Dh>M$4+|BqW7k4GBaFb|DU?6w0EawCLDOr+d2=SWaZG#qY}+Z zrO5P1uSn(wgr`s>2%+#oMq)cwey{Mq#4?q@ga70%-Mw;j+mD7Y=%?SKn{^5yC6 zCnVD|zR60jJ)m9s#vU^Z+NX_~U}jBSeO#_dU;oCoHcbl>ZLZ5?j+>hH=>)N3CfV3; zZJG}CVzVZ!9Mtptra{38=@o~L4N5Os+4ivCb_+_MNoO6`BPh6kWuN1ECKAu5Cm#QD zP;l+aZiBuKf`YLtTb?u`Gd=Ot9zpq|=|!g=6_h`e-f-%@LHXV3>BA^olwLNBG2fA{ zLIvsDhIb9h=cl_3-@n;*ITq#f(j$j=NnbpyZF=7DoT#i|c6!C|!Rf-G_IQ=fOfP8o z-&dr!44s%xj@WzUo+F;#HQjz}``yh29Df!Q$3C3X^6d2V$;tGFF}t@bKd(*Gb*9aA z8LXOyaN@SH?HBISF3~*Q>(1us*5kUgDjhq{WHw!W8q;=N=Huytabtt>Thl|w_Gnc) za$Hjvx$e>Q+_4v>9~hS(y!K7HYFxYEn6J}Y$L*b2x@lH&-NN0n5__ynj=zx^%u6r7 z;NhUW&645aekk4Vn%uzjPZwR&eNWS~$pMKbv$_vxGQ|`Ga_TG$v&!#HFTJLF zU=B-HT{AN%&rJ`#c3`@D>gRiT~F1UJ9dXH-7H(iQhrgo>gwFROPj82 zadl#!yi=QuyE&t2n|tz1lYJRTlyX5jdnN-3(*0&~;D1jS&%81)+tOQS4h+hFNav?c zjdrVaYILHYgZmZf_JW<$DLY1i}%v(~1YmbXvOD{Gz}xV-(! zC(5z|yI97qthoNrM0Bc_Uw7N=AA^E|mD^^IshO2DBlz#73;#VL*e6l4 zu*;D_n-)^Cm`L%Mg;yRKbZwVBG1rt$PnvF1lBSSYh07@vR>klhZwE)&!A@KQdhreCoKRB-V@ zxD20d<2T{Y89+1Z_wd(vSL@ba(;jYN9kk?s*ezpqr`K6ziT|x0@J3J{q;kGxEXU-U z1BlDcosFxo+xdI()WX$iiaP93n-m}SQ&%}(3z{iMx3mS(IE+Gb2&?x${!TK~-Xf!(<0{KBw~&o#|$vwtjX z{Z88S8Oq6 z&=9T+1Y}>QF$hUrZ)*>u^}L};Ls}Srn?Y0$W9i!X;j2GbAN0&fmDd`xX?W7)*}S8F zGiLmVcm=+V3r|a$a$E0Typ5f42l?pVjhQ_t-q~yLBIVccCi2~6WY!roJ&q4E$5W7T zM$+_Q3CfPl#CjF1{@a*-=WtHj0k+?1OnVwA!m`Td{cB9=hFsG-bcWfo`hyRGLxRMX zg_+es=fsB9`&I{io1|{~)0hntm=C)j1OB6%bCagTHaiDT9g_^lDZ}^(mnwIvH{n%T z*1yCjVYwPRKZ}>)el}i@H;hf1<&jfnBFAqF34?9IGq@KC%dGcGB+Lr#7w%GUHeRHB zA1)ggU+aFx)43bTwMgdSl_m+Z>O2mlT~0Gt^$SjN6F)pKyYU26M}ezwDqgF6P1A(A zhz8v)4)S(Qg!khOc0i|NxhMCrJGcPL{ds5@PbJLT6v)lG##RWJK)G={ z_r`Mb?q(a9hUG>cHIOjNWWq0v^T)TLJ)Rua*!G^r)q~v;4NPg+O3aOqM#^4qjNhnPc?u!U10d=LSvwUHHHk!PrFa)tO%gpC?j9|1&0g4ojvN3`FMr3(ruAIT+jE%p_3XzAPq#e+K%@Rf)jGXVlHM8OweiJXn?vVe9SH<}$Glr{C zNnBvw#>-U$|6qBZat%De?v)RTXP~5A!t^dpnu&IR2eeO^JQbggx1OA9_Lmvr9C-n6 zz|qBs+viRS+Nugiv3e^T5}0D#mH`&nJ^l~(J|)+*wha#Gm@q4;FINHSpbX~`k2(m< zn|Lzqjk59PdnU|q@{7b7R2aN)%-6w}sr|S*^_xpSc1Jeha_&S)Td&h!{10_&yoGjp zlkX4)i{gowuoR@#Tic9_^Wy!xq=cky`+f;&7xLsK)yr?UX|FVip{yJsJ|K7|0QN<EKvp$-mIczbKBU=%=>+;<$jP(AxTiUWL0< zT=MTxmi*Ve{5Mow^50UH{9haLrGKXMHqFcArNX0Lh2>s_r<5iCLofeh6_*Y+C`Eamnwl zEcqwnygQP%k%SqFHz^Oty1mnJ+&>Kr?ZRD`3hqH^6bWvV4rX`_q*Po6bgi=FKjh^v zQ*p_EyqoG@D!k`a_`s`Btt|OXcp%Yx)Knf&8n)W{=E{gD%QacMu* zR~1NwiC%>ZRa`1uq%8S&d-?aOxa8ljEcx#>&QF;SRDx8fR+b70p1t%j&X8xZhOM@~ znX=^f_VN!`acTcZYCM!z^w|V)utGMJZQkMLey!>(%XZ>^cQUy|B zt5@MC6_*ZvQI`BR`Hg3&9ga6{-^!AIl*(uQH#GxPf^<-*EEOiH3X)%};*vi_S@IWn z`3qHC^6!eB3h#cecokla6WEd3`q!1EgCD*8pH*D)w<}Bj9tSp_p$<6O!t=kjey@gt z=yqJ-RX9e)rGw*?rGpE-{EJjv@-J4F{5xEJbp2^+?o1_B|R;(VjToYU?{GOMYK3|0org4hASo{<&WM*eD+Dzf?HS zt1!!}aJ`C4{v2iL;4v@%2^E+870QzT0baf^m9#s_D*;JZ6#G-0rMwXrpK3o*nZRW9 zuYapLjBn^7P?892z=#e3rmiH9EniJv1*QQ#8BP#_&Rj~83XX*U7KTW$RX z%Cbi{;fy`5H#a&6;N5ZW022i0Y$T56VSsK`i*Q@$J z;SFkse!+T&YE^w{?}&YQ-6R#bg&1XuXm~rI^g`f;{or52P^N5x6|49hi#Sig^VU>E-zuTtLkAYOhe55+C- zk2@TWiynxbI-P>-2jhZKSoR>=0y7%dDW8io=)lFt;-1Rq;RVVQu?)!NUx?+04b~}h z5e2dbF5zMijsCS3J?iyQ?QD(2L}0 z9B(`k?UM+PVPO!h@}ID*fh0+?>i_A=S-=3p0kO*a@5lR5wWd;7W+Xgh#Mfb2Qye)H zq-dadw?w#z+`FCYuq=|ICQ%39V*OHTzx@;8l%Gcfa$2oY1C~Ymk+(yisJN{9&y>T@ z|8-u4zf^)$_*+>z*!$qdGu8#i8y{ShC4Z2Ye^MNm>wj(ikhmax9+>7;xKza@f4Z`C zu-MDLPsJtw0cFX5qai=M|1>pksRXI8URf&q+)zRGv#Hsx;*$TnvgEhod@X-4DamXJ z(;By3nhYgwi^DY+-T(N`h@9XJ8!sG`rNP5og)pb7IYPx{0R5CDf25axmWoUMIo4tS zQelQyA>~!LR$20&z^9#_YhGqRavE;HgVi2>j-TSRlTU0CZ_1AgHeh$*ItZ66O-B1K zDZMF}tr|ESFH$}dXFZe*_h0h+E>%_fwYqLNEV#6_@-Im7~x9 zUWE%(f>fBSEFIkF<NHD^xuE{J&BaNQEk|!bd7D9ekoJ`M-Plf2z3T z|4&)++x3ZOl=a`#bfh5OYU^{9rNU9Fg5(cSap|B?S@O^K@+YadE%9gzyoJgww5~SxJ~t zc&&;rw|4QTaOD}fCX)iWG=GLSkUvpADN%C7k&#_~KV0y5(kznek0jh>3tYlIQh|g) zHvXZti+_yYr9*j$ln(2$85!UGy7x6ExjY#?q>@o)?dsov3y7!MQX&J`X$xFJJr2aX04bHNjgWH~wn`-D_B?aXq1UBId zT&*fJ@6YWSGoxXHy>UNgKo)n{0nW$n{y!V9QGN!~A=$D8=Gibm6&I|bKpKp;z`Ter z!G#n^2j5z|_*N_(IRAuY4LJXT1(1NZA}k1N=zW zHP{5plsh-YtFW7~gREV=H%`ehaRrA{Acw&DNIXd0ulwUyiMJ*}W@MtZ%fArIA#=V6 z%OP{V80$-U$x&SY;*B2)@oh?(fpF3B$!02+Jr0j4-uGa>yM<4ul6>-+fMrq2B9o6| zm(zjUfmw%uuui=07Ym=A0;Kd`vTNyw%npl%EI>fgD0PL|0)s z1mSf@zWTYG0@;J`LcuZp1ff=aVMd_(BU_Y!^NIADC+?*sc<;!&zt986o}@9`RDrL|eie5DVpHRC=|$uqAf7}@G5*N1=7L!)-FB?%K)8=@#te> zPr)6C2e$rQ)-L}ZECaUp|G+GvK=#NbJcwlvoFB&ekUWaxt+xJ5IV8-`e0r2Munx;1 z;LA0k>#!UGyXwsnE?hF><5Tt>Pd48hmno4&B&)a{%ak2!yI zEct)oEw3a^lJ?}ncJ#o=GXHD|GmwIeayvqNiM5Mgh8Hj+?wBvZ%W;dac3|GY9jNc} z-@}8|3~s>vRD3foKa2Z+xW|ks>lhxvRKl+K^3n0f?LN3d#rxy4i0@_xFcEK6@yU2F z@g_FD2)A69M6xB!JveJL_kTBlN(!c~OG=b2Vcx|H)+GgO3G*R7N)6~=yk=cef@~~P zE)Z4gk^(la1NZ{+cMTPogK^!uB$6#*4#(S4OpzPFSPFW-nhe8|FadX?0XN0B;gKr7 z5N}fTU&R$F{wCg{ydEcM&pm?ug;RrHi#yy&!6_t!mtqddeyqN!DxQxQC?AB^C?AFo zR`thVy#~hPO)7uFvE2XbRKW!#n2LBnlks&l7*H(Nfkim^dK|wSuUEboZ&$t_-=ONR z$Fhi{EimsN%lem9>atvL;SiDX7JiHUTA1KVXcKK0M{-;uTodfOG0i3S^PFg1508 zL+5v~ta|4vET@(8M_AU3^CwtNOXtt9oCVICu$*Z7k(m=9EexEjw@4Sa_4K69%+)9iHuzu3eSyEmW5;ept_8NC?yekUH#Ww=85 zs@QV>Ntn{OAoMJ3*2fLZ#^exRTQ{n;zwujlgq1iU%+X&mrzE#j~uV0S4xJ z$ye8rIe01VV%u98T7CY1jsoe>HSj#%faSBG4B#7U7yk~|5$|T>tyvsm7jKJmSW_)+ z{Agd4Nk&sm5cFUb}#P{rww-NFD$IBzm$Xpx4H(K zn5=<(_T$nzm$*Du-+C;+_`qqi&H4i@0}R&)Pt9$P<0q+fm_=NkqEEvzK<9;6&YEgl z|I_2R{>vV_209+kFG}EjYy)Ru+2iik_h8w>KGxG2u-oM3vjFQwdZ*{bc)41{_opbx z`Z#IZNSKH5dgaIQNRD~92fSWfi@T{c@CqKGrubDnRrz&WKk6XURN`VcVh%y-9SY)& z@8@BC2nH4KiIom}k(3BB&COW$upo#I$%|MzbTjxbmI3V*=JN~J1Ngv6{qQuU{_S`) z&WPIM`+sTxGKD{5Jp;da{sZq&GxRs!PKVJ9@msbhvxlE1Xtqj zM!`f?;Q?Hs{0J`E6nC)P^V6PJ;TbCbdAvdSWn8jZ+6(VL3G-S*0c8xR((^lbepn%j zSK)2SALH3yBqhkkJ0;Iwdj1+Oll-uMDtu2tjcQ;U&i|5xa7&n4&wqOUAMUO4|HDPf zO@=gfmUYxW1K5RvxvD}o9$XU-U=LibyeBSI7n)9Zk#Z8RP~HbuVs|$^IkN4a+v`vY zwvf=0J(k<;mDbS=1m~$HUymm$&%slb=i=h{{?pXlLP5OoLno}S zgfAb)I~^`OZS9qBm&3U?aGlsnCAm3`#ByC2#HCLB5SG(guAJiSSY{;roWafM;67YS zQYztU3S@LkWU^y-Mb;oc( z&*PMwR<7VD3gonK?$kFCuIi<>gXLHjWpC@g{rIIbTx1)38_OZ-NL+5eyY}asFAU&x z>!DZ=_`CkR|J4OoAJsUa?a__>r03h!A(MN@(^xOk=R7};H>gGY@(|Wv%de7*Pd2Ut zB;2oWiBrtpU!W!FZEf1Nd^hSUL3o1vxYjE)o*n z#kzwJJ%5bbew_@vmjP_V{l1C)CEldG#q$r1oif`f$k-A$Q0uu4monmTQ8B>ILnB8c z2>7MOXpfxt#mmXxj{>=l47GOg;aFxU+ERfzodTI6moN%%!#yaF2Fk2m{01yD=6oa0 z$L`AZthI};!Gnmq3)?r=VLU|#-%%jP&{g;W7hB0=@-`fA{Pr5w7p57+XIM8siL(k1#wkhYLxCK#ZZ_dJ)uEhLtxjz`pw>9vYU|r# zJ)rg~F7*$=MQR5R!%HK}^`H0u6zDzfry7vA*+*mD!5@YELNpCzQ(G=HZ?Xf@!7YxMOsoV)CzfDHfS+=>J_w(ExuVO%{a0(gGX%vj6ff89n zH1Mpo8_)}$U&5uT!&mY0@8SWxiK~>?TQ8+SX}|mMFdoi7MSP<*Dv0{S2jlIkfx~gP z@8b^o;S%Kmo{#f<0$!lRplVjrgH{z5&?dDMs zZ+w#p>(efu(@r|fB1ulWDOfsW$%K9eO9$?>EFR2fJr=24PUJfC43@K`mv#4(x&O-^ zM-60}Cr;)A-=YQxqt#(jO>!*gZ{`4_g zMS}KfT&IrVT3qsDlI~>V=X`jv@*AGt@%$cMrSd;YQ844DWZ0ZExB-_dZ}$AP=WlVf z%Ks5}+ZMO?EAFL^`EPiJa_SEX=Bk1nc!lymSg(=)aJ=#Bc_SLHkyGX7!+<7|B**+f zZay+Yd2(IBv$4!@MHEk&J%;julMdaYIUUOYoEKu*176{Vi);gy0qe{ z!&{YK#54&#<@<2q zF>(9>ECY1;4`CUA{rnl2WfUYSXikO<=p$=a;S;<+@$kw>Ji%uwv5RNm!*O8i_q2BL zgYgl>!z(RWXIsnsvjwJz0-3UC3(Pnyi!RzS&H1?4N*+ol;dtXaomem8NvCpY9uuF& zk6~GKo2Vq$f$uSgJY~ulvJ^}m#y1|AvJ4XB=JE`dDc-~ScPs;P_lmy5se`k^c&3@6 z1|(p8E7I6G9$0yDzzpmvH2~@|C5dH2jCp#5Ag!(N2e)2 zJI13`JUFAVn~75@p#=rgm3PA#zbC`)q{FsSLAj$?9kLvJF76!;FEGbjM-2q#L@Wbz zJ{dQ<{|}`g-fHWIO9k~h{&W?WDV~P)fG+oZC0?!uobr6_8La8H+jApCsjO+yD2Xk$@=f33hp6cgz^J;qVglwg?0dS zUi^QacjD=)eqt2w2b7zpC|IrvcClVyJMiOWUj7ZZQq`Y}Ym{%r$v=|O1TkZG-~#2; z-Cn^G&ky2>RLHjj`olVEF=77p{4ZWWzWW?;_L-4g{@BJ&ne!-EqegTA-tuQM%4ft= zaMoY3ORSfYA#316FaD|Ljkuet|0OPJFz^4jP_VqAAYp#6USm5bI;(N~JkJwxm8w4( z=j@0FJPnUmzTCP%o`~fA{|+zVU(aSVQ>Yrq#3lcWJ7|HID(_~UXLlg&#TO}u_rJR- zsHA~awnDqJBSW@?*~|0Zc$?~QAKd%zWSA}a-S7mEn%+nJR5IU9nSMS zA7}4OhP9>s?RY7dS{absOUm)+e|d9iXJGep8Gyv2{pXiPDdE20@vY>o`3cH8(yOF|H75ZJ8^b> z++L!nv71ItMg1{=<`fjD3avc1#v@d`9UjacbuiHs55VKGyZshRJp5@t3ABGPo~nFV z=u{VpvhmI2qQ(g`ajB{>3-?LH`LjLG^E@99Qu(*zO69x6DOGTvm+%0tQSnD`iQ2;t zaoZps(5JYc@+Qw;dESCkQ&oi@DA3-9XRCNEE@J>KO*G{>V;E4AcmQ4ST;;Bw5AfV$ z4C^mre0&T?kx+xfXF5)sGQ3>JHLQs4LHAq<&Zd+};|lE7#B^&HzY13oKZF7q(8Ja?o?R;5o#1vGK#Kqd4#XkDx#ng{#mHFU3dL3KOhd`~obC)Oj+Nhtz1x zG*fXYjuvsI*?@~}R6aRcz44c`RF9i zaL(t9;58fZp*H_3)qy;w|BL6d$fJ#ea9(WIf5K!^P@xi9;Kj}23cKMd<+h$Xdd|TM z)Qoh-idPJ< zk9QCsOrvspUu_-r!5=Ycu=G#DD->j9#d}QPpqb z9QMxu+EK7VCG6#SZ(Oe8``{YoZn$^zcn1#je6Z(3@e=Z*{u#iLw!lqMf4o*TI1rCG zFaF)H$@n}xGMqoYnvJtt!~?ho=PN(p`H{%Be+KXv1yfsgF-z@~HkrVbss^$=?}A6F zcs8D|ya#@X0lGIT1-MGZkHt$qOW79=JR)6W6L?7-E}F-@3Qu`{25(aht`^gwySaRg z$L|u)$oIJA`Eh*ri5#+&D(Fu^4m02m!9eS9l`})HdGSim@8Ck!-k)OH%eOOn<)p~2 z{S;0~f-AU|0yzZEH+a4gkD!Ab669L`ti+XTaNAwu`rmr~(euxfSbu|6h2KcnLW50h z2c0h9_KMvz-XJ_5yD7c|FH!M(@mdvs3vW~LI-D^fzPWY2koA|B9gjHgLK?&wL9_-g zw{|l!!}B$s%W$P?Zw}6)!z{Z)tMH87%9m)2&_nDlDg+^Gux6uqL?w zKWYnH!gAbORd@=^Y31V2U^xq%pT%+(IIqETaX^6#=o@Pn{|?I{4!0BuKTsg6*d=Vk zYj6_^q=EL6BfI#XSXQ}nCoE@)a}vv0DuTD;Ju%Op)ZT7{p(FCmx<=#P2?Vcg5Tt2if|G)A=1!Ze}tl$?tzA zzhlap$&&q-m(4RNkh37Xu;8Q5;z#iOYIW3LV6MS(T6GEs5SUl7oK}ZhPf~j*4OAYgpv+TbVd_qB;I*&ic+uFnziW;2VHukrkfAst_)`ws_jyL{h1eQY( z_0J*rQzghAhpgS3Z|-rES$|McQ>1ZaixkMj<+iJ^E|+F zA>N_#Prz$Z?cxy+p`cQExaX0c&%)&l(A^!c$2(O0n>^o)v)jl0rEzMaDp*88sq#J6 zd4XId66SL+UgP;2yhhdEijy7V4u8h8)r_{E%KDqG3Iv=4mq4HA`C|IQmigBg##hx$odyj&-ZzL054YgkKn1ym^({8#Itc*CYJBN z@^d;0R_z;)IGDy84ids^JL~>HyjV^7NW4XP7OqqEXIqCiGrIWMi~puA@Bjah0vg;s z98qABmqZty=u#M%eQ=UBB6l-+9yr^kHYQ`m$Lr(8;=w$ zA|aCu>EL>6S78pmhj>dHUuo^)&*4Xj?_%RM)-L`HUZvu#N+J`N>wjQcQ_$goVk6y8ULsC}6 zSFyNowakc~aE>0s&y{$j%chb%;9RQe%kBMcoZpqt|079|Yx}>pAnJrkyfjL1&cp=_ za93%N8a;6@9Cm<5;W8R@`R8~ZgO{rK`S|2XxhWn!q6X(vutqib0^XqfEuP*j?%+pU zsp5NF#(=uV@jX3v_MD50yQ};EeiZb%AbxHihO2SH4)AKcQh6DEM)@QBwDNy=h4TKF z^Vjv1N8l$@svt$d6UvX_<;ox9>_g){+=zFm8OWTD$v?mjxEJ1v-61*)=Uo{4dYsBq z2~ShdL3tDIrrhibUcD+GjJK)*oQ+4T_-wpNc_l7Z{^APOe?L{w{7R0wa&KIrd@i1$ zd?TK#{48FqT!U*4i)ZXxEQ>bU0<-l>u0OJ>UBOQz^i~(5Uofk*Azq7zVqX7+XTe@q zMRxV~#HPdd<2#m zcJY2#4xw}EXbMKFf`M3$kxMuh%al70!ZPK~Ct;a#=OK8x@~K!BwTq9yPsUD}GboVL z!X=!E<+O1=8_Q|sT!iJca~_A~v~)fn%c66hgk=pm7h^fCqmBFj6bfX~xrAwWtMa9I zhw^kRr;*FQ3hPVtOdM}~eGltP^)LM09=TF3mk+P<_kYV&1-UjqhGo?jN&?I5;2Diq z@!_72#M{*>KN=Su5wH3}Ty{}>-cP}UaW_WE_a6dt7X>9M;dR`n9|Isk25{Kb{EsQQ zCdq$E{urFZ?!qz`=N%b$c&l|ETYr-m|0=fJ|M?0A1>K6{OK+>0EJ_+&nurE)sx`@B z{^_1a;YDfy=itSC;{lDsEhonVo`(%PXz#xXbDJ%2BmTA_A?ol)&p+d4H0Yj~+Or=r zW6{Rnlk(gd4^r_wJVMNWv+-N1{Erzbp@-)~JRgP^sr3Mi=|9C(b;B0k> zZ^z~2r}~H8^9=MgvogkH87*dffJyxPy#qj5$)pd*YbuYRfk{T{A1(zH@Ke~K&xxHSEzU!af*V`G$*IoiC)4fo`>Ng)xa6J z_tf0*tJZQ_-h&q_e{+whQl33&W*@eCB> z66K4n-Hbmqi}kM)R(TaxN&fN^|wVeum=eR zgW?YM#Iuz<;BnOJO(dS_0Pw>Pl(&UFh#*oRWQ|hP!O$&WnTOV&ns||s{br5 zJTdOz1w3CJqHpn3k2cv2TLBQu)8)A3t$m|zFwEV%|(G~{#tyPkqg z4F!CO6q}Rd0nNu5%D3YcG}zHLSdNn_{yHA5{I+!wBaqX)pZ{Cy0^Amts0KRX zMJ4=Ds#(;)D4a7S9^g5+kMcM?T6rQaQl5-wShN25)(Zt|Rl?=gMRvr`d-0b&ufx@< z{u_A4De(Z`!Hbluq<&<%{_|_I6qKukjd+vtmpEr=+~5}L@lB!`Ib?R@cpuMw@kmv_ z0Ph?o?S=QBggKUi(&2FjCtA-)L>(;h;`ex7f|siL58=1fqN~E)M#SxZjL(#KwEvv! za~P3I$h0o7*MWgv{CLkN;%=wK9h`#8ltvpFxm4|T&xNIS2 zvoY_h0i_P6ph^{-jn_|z2QU`bDNn#3sXe$2e}bFYJ$?y)q1xMuH!HWfg-=4Yczr}2;Mky}((<31P0^{>TWsXcxIm#g?Q_!}3OpZ{;BU<(CJnF3ifS@U_|Py^Z( z_g3B=uUBr5x48zXKM?<{JQ@F@yaQN&DGUkp3#MoOKQN|92Y-q)C3M#Pi3vMm4w*FS{fjz?WDa(V~qP8lHdfybZ6B z{P6jM4r?hWzdUZ>Ph6%Jp}CD02A9V1OuRt31zvnr7gLdlt|O=5Z7Mzj7hM+DAB9VB z)IS3_hk~UlVVqRBx{KM75jFS}?#Lmaef|@ejkvcO@RxY2@)kUMdfed;c+eHGf58i` zQ1}1eDQHUvJhq1&?434dPj$>sz@4x=?Mkrhv77QMu%59QUi=!*Wq9pX>i$26f}u0w z25-hC%4yt14d4~riy3kQsK9x|-6GqLWd>dR56^##Q!3$K3KlB|3z)K*aRbfpY~_~N zs2ymH3zXa8>B@WI1-xZDfNF9GkHx7n3fzdNP*9?LCmwliJb-(#yrzq`z}%0!;}dLy z?^wI|dsy0Y{s2pV&eaQ8e=;Ih@F@we;6W6~2otwQcJT}>uic!RVR^6T+ycv6Fy~!y zXFP@iX|Ip9i}#h+VDi?=6&yu^yybEpfaNWhb0L-EwJamX}Pv4VPl;l=+8(WL#kW z!@aP3MB4w3$gY8WdKL4z=1uo$^+_xbiFke}_ z_!fK=ad)BGZDC{=-yI)A+zqh5wTlSw)bDYBuariCcA|1 zuslXP|A6I#g!49Bqx>tDhfWv&4a*~)^B-6qI-Pf5dFHhD|G@l1fjrf^g#WNSR5~Z_ zj2>6BT>9g9tF14<3sUO0T$+sLFQN3~b$q}%5%8DFv3&NcrV=zjqm8*6(u+yju)wTKfFwN0A8^blO6I_TrMFD_N_0-UE7-355`_3?nG z;OWFqXMo}N|L&q-qU!K{iwVeJ;#@OvA_M|wUB*QokMxWf&0K=S$bJPO9U z0(^nBTV!v0@%KG{h-a(%pW;=s<2~MlHzX7xaTKv9~EDT7b~y9o0MPj{Ho{Iah>F+ z!re-kw<%bAV?2QOvAHRBwdc<~Z^Ah$|0}#$`8!;p{F8MmnpXZgt(WjS-li(-z&kiZ z?zuj9N#v+L|1=wxDRu6KOABKkfZM8g56mI9{d0Rfh=O>lt?!NXG5%#Ne-DT$%S%L8 zwiCG0$qZFcNv?EnVmapFl@0GXo}Z-AVR#+k8<3;13@Ayyd?WI3+HdGz7R?9>^d67$ zJR0joc`lAO{)`va13nMCP1?T}XV2|oixTDraY_~3NI_Eh7Q9G#0bZtjr{{Y;-;dX* z{D*O`dGP=q$EgBUuz~{ZXFadMLskAuxKjC5yg~U*&+9$Ezl7tzRaK}aq3Gs#grDK5 z%3pZ?#`AZ$ROSDKcPekkEpLh2|6>X3FHfz?9VB#B{s-%0{vVDv{`%ehjgR@gEHbHI zNs=tGqtD|{uj0TugM7Ein&^_EK#!=a=lyXvHR2w4I}LV|25ELOUZLXC@OtITafeIn zFEWw;JWk@4wtng#3i2svYYX~6z#71=gHk*Z54Q2waB;c|l8wKRjH{I2_57jdk8#Td z4fRuIBL$^P8VbypczsEH|8MaiS4QPS@iz=8C+wboo(~%ppM$e;CmUahd#U(lT!5qc zeEx67jeN99I0)xmnrjZT4UCpJb`K;s;7#NoZsX73wkp0E7ZX3w#+yCFrC7I*mpjYn z|Fb9<{6IVdMV`;|JQ2@U`IGV7C*u0kaIqTDJ$Qz4rQ}+`tqnRtq?#HGq9&t;x(zy+7bYv>ugP3lMY zKmJ02D`5Ym%NOuaRpDDaa%DV#A3gt!%T#`cWzlsaY>pk+3(IxDd2cM&fvA5Hx=xC?Y}Z62@U!)z0T*eLJ3nD6o3VPrQ)xaU155sjT-WOLt9}l1aXS@*mSkEUmcFLSg zL4m3;3{QQDug7x?*5ao!ez=kaqrinIO{)Q5|7iNEf6>Lyo={nc&o~9gL_ZUH3dweTqpYD(XYn?7>E}s zA0Jz;|NN^YaY5))aD}Qc!t)t8?~S;F(Vox6gH(Jx-l04R=e#NP!~0LdT+~oN83Ve+ z^JREwSRsmEh4U-p0hHn*eye5G~NKLc3fCA^4ts0!ttU&DFp;|41|zk_?LcoiP3{4p+FuYUf&F)EPx zW#ezTdHx!&RSkTPbE@J2Y{N@ggzhoD9T$)V$_03d%0D)=`tkUQUc$+^T2&b4`7~Uo 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 diff --git a/artifacts/test_program_methods/malicious_authorization_changer.bin b/artifacts/test_program_methods/malicious_authorization_changer.bin index cee9a3b96ee8c0e25653f766db309ead514710c1..09660236b1d3d739da7290beb4e7696e0cabb747 100644 GIT binary patch delta 77637 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 Z%s1%9v2B$zv}5()5!>8ThrV+8{{iBEj}rg@ delta 77542 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

vr)KhT~O@81sC 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 diff --git a/artifacts/test_program_methods/minter.bin b/artifacts/test_program_methods/minter.bin index 285cae2fdeaf5e31bc9c1ae5a39f7632007c8f9e..ec3b6de078ccc06e6df03999847f1ad24c56d339 100644 GIT binary patch delta 77449 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 delta 77412 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 delta 76627 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 Q;*gE2Py6`LEB@jC0IBKfr2qf` delta 78268 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 D3ZBv# diff --git a/artifacts/test_program_methods/nonce_changer.bin b/artifacts/test_program_methods/nonce_changer.bin index ff63175fb10237a113535cba5adb7e19186596a2..478ddd607f934c34ef5c1f65d3e8015ecd021630 100644 GIT binary patch delta 77841 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 xk^=mEZA(^CZa(IlXoJDGl(||(MTO3 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 R&Aq)3Zom52zOQ`h{{XJ2$7cWl delta 76770 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 O^VN;JPw%?^6aNS5tVrzu delta 77555 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 BYE}RM diff --git a/explorer_service/.gitignore b/explorer_service/.gitignore new file mode 100644 index 00000000..49015de2 --- /dev/null +++ b/explorer_service/.gitignore @@ -0,0 +1,11 @@ +# Leptos build outputs +/target +/pkg +/site + +# WASM artifacts +*.wasm + +# Environment +.env +.env.local diff --git a/explorer_service/Cargo.toml b/explorer_service/Cargo.toml new file mode 100644 index 00000000..2bfd5cfb --- /dev/null +++ b/explorer_service/Cargo.toml @@ -0,0 +1,72 @@ +[package] +name = "explorer_service" +version = "0.1.0" +edition = "2024" + +[lib] +crate-type = ["cdylib", "rlib"] + +[dependencies] +indexer_service_protocol.workspace = true + +# Leptos framework +leptos = "0.8.15" +leptos_meta = "0.8.5" +leptos_router = "0.8.11" + +# Serialization +serde.workspace = true + +# Logging +log.workspace = true +console_error_panic_hook = "0.1" +console_log = "1.0" + +# Date/Time +chrono.workspace = true + +# Hex encoding/decoding +hex.workspace = true + +# URL encoding +urlencoding = "2.1" + +# WASM-specific +wasm-bindgen = "0.2" +web-sys = { version = "0.3", features = [ + "Window", + "Document", + "Location", + "HtmlInputElement", +] } + +# Server-side dependencies (optional, enabled by features) +indexer_service_rpc = { workspace = true, features = [ + "client", +], optional = true } +jsonrpsee = { workspace = true, features = ["http-client"], optional = true } +tokio = { workspace = true, optional = true } +axum = { version = "0.8.8", optional = true } +leptos_axum = { version = "0.8.7", optional = true } +clap = { workspace = true, features = ["derive"], optional = true } +url = { workspace = true, optional = true } +env_logger = { workspace = true, optional = true } + +[features] +hydrate = ["leptos/hydrate"] +ssr = [ + "leptos/ssr", + "dep:indexer_service_rpc", + "dep:jsonrpsee", + "dep:tokio", + "dep:axum", + "dep:leptos_axum", + "dep:clap", + "dep:url", + "dep:env_logger", +] + +[package.metadata.leptos] +bin-features = ["ssr"] +lib-features = ["hydrate"] +assets-dir = "public" diff --git a/explorer_service/Dockerfile b/explorer_service/Dockerfile new file mode 100644 index 00000000..e10c5ebe --- /dev/null +++ b/explorer_service/Dockerfile @@ -0,0 +1,52 @@ +FROM rust:1.91.1-trixie AS builder + +# Install cargo-binstall, which makes it easier to install other +# cargo extensions like cargo-leptos +RUN wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz +RUN tar -xvf cargo-binstall-x86_64-unknown-linux-musl.tgz +RUN cp cargo-binstall /usr/local/cargo/bin + +# Install required tools +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends clang + +# Install cargo-leptos +RUN cargo binstall cargo-leptos -y + +# Add the WASM target +RUN rustup target add wasm32-unknown-unknown + +# Make an /explorer_service dir, which everything will eventually live in +RUN mkdir -p /explorer_service +WORKDIR /explorer_service +COPY . . + +# Build the app +RUN cargo leptos build --release -vv + +FROM debian:trixie-slim AS runtime +WORKDIR /explorer_service +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends openssl ca-certificates \ + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +# Copy the server binary to the /explorer_service directory +COPY --from=builder /explorer_service/target/release/explorer_service /explorer_service/ + +# /target/site contains our JS/WASM/CSS, etc. +COPY --from=builder /explorer_service/target/site /explorer_service/site + +# Copy Cargo.toml as it’s needed at runtime +COPY --from=builder /explorer_service/Cargo.toml /explorer_service/ + +# Set any required env variables +ENV RUST_LOG="info" +ENV LEPTOS_SITE_ADDR="0.0.0.0:8080" +ENV LEPTOS_SITE_ROOT="site" +ENV INDEXER_RPC_URL="http://localhost:8779" +EXPOSE 8080 + +# Run the server +CMD ["/explorer_service/explorer_service"] diff --git a/explorer_service/README.md b/explorer_service/README.md new file mode 100644 index 00000000..6f118dbb --- /dev/null +++ b/explorer_service/README.md @@ -0,0 +1,71 @@ +# LEE Blockchain Explorer + +A web-based UI for exploring the blockchain state, built with Rust and Leptos framework. + +## Features + +- **Main Page**: Search for blocks, transactions, or accounts by hash/ID. View recent blocks. +- **Block Page**: View detailed block information and all transactions within a block. +- **Transaction Page**: View transaction details including type, accounts involved, and proofs. +- **Account Page**: View account state and transaction history. + +## Architecture + +- **Framework**: Leptos 0.8 with SSR (Server-Side Rendering) and hydration +- **Data Source**: Indexer Service JSON-RPC API +- **Components**: Reusable BlockPreview, TransactionPreview, and AccountPreview components +- **Styling**: Custom CSS with responsive design + +## Development + +### Prerequisites + +- Rust (stable or nightly) +- `cargo-leptos` tool: `cargo install cargo-leptos` +- Running indexer service at `http://localhost:8080/rpc` (or configure via `INDEXER_RPC_URL`) + +### Build and Run + +```bash +# Development mode (with hot-reload) +cargo leptos watch + +# Production build +cargo leptos build --release + +# Run production build +cargo leptos serve --release +``` + +The explorer will be available at `http://localhost:3000` by default. + +### Configuration + +Set the `INDEXER_RPC_URL` environment variable to point to your indexer service: + +```bash +export INDEXER_RPC_URL=http://localhost:8080/rpc +cargo leptos watch +``` + +## Features + +### Search + +The search bar supports: +- Block IDs (numeric) +- Block hashes (64-character hex) +- Transaction hashes (64-character hex) +- Account IDs (64-character hex) + +### Real-time Updates + +The main page loads recent blocks and can be extended to subscribe to new blocks via WebSocket. + +### Responsive Design + +The UI is mobile-friendly and adapts to different screen sizes. + +## License + +See LICENSE file in the repository root. diff --git a/explorer_service/docker-compose.yml b/explorer_service/docker-compose.yml new file mode 100644 index 00000000..28c4c9c7 --- /dev/null +++ b/explorer_service/docker-compose.yml @@ -0,0 +1,11 @@ +services: + explorer_service: + image: lssa/explorer_service + build: + context: .. + dockerfile: explorer_service/Dockerfile + container_name: explorer_service + environment: + INDEXER_RPC_URL: ${INDEXER_RPC_URL:-http://localhost:8779} + ports: + - "8080:8080" diff --git a/explorer_service/public/explorer.css b/explorer_service/public/explorer.css new file mode 100644 index 00000000..a6415ed5 --- /dev/null +++ b/explorer_service/public/explorer.css @@ -0,0 +1,516 @@ +/* Reset and base styles */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + background-color: #f5f7fa; + color: #2c3e50; + line-height: 1.6; +} + +/* App layout */ +.app { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.app-header { + background-color: #2c3e50; + color: white; + padding: 1rem 2rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.app-nav { + max-width: 1200px; + margin: 0 auto; +} + +.nav-logo { + color: white; + text-decoration: none; + font-size: 1.5rem; + font-weight: bold; +} + +.nav-logo:hover { + color: #3498db; +} + +.app-main { + flex: 1; + max-width: 1200px; + width: 100%; + margin: 0 auto; + padding: 2rem; +} + +.app-footer { + background-color: #34495e; + color: white; + text-align: center; + padding: 1.5rem; + margin-top: 2rem; +} + +/* Page headers */ +.page-header h1 { + font-size: 2rem; + margin-bottom: 1.5rem; + color: #2c3e50; +} + +/* Search section */ +.search-section { + margin-bottom: 3rem; +} + +.search-form { + display: flex; + gap: 0.5rem; + margin-bottom: 1.5rem; +} + +.search-input { + flex: 1; + padding: 0.75rem 1rem; + border: 2px solid #dde4ed; + border-radius: 8px; + font-size: 1rem; + transition: border-color 0.3s; +} + +.search-input:focus { + outline: none; + border-color: #3498db; +} + +.search-button { + padding: 0.75rem 2rem; + background-color: #3498db; + color: white; + border: none; + border-radius: 8px; + font-size: 1rem; + font-weight: 600; + cursor: pointer; + transition: background-color 0.3s; +} + +.search-button:hover { + background-color: #2980b9; +} + +/* Block preview */ +.block-preview { + background-color: white; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: transform 0.2s, box-shadow 0.2s; +} + +.block-preview:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.block-preview-link { + text-decoration: none; + color: inherit; +} + +.block-preview-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid #eee; +} + +.block-id .label { + color: #7f8c8d; + font-size: 0.9rem; +} + +.block-id .value { + font-size: 1.5rem; + font-weight: bold; + color: #2c3e50; +} + +.block-status { + padding: 0.5rem 1rem; + border-radius: 20px; + font-size: 0.85rem; + font-weight: 600; +} + +.status-pending { + background-color: #fff3cd; + color: #856404; +} + +.status-safe { + background-color: #d1ecf1; + color: #0c5460; +} + +.status-finalized { + background-color: #d4edda; + color: #155724; +} + +.block-preview-body { + display: grid; + gap: 0.5rem; +} + +.block-field { + display: flex; + gap: 0.5rem; +} + +.field-label { + color: #7f8c8d; + font-weight: 500; +} + +.field-value { + color: #2c3e50; +} + +.hash { + font-family: "Courier New", monospace; + font-size: 0.9rem; + word-break: break-all; +} + +/* Transaction preview */ +.transaction-preview { + background-color: white; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: transform 0.2s, box-shadow 0.2s; +} + +.transaction-preview:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.transaction-preview-link { + text-decoration: none; + color: inherit; +} + +.transaction-preview-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.75rem; + padding-bottom: 0.75rem; + border-bottom: 1px solid #eee; +} + +.tx-type { + padding: 0.4rem 0.8rem; + border-radius: 16px; + font-size: 0.85rem; + font-weight: 600; + border: 2px solid; +} + +.tx-type-public { + background-color: #e3f2fd; + color: #0d47a1; + border-color: #1976d2; + border-style: solid; +} + +.tx-type-private { + background-color: #ffe0f0; + color: #880e4f; + border-color: #c2185b; + border-style: dashed; + font-style: italic; +} + +.tx-type-deployment { + background-color: #fff3e0; + color: #e65100; + border-color: #ff9800; + border-style: dotted; +} + +.tx-hash { + display: flex; + gap: 0.5rem; + align-items: center; +} + +.transaction-preview-body { + color: #7f8c8d; + font-size: 0.9rem; +} + +/* Account preview */ +.account-preview { + background-color: white; + border-radius: 8px; + padding: 1.5rem; + margin-bottom: 1rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + transition: transform 0.2s, box-shadow 0.2s; +} + +.account-preview:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.account-preview-link { + text-decoration: none; + color: inherit; +} + +.account-preview-header { + margin-bottom: 1rem; + padding-bottom: 1rem; + border-bottom: 1px solid #eee; +} + +.account-id .label { + color: #7f8c8d; + font-size: 0.9rem; +} + +.account-id .value { + font-size: 1.2rem; + font-weight: 600; + color: #2c3e50; +} + +.account-preview-body { + display: grid; + gap: 0.5rem; +} + +.account-field { + display: flex; + gap: 0.5rem; +} + +.account-not-found { + color: #e74c3c; + font-style: italic; +} + +/* Detail pages */ +.block-detail, +.transaction-detail, +.account-detail { + background-color: white; + border-radius: 8px; + padding: 2rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.block-info, +.transaction-info, +.account-info, +.transaction-details { + margin-bottom: 2rem; +} + +.block-info h2, +.transaction-info h2, +.account-info h2, +.transaction-details h2 { + font-size: 1.5rem; + margin-bottom: 1rem; + color: #2c3e50; +} + +.info-grid { + display: grid; + gap: 1rem; +} + +.info-row { + display: flex; + gap: 1rem; + padding: 0.75rem; + background-color: #f8f9fa; + border-radius: 4px; +} + +.info-label { + color: #7f8c8d; + font-weight: 600; + min-width: 150px; +} + +.info-value { + color: #2c3e50; + word-break: break-all; +} + +.signature { + font-size: 0.75rem; +} + +/* Transactions list */ +.block-transactions, +.account-transactions { + margin-top: 2rem; +} + +.block-transactions h2, +.account-transactions h2 { + font-size: 1.5rem; + margin-bottom: 1rem; + color: #2c3e50; +} + +.transactions-list { + display: grid; + gap: 1rem; +} + +.no-transactions { + padding: 2rem; + text-align: center; + color: #7f8c8d; + background-color: #f8f9fa; + border-radius: 8px; +} + +/* Accounts list */ +.accounts-list { + display: grid; + gap: 0.5rem; + margin-top: 1rem; +} + +.account-item { + padding: 0.75rem; + background-color: #f8f9fa; + border-radius: 4px; +} + +.account-item a { + color: #3498db; + text-decoration: none; +} + +.account-item a:hover { + text-decoration: underline; +} + +.nonce { + color: #7f8c8d; + font-size: 0.9rem; + margin-left: 0.5rem; +} + +/* Loading and error states */ +.loading, +.loading-more { + text-align: center; + padding: 2rem; + color: #7f8c8d; + font-style: italic; +} + +.error, +.error-page { + background-color: #f8d7da; + color: #721c24; + padding: 1rem; + border-radius: 8px; + margin: 1rem 0; +} + +.not-found, +.not-found-page { + text-align: center; + padding: 3rem; + color: #7f8c8d; +} + +.not-found-page h1 { + font-size: 4rem; + color: #e74c3c; + margin-bottom: 1rem; +} + +.not-found-page a { + color: #3498db; + text-decoration: none; + font-weight: 600; +} + +.not-found-page a:hover { + text-decoration: underline; +} + +/* Load more button */ +.load-more-button { + display: block; + width: 100%; + padding: 1rem; + margin-top: 1rem; + background-color: #3498db; + color: white; + border: none; + border-radius: 8px; + font-size: 1rem; + font-weight: 600; + cursor: pointer; + transition: background-color 0.3s; +} + +.load-more-button:hover { + background-color: #2980b9; +} + +/* Responsive design */ +@media (max-width: 768px) { + .app-main { + padding: 1rem; + } + + .search-form { + flex-direction: column; + } + + .search-button { + width: 100%; + } + + .block-preview-header, + .transaction-preview-header { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .info-row { + flex-direction: column; + gap: 0.25rem; + } + + .info-label { + min-width: auto; + } +} diff --git a/explorer_service/src/api.rs b/explorer_service/src/api.rs new file mode 100644 index 00000000..fe84033f --- /dev/null +++ b/explorer_service/src/api.rs @@ -0,0 +1,158 @@ +use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; +use leptos::prelude::*; +use serde::{Deserialize, Serialize}; + +/// Search results structure +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct SearchResults { + pub blocks: Vec, + pub transactions: Vec, + pub accounts: Vec<(AccountId, Option)>, +} + +/// RPC client type +#[cfg(feature = "ssr")] +pub type IndexerRpcClient = jsonrpsee::http_client::HttpClient; + +/// Get account information by ID +#[server] +pub async fn get_account(account_id: AccountId) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_account(account_id) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Parse hex string to bytes +#[cfg(feature = "ssr")] +fn parse_hex(s: &str) -> Option> { + let s = s.trim().trim_start_matches("0x"); + hex::decode(s).ok() +} + +/// Search for a block, transaction, or account by query string +#[server] +pub async fn search(query: String) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + + let mut blocks = Vec::new(); + let mut transactions = Vec::new(); + let mut accounts = Vec::new(); + + // Try to parse as hash (32 bytes) + if let Some(bytes) = parse_hex(&query) + && let Ok(hash_array) = <[u8; 32]>::try_from(bytes) + { + let hash = Hash(hash_array); + + // Try as block hash + if let Ok(block) = client.get_block_by_hash(hash).await { + blocks.push(block); + } + + // Try as transaction hash + if let Ok(tx) = client.get_transaction(hash).await { + transactions.push(tx); + } + + // Try as account ID + let account_id = AccountId { value: hash_array }; + match client.get_account(account_id).await { + Ok(account) => { + accounts.push((account_id, Some(account))); + } + Err(_) => { + // Account might not exist yet, still add it to results + accounts.push((account_id, None)); + } + } + } + + // Try as block ID + if let Ok(block_id) = query.parse::() + && let Ok(block) = client.get_block_by_id(block_id).await + { + blocks.push(block); + } + + Ok(SearchResults { + blocks, + transactions, + accounts, + }) +} + +/// Get block by ID +#[server] +pub async fn get_block_by_id(block_id: BlockId) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_block_by_id(block_id) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get block by hash +#[server] +pub async fn get_block_by_hash(block_hash: Hash) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_block_by_hash(block_hash) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get transaction by hash +#[server] +pub async fn get_transaction(tx_hash: Hash) -> Result { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_transaction(tx_hash) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get blocks with pagination +#[server] +pub async fn get_blocks(offset: u32, limit: u32) -> Result, ServerFnError> { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_blocks(offset, limit) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Get transactions by account +#[server] +pub async fn get_transactions_by_account( + account_id: AccountId, + limit: u32, + offset: u32, +) -> Result, ServerFnError> { + use indexer_service_rpc::RpcClient as _; + let client = expect_context::(); + client + .get_transactions_by_account(account_id, limit, offset) + .await + .map_err(|e| ServerFnError::ServerError(format!("RPC error: {}", e))) +} + +/// Create the RPC client for the indexer service (server-side only) +#[cfg(feature = "ssr")] +pub fn create_indexer_rpc_client(url: &url::Url) -> Result { + use jsonrpsee::http_client::HttpClientBuilder; + use log::info; + + info!("Connecting to Indexer RPC on URL: {url}"); + + HttpClientBuilder::default() + .build(url.as_str()) + .map_err(|e| format!("Failed to create RPC client: {e}")) +} diff --git a/explorer_service/src/components/account_preview.rs b/explorer_service/src/components/account_preview.rs new file mode 100644 index 00000000..30bbae5b --- /dev/null +++ b/explorer_service/src/components/account_preview.rs @@ -0,0 +1,63 @@ +use indexer_service_protocol::{Account, AccountId}; +use leptos::prelude::*; +use leptos_router::components::A; + +use crate::format_utils; + +/// Account preview component +#[component] +pub fn AccountPreview(account_id: AccountId, account: Option) -> impl IntoView { + let account_id_str = format_utils::format_account_id(&account_id); + + view! { +

+ } +} diff --git a/explorer_service/src/components/block_preview.rs b/explorer_service/src/components/block_preview.rs new file mode 100644 index 00000000..b577cceb --- /dev/null +++ b/explorer_service/src/components/block_preview.rs @@ -0,0 +1,77 @@ +use indexer_service_protocol::{BedrockStatus, Block, BlockBody, BlockHeader}; +use leptos::prelude::*; +use leptos_router::components::A; + +use crate::format_utils; + +/// Get CSS class for bedrock status +fn status_class(status: &BedrockStatus) -> &'static str { + match status { + BedrockStatus::Pending => "status-pending", + BedrockStatus::Safe => "status-safe", + BedrockStatus::Finalized => "status-finalized", + } +} + +/// Block preview component +#[component] +pub fn BlockPreview(block: Block) -> impl IntoView { + let Block { + header: + BlockHeader { + block_id, + prev_block_hash, + hash, + timestamp, + signature: _, + }, + body: BlockBody { transactions }, + bedrock_status, + bedrock_parent_id: _, + } = block; + + let tx_count = transactions.len(); + + let hash_str = hex::encode(hash.0); + let prev_hash_str = hex::encode(prev_block_hash.0); + let time_str = format_utils::format_timestamp(timestamp); + let status_str = match &bedrock_status { + BedrockStatus::Pending => "Pending", + BedrockStatus::Safe => "Safe", + BedrockStatus::Finalized => "Finalized", + }; + + view! { + + } +} diff --git a/explorer_service/src/components/mod.rs b/explorer_service/src/components/mod.rs new file mode 100644 index 00000000..a0032b10 --- /dev/null +++ b/explorer_service/src/components/mod.rs @@ -0,0 +1,7 @@ +pub mod account_preview; +pub mod block_preview; +pub mod transaction_preview; + +pub use account_preview::AccountPreview; +pub use block_preview::BlockPreview; +pub use transaction_preview::TransactionPreview; diff --git a/explorer_service/src/components/transaction_preview.rs b/explorer_service/src/components/transaction_preview.rs new file mode 100644 index 00000000..a08abb30 --- /dev/null +++ b/explorer_service/src/components/transaction_preview.rs @@ -0,0 +1,72 @@ +use indexer_service_protocol::Transaction; +use leptos::prelude::*; +use leptos_router::components::A; + +/// Get transaction type name and CSS class +fn transaction_type_info(tx: &Transaction) -> (&'static str, &'static str) { + match tx { + Transaction::Public(_) => ("Public", "tx-type-public"), + Transaction::PrivacyPreserving(_) => ("Privacy-Preserving", "tx-type-private"), + Transaction::ProgramDeployment(_) => ("Program Deployment", "tx-type-deployment"), + } +} + +/// Transaction preview component +#[component] +pub fn TransactionPreview(transaction: Transaction) -> impl IntoView { + let hash = transaction.hash(); + let hash_str = hex::encode(hash.0); + let (type_name, type_class) = transaction_type_info(&transaction); + + // Get additional metadata based on transaction type + let metadata = match &transaction { + Transaction::Public(tx) => { + let indexer_service_protocol::PublicTransaction { + hash: _, + message, + witness_set: _, + } = tx; + format!("{} accounts involved", message.account_ids.len()) + } + Transaction::PrivacyPreserving(tx) => { + let indexer_service_protocol::PrivacyPreservingTransaction { + hash: _, + message, + witness_set: _, + } = tx; + format!( + "{} public accounts, {} commitments", + message.public_account_ids.len(), + message.new_commitments.len() + ) + } + Transaction::ProgramDeployment(tx) => { + let indexer_service_protocol::ProgramDeploymentTransaction { hash: _, message } = tx; + format!("{} bytes", message.bytecode.len()) + } + }; + + view! { + + } +} diff --git a/explorer_service/src/format_utils.rs b/explorer_service/src/format_utils.rs new file mode 100644 index 00000000..6f5378de --- /dev/null +++ b/explorer_service/src/format_utils.rs @@ -0,0 +1,33 @@ +//! Formatting utilities for the explorer + +use indexer_service_protocol::{AccountId, ProgramId}; + +/// Format timestamp to human-readable string +pub fn format_timestamp(timestamp: u64) -> String { + let seconds = timestamp / 1000; + let datetime = chrono::DateTime::from_timestamp(seconds as i64, 0) + .unwrap_or_else(|| chrono::DateTime::from_timestamp(0, 0).unwrap()); + datetime.format("%Y-%m-%d %H:%M:%S UTC").to_string() +} + +/// Format hash (32 bytes) to hex string +pub fn format_hash(hash: &[u8; 32]) -> String { + hex::encode(hash) +} + +/// Format account ID to hex string +pub fn format_account_id(account_id: &AccountId) -> String { + hex::encode(account_id.value) +} + +/// Format program ID to hex string +pub fn format_program_id(program_id: &ProgramId) -> String { + let bytes: Vec = program_id.iter().flat_map(|n| n.to_be_bytes()).collect(); + hex::encode(bytes) +} + +/// Parse hex string to bytes +pub fn parse_hex(s: &str) -> Option> { + let s = s.trim().trim_start_matches("0x"); + hex::decode(s).ok() +} diff --git a/explorer_service/src/lib.rs b/explorer_service/src/lib.rs new file mode 100644 index 00000000..489636fd --- /dev/null +++ b/explorer_service/src/lib.rs @@ -0,0 +1,102 @@ +use leptos::prelude::*; +use leptos_meta::{Meta, Stylesheet, Title, provide_meta_context}; +use leptos_router::{ + ParamSegment, StaticSegment, + components::{Route, Router, Routes}, +}; +use pages::{AccountPage, BlockPage, MainPage, TransactionPage}; + +pub mod api; +mod components; +mod format_utils; +mod pages; + +/// Main application component with routing setup. +/// +/// # Routes +/// +/// - `/` - Main page with search and recent blocks +/// - `/block/:id` - Block detail page (`:id` is the numeric block ID) +/// - `/transaction/:hash` - Transaction detail page (`:hash` is the hex-encoded transaction hash) +/// - `/account/:id` - Account detail page (`:id` is the hex-encoded account ID) +/// +/// All other routes will show a 404 Not Found page. +#[component] +pub fn App() -> impl IntoView { + // Provides context that manages stylesheets, titles, meta tags, etc. + provide_meta_context(); + + view! { + + + <Meta name="description" content="Explore the blockchain - view blocks, transactions, and accounts" /> + + <Router> + <div class="app"> + <header class="app-header"> + <nav class="app-nav"> + <a href="/" class="nav-logo"> + "LEE Blockchain Explorer" + </a> + </nav> + </header> + + <main class="app-main"> + // Route definitions: + // - MainPage: Home with search and recent blocks + // - BlockPage: Detailed block view with all transactions + // - TransactionPage: Detailed transaction view + // - AccountPage: Account state and transaction history + <Routes fallback=|| view! { <NotFound /> }> + // Main page - search and recent blocks + <Route path=StaticSegment("") view=MainPage /> + + // Block detail page - /block/123 + <Route path=(StaticSegment("block"), ParamSegment("id")) view=BlockPage /> + + // Transaction detail page - /transaction/0abc123... + <Route + path=(StaticSegment("transaction"), ParamSegment("hash")) + view=TransactionPage + /> + + // Account detail page - /account/0def456... + <Route + path=(StaticSegment("account"), ParamSegment("id")) + view=AccountPage + /> + </Routes> + </main> + + <footer class="app-footer"> + <p>"LEE Blockchain Explorer © 2026"</p> + </footer> + </div> + </Router> + } +} + +/// 404 Not Found page component. +/// +/// Displayed when a user navigates to a route that doesn't exist. +#[component] +fn NotFound() -> impl IntoView { + view! { + <div class="not-found-page"> + <h1>"404"</h1> + <p>"Page not found"</p> + <a href="/">"Go back to home"</a> + </div> + } +} + +#[cfg(feature = "hydrate")] +#[wasm_bindgen::prelude::wasm_bindgen] +pub fn hydrate() { + use leptos::mount::hydrate_body; + + console_error_panic_hook::set_once(); + console_log::init_with_level(log::Level::Debug).expect("error initializing logger"); + + hydrate_body(App); +} diff --git a/explorer_service/src/main.rs b/explorer_service/src/main.rs new file mode 100644 index 00000000..63d54d70 --- /dev/null +++ b/explorer_service/src/main.rs @@ -0,0 +1,79 @@ +#[cfg(feature = "ssr")] +#[tokio::main] +async fn main() { + use axum::Router; + use clap::Parser; + use explorer_service::App; + use leptos::prelude::*; + use leptos_axum::{LeptosRoutes, generate_route_list}; + use leptos_meta::MetaTags; + + env_logger::init(); + + /// LEE Blockchain Explorer Server CLI arguments. + #[derive(Parser, Debug)] + #[command(version, about, long_about = None)] + struct Args { + /// Indexer RPC URL + #[arg(long, env = "INDEXER_RPC_URL", default_value = "http://localhost:8779")] + indexer_rpc_url: url::Url, + } + + let args = Args::parse(); + + let conf = get_configuration(None).unwrap(); + let leptos_options = conf.leptos_options; + let addr = leptos_options.site_addr; + let routes = generate_route_list(App); + + // Create RPC client once + let rpc_client = explorer_service::api::create_indexer_rpc_client(&args.indexer_rpc_url) + .expect("Failed to create RPC client"); + + // Build our application with routes + let app = Router::new() + .leptos_routes_with_context( + &leptos_options, + routes, + { + let rpc_client = rpc_client.clone(); + move || provide_context(rpc_client.clone()) + }, + { + let leptos_options = leptos_options.clone(); + move || { + view! { + <!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <AutoReload options=leptos_options.clone() /> + <HydrationScripts options=leptos_options.clone() /> + <MetaTags /> + </head> + <body> + <App /> + </body> + </html> + } + } + }, + ) + .fallback(leptos_axum::file_and_error_handler(|_| { + view! { "Page not found" } + })) + .with_state(leptos_options); + + // Run the server + let listener = tokio::net::TcpListener::bind(&addr).await.unwrap(); + println!("Listening on http://{}", &addr); + axum::serve(listener, app.into_make_service()) + .await + .unwrap(); +} + +#[cfg(not(feature = "ssr"))] +fn main() { + // Client-only main - no-op since hydration is done via wasm_bindgen +} diff --git a/explorer_service/src/pages/account_page.rs b/explorer_service/src/pages/account_page.rs new file mode 100644 index 00000000..efd9ae81 --- /dev/null +++ b/explorer_service/src/pages/account_page.rs @@ -0,0 +1,229 @@ +use indexer_service_protocol::{Account, AccountId}; +use leptos::prelude::*; +use leptos_router::hooks::use_params_map; + +use crate::{api, components::TransactionPreview, format_utils}; + +/// Account page component +#[component] +pub fn AccountPage() -> impl IntoView { + let params = use_params_map(); + let (tx_offset, set_tx_offset) = signal(0u32); + let (all_transactions, set_all_transactions) = signal(Vec::new()); + let (is_loading, set_is_loading) = signal(false); + let (has_more, set_has_more) = signal(true); + let tx_limit = 10u32; + + // Parse account ID from URL params + let account_id = move || { + let account_id_str = params.read().get("id").unwrap_or_default(); + format_utils::parse_hex(&account_id_str).and_then(|bytes| { + if bytes.len() == 32 { + let account_id_array: [u8; 32] = bytes.try_into().ok()?; + Some(AccountId { + value: account_id_array, + }) + } else { + None + } + }) + }; + + // Load account data + let account_resource = Resource::new(account_id, |acc_id_opt| async move { + match acc_id_opt { + Some(acc_id) => api::get_account(acc_id).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid account ID".to_string(), + )), + } + }); + + // Load initial transactions + let transactions_resource = Resource::new(account_id, move |acc_id_opt| async move { + match acc_id_opt { + Some(acc_id) => api::get_transactions_by_account(acc_id, tx_limit, 0).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid account ID".to_string(), + )), + } + }); + + // Update all_transactions when initial load completes + Effect::new(move || { + if let Some(Ok(txs)) = transactions_resource.get() { + set_all_transactions.set(txs.clone()); + set_has_more.set(txs.len() as u32 == tx_limit); + } + }); + + // Load more transactions handler + let load_more = move |_| { + let Some(acc_id) = account_id() else { + return; + }; + + set_is_loading.set(true); + let current_offset = tx_offset.get() + tx_limit; + set_tx_offset.set(current_offset); + + leptos::task::spawn_local(async move { + match api::get_transactions_by_account(acc_id, tx_limit, current_offset).await { + Ok(new_txs) => { + let txs_count = new_txs.len() as u32; + set_all_transactions.update(|txs| txs.extend(new_txs)); + set_has_more.set(txs_count == tx_limit); + } + Err(e) => { + log::error!("Failed to load more transactions: {}", e); + } + } + set_is_loading.set(false); + }); + }; + + view! { + <div class="account-page"> + <Suspense fallback=move || view! { <div class="loading">"Loading account..."</div> }> + {move || { + account_resource + .get() + .map(|result| match result { + Ok(acc) => { + let Account { + program_owner, + balance, + data, + nonce, + } = acc; + + let acc_id = account_id().expect("Account ID should be set"); + let account_id_str = format_utils::format_account_id(&acc_id); + let program_id = format_utils::format_program_id(&program_owner); + let balance_str = balance.to_string(); + let nonce_str = nonce.to_string(); + let data_len = data.0.len(); + view! { + <div class="account-detail"> + <div class="page-header"> + <h1>"Account"</h1> + </div> + + <div class="account-info"> + <h2>"Account Information"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Account ID:"</span> + <span class="info-value hash">{account_id_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Balance:"</span> + <span class="info-value">{balance_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Program Owner:"</span> + <span class="info-value hash">{program_id}</span> + </div> + <div class="info-row"> + <span class="info-label">"Nonce:"</span> + <span class="info-value">{nonce_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Data:"</span> + <span class="info-value">{format!("{} bytes", data_len)}</span> + </div> + </div> + </div> + + <div class="account-transactions"> + <h2>"Transactions"</h2> + <Suspense fallback=move || { + view! { <div class="loading">"Loading transactions..."</div> } + }> + + {move || { + transactions_resource + .get() + .map(|result| match result { + Ok(_) => { + let txs = all_transactions.get(); + if txs.is_empty() { + view! { + <div class="no-transactions"> + "No transactions found" + </div> + } + .into_any() + } else { + view! { + <div> + <div class="transactions-list"> + {txs + .into_iter() + .map(|tx| { + view! { <TransactionPreview transaction=tx /> } + }) + .collect::<Vec<_>>()} + </div> + {move || { + if has_more.get() { + view! { + <button + class="load-more-button" + on:click=load_more + disabled=move || is_loading.get() + > + {move || { + if is_loading.get() { + "Loading..." + } else { + "Load More" + } + }} + + </button> + } + .into_any() + } else { + ().into_any() + } + }} + + </div> + } + .into_any() + } + } + Err(e) => { + view! { + <div class="error"> + {format!("Failed to load transactions: {}", e)} + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + </div> + } + .into_any() + } + Err(e) => { + view! { + <div class="error-page"> + <h1>"Error"</h1> + <p>{format!("Failed to load account: {}", e)}</p> + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + } +} diff --git a/explorer_service/src/pages/block_page.rs b/explorer_service/src/pages/block_page.rs new file mode 100644 index 00000000..988bc5e3 --- /dev/null +++ b/explorer_service/src/pages/block_page.rs @@ -0,0 +1,159 @@ +use indexer_service_protocol::{BedrockStatus, Block, BlockBody, BlockHeader, BlockId, Hash}; +use leptos::prelude::*; +use leptos_router::{components::A, hooks::use_params_map}; + +use crate::{api, components::TransactionPreview, format_utils}; + +#[derive(Clone, PartialEq, Eq)] +enum BlockIdOrHash { + BlockId(BlockId), + Hash(Hash), +} + +/// Block page component +#[component] +pub fn BlockPage() -> impl IntoView { + let params = use_params_map(); + + let block_resource = Resource::new( + move || { + let id_str = params.read().get("id").unwrap_or_default(); + + // Try to parse as block ID (number) + if let Ok(block_id) = id_str.parse::<BlockId>() { + return Some(BlockIdOrHash::BlockId(block_id)); + } + + // Try to parse as block hash (hex string) + let id_str = id_str.trim().trim_start_matches("0x"); + if let Some(bytes) = format_utils::parse_hex(id_str) + && let Ok(hash_array) = <[u8; 32]>::try_from(bytes) + { + return Some(BlockIdOrHash::Hash(Hash(hash_array))); + } + + None + }, + |block_id_or_hash| async move { + match block_id_or_hash { + Some(BlockIdOrHash::BlockId(id)) => api::get_block_by_id(id).await, + Some(BlockIdOrHash::Hash(hash)) => api::get_block_by_hash(hash).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid block ID or hash".to_string(), + )), + } + }, + ); + + view! { + <div class="block-page"> + <Suspense fallback=move || view! { <div class="loading">"Loading block..."</div> }> + {move || { + block_resource + .get() + .map(|result| match result { + Ok(blk) => { + let Block { + header: BlockHeader { + block_id, + prev_block_hash, + hash, + timestamp, + signature, + }, + body: BlockBody { + transactions, + }, + bedrock_status, + bedrock_parent_id: _, + } = blk; + + let hash_str = format_utils::format_hash(&hash.0); + let prev_hash = format_utils::format_hash(&prev_block_hash.0); + let timestamp_str = format_utils::format_timestamp(timestamp); + let signature_str = hex::encode(signature.0); + let status = match &bedrock_status { + BedrockStatus::Pending => "Pending", + BedrockStatus::Safe => "Safe", + BedrockStatus::Finalized => "Finalized", + }; + view! { + <div class="block-detail"> + <div class="page-header"> + <h1>"Block " {block_id.to_string()}</h1> + </div> + + <div class="block-info"> + <h2>"Block Information"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Block ID: "</span> + <span class="info-value">{block_id.to_string()}</span> + </div> + <div class="info-row"> + <span class="info-label">"Hash: "</span> + <span class="info-value hash">{hash_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Previous Block Hash: "</span> + <A href=format!("/block/{}", prev_hash) attr:class="info-value hash"> + {prev_hash} + </A> + </div> + <div class="info-row"> + <span class="info-label">"Timestamp: "</span> + <span class="info-value">{timestamp_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Status: "</span> + <span class="info-value">{status}</span> + </div> + <div class="info-row"> + <span class="info-label">"Signature: "</span> + <span class="info-value hash signature">{signature_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Transaction Count: "</span> + <span class="info-value">{transactions.len().to_string()}</span> + </div> + </div> + </div> + + <div class="block-transactions"> + <h2>"Transactions"</h2> + {if transactions.is_empty() { + view! { <div class="no-transactions">"No transactions"</div> } + .into_any() + } else { + view! { + <div class="transactions-list"> + {transactions + .into_iter() + .map(|tx| view! { <TransactionPreview transaction=tx /> }) + .collect::<Vec<_>>()} + </div> + } + .into_any() + }} + + </div> + </div> + } + .into_any() + } + Err(e) => { + view! { + <div class="error-page"> + <h1>"Error"</h1> + <p>{format!("Failed to load block: {}", e)}</p> + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + } +} diff --git a/explorer_service/src/pages/main_page.rs b/explorer_service/src/pages/main_page.rs new file mode 100644 index 00000000..ffd625c8 --- /dev/null +++ b/explorer_service/src/pages/main_page.rs @@ -0,0 +1,208 @@ +use leptos::prelude::*; +use leptos_router::hooks::{use_navigate, use_query_map}; +use web_sys::SubmitEvent; + +use crate::{ + api::{self, SearchResults}, + components::{AccountPreview, BlockPreview, TransactionPreview}, +}; + +/// Main page component +#[component] +pub fn MainPage() -> impl IntoView { + let query_map = use_query_map(); + let navigate = use_navigate(); + + // Read search query from URL parameter + let url_query = move || query_map.read().get("q").unwrap_or_default(); + + let (search_query, set_search_query) = signal(url_query()); + + // Sync search input with URL parameter + Effect::new(move || { + set_search_query.set(url_query()); + }); + + // Search results resource based on URL query parameter + let search_resource = Resource::new(url_query, |query| async move { + if query.is_empty() { + return None; + } + match api::search(query).await { + Ok(result) => Some(result), + Err(e) => { + log::error!("Search error: {}", e); + None + } + } + }); + + // Load recent blocks on mount + let recent_blocks_resource = Resource::new(|| (), |_| async { api::get_blocks(0, 10).await }); + + // Handle search - update URL parameter + let on_search = move |ev: SubmitEvent| { + ev.prevent_default(); + let query = search_query.get(); + if query.is_empty() { + navigate("?", Default::default()); + return; + } + + navigate( + &format!("?q={}", urlencoding::encode(&query)), + Default::default(), + ); + }; + + view! { + <div class="main-page"> + <div class="page-header"> + <h1>"LEE Blockchain Explorer"</h1> + </div> + + <div class="search-section"> + <form on:submit=on_search class="search-form"> + <input + type="text" + class="search-input" + placeholder="Search by block ID, block hash, transaction hash, or account ID..." + prop:value=move || search_query.get() + on:input=move |ev| set_search_query.set(event_target_value(&ev)) + /> + <button type="submit" class="search-button"> + "Search" + </button> + </form> + + <Suspense fallback=move || view! { <div class="loading">"Searching..."</div> }> + {move || { + search_resource + .get() + .and_then(|opt_results| opt_results) + .map(|results| { + let SearchResults { + blocks, + transactions, + accounts, + } = results; + let has_results = !blocks.is_empty() + || !transactions.is_empty() + || !accounts.is_empty(); + view! { + <div class="search-results"> + <h2>"Search Results"</h2> + {if !has_results { + view! { <div class="not-found">"No results found"</div> } + .into_any() + } else { + view! { + <div class="results-container"> + {if !blocks.is_empty() { + view! { + <div class="results-section"> + <h3>"Blocks"</h3> + <div class="results-list"> + {blocks + .into_iter() + .map(|block| { + view! { <BlockPreview block=block /> } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } else { + ().into_any() + }} + + {if !transactions.is_empty() { + view! { + <div class="results-section"> + <h3>"Transactions"</h3> + <div class="results-list"> + {transactions + .into_iter() + .map(|tx| { + view! { <TransactionPreview transaction=tx /> } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } else { + ().into_any() + }} + + {if !accounts.is_empty() { + view! { + <div class="results-section"> + <h3>"Accounts"</h3> + <div class="results-list"> + {accounts + .into_iter() + .map(|(id, account)| { + view! { + <AccountPreview + account_id=id + account=account + /> + } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } else { + ().into_any() + }} + + </div> + } + .into_any() + }} + </div> + } + .into_any() + }) + }} + + </Suspense> + </div> + + <div class="blocks-section"> + <h2>"Recent Blocks"</h2> + <Suspense fallback=move || view! { <div class="loading">"Loading blocks..."</div> }> + {move || { + recent_blocks_resource + .get() + .map(|result| match result { + Ok(blocks) if !blocks.is_empty() => { + view! { + <div class="blocks-list"> + {blocks + .into_iter() + .map(|block| view! { <BlockPreview block=block /> }) + .collect::<Vec<_>>()} + </div> + } + .into_any() + } + Ok(_) => { + view! { <div class="no-blocks">"No blocks found"</div> }.into_any() + } + Err(e) => { + view! { <div class="error">{format!("Error: {}", e)}</div> } + .into_any() + } + }) + }} + + </Suspense> + </div> + </div> + } +} diff --git a/explorer_service/src/pages/mod.rs b/explorer_service/src/pages/mod.rs new file mode 100644 index 00000000..f4220145 --- /dev/null +++ b/explorer_service/src/pages/mod.rs @@ -0,0 +1,9 @@ +pub mod account_page; +pub mod block_page; +pub mod main_page; +pub mod transaction_page; + +pub use account_page::AccountPage; +pub use block_page::BlockPage; +pub use main_page::MainPage; +pub use transaction_page::TransactionPage; diff --git a/explorer_service/src/pages/transaction_page.rs b/explorer_service/src/pages/transaction_page.rs new file mode 100644 index 00000000..a8571a7a --- /dev/null +++ b/explorer_service/src/pages/transaction_page.rs @@ -0,0 +1,262 @@ +use indexer_service_protocol::{ + Hash, PrivacyPreservingMessage, PrivacyPreservingTransaction, ProgramDeploymentMessage, + ProgramDeploymentTransaction, PublicMessage, PublicTransaction, Transaction, WitnessSet, +}; +use leptos::prelude::*; +use leptos_router::{components::A, hooks::use_params_map}; + +use crate::{api, format_utils}; + +/// Transaction page component +#[component] +pub fn TransactionPage() -> impl IntoView { + let params = use_params_map(); + + let transaction_resource = Resource::new( + move || { + let tx_hash_str = params.read().get("hash").unwrap_or_default(); + format_utils::parse_hex(&tx_hash_str).and_then(|bytes| { + if bytes.len() == 32 { + let hash_array: [u8; 32] = bytes.try_into().ok()?; + Some(Hash(hash_array)) + } else { + None + } + }) + }, + |hash_opt| async move { + match hash_opt { + Some(hash) => api::get_transaction(hash).await, + None => Err(leptos::prelude::ServerFnError::ServerError( + "Invalid transaction hash".to_string(), + )), + } + }, + ); + + view! { + <div class="transaction-page"> + <Suspense fallback=move || view! { <div class="loading">"Loading transaction..."</div> }> + {move || { + transaction_resource + .get() + .map(|result| match result { + Ok(tx) => { + let tx_hash = format_utils::format_hash(&tx.hash().0); + let tx_type = match &tx { + Transaction::Public(_) => "Public Transaction", + Transaction::PrivacyPreserving(_) => "Privacy-Preserving Transaction", + Transaction::ProgramDeployment(_) => "Program Deployment Transaction", + }; + view! { + <div class="transaction-detail"> + <div class="page-header"> + <h1>"Transaction"</h1> + </div> + + <div class="transaction-info"> + <h2>"Transaction Information"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Hash:"</span> + <span class="info-value hash">{tx_hash}</span> + </div> + <div class="info-row"> + <span class="info-label">"Type:"</span> + <span class="info-value">{tx_type}</span> + </div> + </div> + </div> + + {match tx { + Transaction::Public(ptx) => { + let PublicTransaction { + hash: _, + message, + witness_set, + } = ptx; + let PublicMessage { + program_id, + account_ids, + nonces, + instruction_data, + } = message; + let WitnessSet { + signatures_and_public_keys, + proof, + } = witness_set; + + let program_id_str = program_id + .iter() + .map(|n| format!("{:08x}", n)) + .collect::<String>(); + let proof_len = proof.0.len(); + let signatures_count = signatures_and_public_keys.len(); + + view! { + <div class="transaction-details"> + <h2>"Public Transaction Details"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Program ID:"</span> + <span class="info-value hash">{program_id_str}</span> + </div> + <div class="info-row"> + <span class="info-label">"Instruction Data:"</span> + <span class="info-value"> + {format!("{} u32 values", instruction_data.len())} + </span> + </div> + <div class="info-row"> + <span class="info-label">"Proof Size:"</span> + <span class="info-value">{format!("{} bytes", proof_len)}</span> + </div> + <div class="info-row"> + <span class="info-label">"Signatures:"</span> + <span class="info-value">{signatures_count.to_string()}</span> + </div> + </div> + + <h3>"Accounts"</h3> + <div class="accounts-list"> + {account_ids + .into_iter() + .zip(nonces.into_iter()) + .map(|(account_id, nonce)| { + let account_id_str = format_utils::format_account_id(&account_id); + view! { + <div class="account-item"> + <A href=format!("/account/{}", account_id_str)> + <span class="hash">{account_id_str}</span> + </A> + <span class="nonce"> + " (nonce: " {nonce.to_string()} ")" + </span> + </div> + } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } + Transaction::PrivacyPreserving(pptx) => { + let PrivacyPreservingTransaction { + hash: _, + message, + witness_set, + } = pptx; + let PrivacyPreservingMessage { + public_account_ids, + nonces, + public_post_states: _, + encrypted_private_post_states, + new_commitments, + new_nullifiers, + } = message; + let WitnessSet { + signatures_and_public_keys: _, + proof, + } = witness_set; + + let proof_len = proof.0.len(); + view! { + <div class="transaction-details"> + <h2>"Privacy-Preserving Transaction Details"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Public Accounts:"</span> + <span class="info-value"> + {public_account_ids.len().to_string()} + </span> + </div> + <div class="info-row"> + <span class="info-label">"New Commitments:"</span> + <span class="info-value">{new_commitments.len().to_string()}</span> + </div> + <div class="info-row"> + <span class="info-label">"Nullifiers:"</span> + <span class="info-value">{new_nullifiers.len().to_string()}</span> + </div> + <div class="info-row"> + <span class="info-label">"Encrypted States:"</span> + <span class="info-value"> + {encrypted_private_post_states.len().to_string()} + </span> + </div> + <div class="info-row"> + <span class="info-label">"Proof Size:"</span> + <span class="info-value">{format!("{} bytes", proof_len)}</span> + </div> + </div> + + <h3>"Public Accounts"</h3> + <div class="accounts-list"> + {public_account_ids + .into_iter() + .zip(nonces.into_iter()) + .map(|(account_id, nonce)| { + let account_id_str = format_utils::format_account_id(&account_id); + view! { + <div class="account-item"> + <A href=format!("/account/{}", account_id_str)> + <span class="hash">{account_id_str}</span> + </A> + <span class="nonce"> + " (nonce: " {nonce.to_string()} ")" + </span> + </div> + } + }) + .collect::<Vec<_>>()} + </div> + </div> + } + .into_any() + } + Transaction::ProgramDeployment(pdtx) => { + let ProgramDeploymentTransaction { + hash: _, + message, + } = pdtx; + let ProgramDeploymentMessage { bytecode } = message; + + let bytecode_len = bytecode.len(); + view! { + <div class="transaction-details"> + <h2>"Program Deployment Transaction Details"</h2> + <div class="info-grid"> + <div class="info-row"> + <span class="info-label">"Bytecode Size:"</span> + <span class="info-value"> + {format!("{} bytes", bytecode_len)} + </span> + </div> + </div> + </div> + } + .into_any() + } + }} + + </div> + } + .into_any() + } + Err(e) => { + view! { + <div class="error-page"> + <h1>"Error"</h1> + <p>{format!("Failed to load transaction: {}", e)}</p> + </div> + } + .into_any() + } + }) + }} + + </Suspense> + </div> + } +} diff --git a/indexer_service/Cargo.toml b/indexer_service/Cargo.toml index d3f31de8..8c085d7e 100644 --- a/indexer_service/Cargo.toml +++ b/indexer_service/Cargo.toml @@ -9,9 +9,13 @@ indexer_service_rpc = { workspace = true, features = ["server"] } clap = { workspace = true, features = ["derive"] } anyhow.workspace = true -tokio.workspace = true +tokio = { workspace = true, features = ["macros", "rt-multi-thread", "signal"] } tokio-util.workspace = true env_logger.workspace = true log.workspace = true jsonrpsee.workspace = true async-trait = "0.1.89" + +[features] +# Return mock responses with generated data for testing purposes +mock-responses = [] diff --git a/indexer_service/protocol/src/convert.rs b/indexer_service/protocol/src/convert.rs index 8c6de2f4..179a25ec 100644 --- a/indexer_service/protocol/src/convert.rs +++ b/indexer_service/protocol/src/convert.rs @@ -381,11 +381,17 @@ impl TryFrom<WitnessSet> for nssa::privacy_preserving_transaction::witness_set:: impl From<nssa::PublicTransaction> for PublicTransaction { fn from(value: nssa::PublicTransaction) -> Self { + let hash = Hash(value.hash()); + let nssa::PublicTransaction { + message, + witness_set, + } = value; + Self { - message: value.message().clone().into(), + hash, + message: message.into(), witness_set: WitnessSet { - signatures_and_public_keys: value - .witness_set() + signatures_and_public_keys: witness_set .signatures_and_public_keys() .iter() .map(|(sig, pk)| (sig.clone().into(), pk.clone().into())) @@ -401,6 +407,7 @@ impl TryFrom<PublicTransaction> for nssa::PublicTransaction { fn try_from(value: PublicTransaction) -> Result<Self, Self::Error> { let PublicTransaction { + hash: _, message, witness_set, } = value; @@ -408,6 +415,7 @@ impl TryFrom<PublicTransaction> for nssa::PublicTransaction { signatures_and_public_keys, proof: _, } = witness_set; + Ok(Self::new( message.into(), nssa::public_transaction::WitnessSet::from_raw_parts( @@ -422,9 +430,16 @@ impl TryFrom<PublicTransaction> for nssa::PublicTransaction { impl From<nssa::PrivacyPreservingTransaction> for PrivacyPreservingTransaction { fn from(value: nssa::PrivacyPreservingTransaction) -> Self { + let hash = Hash(value.hash()); + let nssa::PrivacyPreservingTransaction { + message, + witness_set, + } = value; + Self { - message: value.message().clone().into(), - witness_set: value.witness_set().clone().into(), + hash, + message: message.into(), + witness_set: witness_set.into(), } } } @@ -434,13 +449,17 @@ impl TryFrom<PrivacyPreservingTransaction> for nssa::PrivacyPreservingTransactio fn try_from(value: PrivacyPreservingTransaction) -> Result<Self, Self::Error> { let PrivacyPreservingTransaction { + hash: _, message, witness_set, } = value; + Ok(Self::new( - message.try_into().map_err(|_| { - nssa::error::NssaError::InvalidInput("Data too big error".to_string()) - })?, + message + .try_into() + .map_err(|err: nssa_core::account::data::DataTooBigError| { + nssa::error::NssaError::InvalidInput(err.to_string()) + })?, witness_set.try_into()?, )) } @@ -448,15 +467,19 @@ impl TryFrom<PrivacyPreservingTransaction> for nssa::PrivacyPreservingTransactio impl From<nssa::ProgramDeploymentTransaction> for ProgramDeploymentTransaction { fn from(value: nssa::ProgramDeploymentTransaction) -> Self { + let hash = Hash(value.hash()); + let nssa::ProgramDeploymentTransaction { message } = value; + Self { - message: value.into_message().into(), + hash, + message: message.into(), } } } impl From<ProgramDeploymentTransaction> for nssa::ProgramDeploymentTransaction { fn from(value: ProgramDeploymentTransaction) -> Self { - let ProgramDeploymentTransaction { message } = value; + let ProgramDeploymentTransaction { hash: _, message } = value; Self::new(message.into()) } } diff --git a/indexer_service/protocol/src/lib.rs b/indexer_service/protocol/src/lib.rs index f12bdf5b..c354aa59 100644 --- a/indexer_service/protocol/src/lib.rs +++ b/indexer_service/protocol/src/lib.rs @@ -67,14 +67,27 @@ pub enum Transaction { ProgramDeployment(ProgramDeploymentTransaction), } +impl Transaction { + /// Get the hash of the transaction + pub fn hash(&self) -> &self::Hash { + match self { + Transaction::Public(tx) => &tx.hash, + Transaction::PrivacyPreserving(tx) => &tx.hash, + Transaction::ProgramDeployment(tx) => &tx.hash, + } + } +} + #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct PublicTransaction { + pub hash: Hash, pub message: PublicMessage, pub witness_set: WitnessSet, } #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct PrivacyPreservingTransaction { + pub hash: Hash, pub message: PrivacyPreservingMessage, pub witness_set: WitnessSet, } @@ -121,6 +134,7 @@ pub struct EncryptedAccountData { #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct ProgramDeploymentTransaction { + pub hash: Hash, pub message: ProgramDeploymentMessage, } @@ -133,7 +147,7 @@ pub struct Ciphertext( pub Vec<u8>, ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct PublicKey( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded public key")] @@ -147,21 +161,21 @@ pub struct EphemeralPublicKey( pub Vec<u8>, ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct Commitment( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded commitment")] pub [u8; 32], ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct Nullifier( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded nullifier")] pub [u8; 32], ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct CommitmentSetDigest( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded commitment set digest")] @@ -182,7 +196,7 @@ pub struct Data( pub Vec<u8>, ); -#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)] pub struct Hash( #[serde(with = "base64::arr")] #[schemars(with = "String", description = "base64-encoded hash")] diff --git a/indexer_service/rpc/src/lib.rs b/indexer_service/rpc/src/lib.rs index c1c4a560..def20ad5 100644 --- a/indexer_service/rpc/src/lib.rs +++ b/indexer_service/rpc/src/lib.rs @@ -1,11 +1,14 @@ use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; -use jsonrpsee::{core::SubscriptionResult, proc_macros::rpc, types::ErrorObjectOwned}; +use jsonrpsee::proc_macros::rpc; +#[cfg(feature = "server")] +use jsonrpsee::{core::SubscriptionResult, types::ErrorObjectOwned}; #[cfg(all(not(feature = "server"), not(feature = "client")))] compile_error!("At least one of `server` or `client` features must be enabled."); -#[cfg_attr(feature = "server", rpc(server))] -#[cfg_attr(feature = "client", rpc(client))] +#[cfg_attr(all(feature = "server", not(feature = "client")), rpc(server))] +#[cfg_attr(all(feature = "client", not(feature = "server")), rpc(client))] +#[cfg_attr(all(feature = "server", feature = "client"), rpc(server, client))] pub trait Rpc { #[method(name = "get_schema")] fn get_schema(&self) -> Result<serde_json::Value, ErrorObjectOwned> { @@ -37,4 +40,15 @@ pub trait Rpc { #[method(name = "getTransaction")] async fn get_transaction(&self, tx_hash: Hash) -> Result<Transaction, ErrorObjectOwned>; + + #[method(name = "getBlocks")] + async fn get_blocks(&self, offset: u32, limit: u32) -> Result<Vec<Block>, ErrorObjectOwned>; + + #[method(name = "getTransactionsByAccount")] + async fn get_transactions_by_account( + &self, + account_id: AccountId, + limit: u32, + offset: u32, + ) -> Result<Vec<Transaction>, ErrorObjectOwned>; } diff --git a/indexer_service/src/lib.rs b/indexer_service/src/lib.rs index 1f278a4d..0c18410e 100644 --- a/indexer_service/src/lib.rs +++ b/indexer_service/src/lib.rs @@ -1 +1,4 @@ pub mod service; + +#[cfg(feature = "mock-responses")] +pub mod mock_service; diff --git a/indexer_service/src/main.rs b/indexer_service/src/main.rs index bfdd3259..1c6856ec 100644 --- a/indexer_service/src/main.rs +++ b/indexer_service/src/main.rs @@ -51,7 +51,13 @@ async fn run_server(port: u16) -> Result<jsonrpsee::server::ServerHandle> { info!("Starting Indexer Service RPC server on {addr}"); + #[cfg(not(feature = "mock-responses"))] let handle = server.start(indexer_service::service::IndexerService.into_rpc()); + #[cfg(feature = "mock-responses")] + let handle = server.start( + indexer_service::mock_service::MockIndexerService::new_with_mock_blocks().into_rpc(), + ); + Ok(handle) } diff --git a/indexer_service/src/mock_service.rs b/indexer_service/src/mock_service.rs new file mode 100644 index 00000000..907bdd0e --- /dev/null +++ b/indexer_service/src/mock_service.rs @@ -0,0 +1,271 @@ +use std::collections::HashMap; + +use indexer_service_protocol::{ + Account, AccountId, BedrockStatus, Block, BlockBody, BlockHeader, BlockId, Commitment, + CommitmentSetDigest, Data, EncryptedAccountData, Hash, MantleMsgId, PrivacyPreservingMessage, + PrivacyPreservingTransaction, ProgramDeploymentMessage, ProgramDeploymentTransaction, + PublicMessage, PublicTransaction, Signature, Transaction, WitnessSet, +}; +use jsonrpsee::{core::SubscriptionResult, types::ErrorObjectOwned}; + +/// A mock implementation of the IndexerService RPC for testing purposes. +pub struct MockIndexerService { + blocks: Vec<Block>, + accounts: HashMap<AccountId, Account>, + transactions: HashMap<Hash, (Transaction, BlockId)>, +} + +impl MockIndexerService { + pub fn new_with_mock_blocks() -> Self { + let mut blocks = Vec::new(); + let mut accounts = HashMap::new(); + let mut transactions = HashMap::new(); + + // Create some mock accounts + let account_ids: Vec<AccountId> = (0..5) + .map(|i| { + let mut value = [0u8; 32]; + value[0] = i; + AccountId { value } + }) + .collect(); + + for (i, account_id) in account_ids.iter().enumerate() { + accounts.insert( + *account_id, + Account { + program_owner: [i as u32; 8], + balance: 1000 * (i as u128 + 1), + data: Data(vec![0xaa, 0xbb, 0xcc]), + nonce: i as u128, + }, + ); + } + + // Create 10 blocks with transactions + let mut prev_hash = Hash([0u8; 32]); + + for block_id in 0..10 { + let block_hash = { + let mut hash = [0u8; 32]; + hash[0] = block_id as u8; + hash[1] = 0xff; + Hash(hash) + }; + + // Create 2-4 transactions per block (mix of Public, PrivacyPreserving, and + // ProgramDeployment) + let num_txs = 2 + (block_id % 3); + let mut block_transactions = Vec::new(); + + for tx_idx in 0..num_txs { + let tx_hash = { + let mut hash = [0u8; 32]; + hash[0] = block_id as u8; + hash[1] = tx_idx as u8; + Hash(hash) + }; + + // Vary transaction types: Public, PrivacyPreserving, or ProgramDeployment + let tx = match (block_id + tx_idx) % 5 { + // Public transactions (most common) + 0 | 1 => Transaction::Public(PublicTransaction { + hash: tx_hash, + message: PublicMessage { + program_id: [1u32; 8], + account_ids: vec![ + account_ids[tx_idx as usize % account_ids.len()], + account_ids[(tx_idx as usize + 1) % account_ids.len()], + ], + nonces: vec![block_id as u128, (block_id + 1) as u128], + instruction_data: vec![1, 2, 3, 4], + }, + witness_set: WitnessSet { + signatures_and_public_keys: vec![], + proof: indexer_service_protocol::Proof(vec![0; 32]), + }, + }), + // PrivacyPreserving transactions + 2 | 3 => Transaction::PrivacyPreserving(PrivacyPreservingTransaction { + hash: tx_hash, + message: PrivacyPreservingMessage { + public_account_ids: vec![ + account_ids[tx_idx as usize % account_ids.len()], + ], + nonces: vec![block_id as u128], + public_post_states: vec![Account { + program_owner: [1u32; 8], + balance: 500, + data: Data(vec![0xdd, 0xee]), + nonce: block_id as u128, + }], + encrypted_private_post_states: vec![EncryptedAccountData { + ciphertext: indexer_service_protocol::Ciphertext(vec![ + 0x01, 0x02, 0x03, 0x04, + ]), + epk: indexer_service_protocol::EphemeralPublicKey(vec![0xaa; 32]), + view_tag: 42, + }], + new_commitments: vec![Commitment([block_id as u8; 32])], + new_nullifiers: vec![( + indexer_service_protocol::Nullifier([tx_idx as u8; 32]), + CommitmentSetDigest([0xff; 32]), + )], + }, + witness_set: WitnessSet { + signatures_and_public_keys: vec![], + proof: indexer_service_protocol::Proof(vec![0; 32]), + }, + }), + // ProgramDeployment transactions (rare) + _ => Transaction::ProgramDeployment(ProgramDeploymentTransaction { + hash: tx_hash, + message: ProgramDeploymentMessage { + bytecode: vec![0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00], /* WASM magic number */ + }, + }), + }; + + transactions.insert(tx_hash, (tx.clone(), block_id)); + block_transactions.push(tx); + } + + let block = Block { + header: BlockHeader { + block_id, + prev_block_hash: prev_hash, + hash: block_hash, + timestamp: 1704067200000 + (block_id * 12000), // ~12 seconds per block + signature: Signature([0u8; 64]), + }, + body: BlockBody { + transactions: block_transactions, + }, + bedrock_status: match block_id { + 0..=5 => BedrockStatus::Finalized, + 6..=8 => BedrockStatus::Safe, + _ => BedrockStatus::Pending, + }, + bedrock_parent_id: MantleMsgId([0; 32]), + }; + + prev_hash = block_hash; + blocks.push(block); + } + + Self { + blocks, + accounts, + transactions, + } + } +} + +// `async_trait` is required by `jsonrpsee` +#[async_trait::async_trait] +impl indexer_service_rpc::RpcServer for MockIndexerService { + async fn subscribe_to_blocks( + &self, + _subscription_sink: jsonrpsee::PendingSubscriptionSink, + _from: BlockId, + ) -> SubscriptionResult { + // Subscription not implemented for mock service + Err("Subscriptions not supported in mock service".into()) + } + + async fn get_block_by_id(&self, block_id: BlockId) -> Result<Block, ErrorObjectOwned> { + self.blocks + .iter() + .find(|b| b.header.block_id == block_id) + .cloned() + .ok_or_else(|| { + ErrorObjectOwned::owned( + -32001, + format!("Block with ID {} not found", block_id), + None::<()>, + ) + }) + } + + async fn get_block_by_hash(&self, block_hash: Hash) -> Result<Block, ErrorObjectOwned> { + self.blocks + .iter() + .find(|b| b.header.hash == block_hash) + .cloned() + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "Block with hash not found", None::<()>)) + } + + async fn get_last_block_id(&self) -> Result<BlockId, ErrorObjectOwned> { + self.blocks + .last() + .map(|b| b.header.block_id) + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "No blocks available", None::<()>)) + } + + async fn get_account(&self, account_id: AccountId) -> Result<Account, ErrorObjectOwned> { + self.accounts + .get(&account_id) + .cloned() + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "Account not found", None::<()>)) + } + + async fn get_transaction(&self, tx_hash: Hash) -> Result<Transaction, ErrorObjectOwned> { + self.transactions + .get(&tx_hash) + .map(|(tx, _)| tx.clone()) + .ok_or_else(|| ErrorObjectOwned::owned(-32001, "Transaction not found", None::<()>)) + } + + async fn get_blocks(&self, offset: u32, limit: u32) -> Result<Vec<Block>, ErrorObjectOwned> { + let offset = offset as usize; + let limit = limit as usize; + let total = self.blocks.len(); + + // Return blocks in reverse order (newest first), with pagination + let start = offset.min(total); + let end = (offset + limit).min(total); + + Ok(self + .blocks + .iter() + .rev() + .skip(start) + .take(end - start) + .cloned() + .collect()) + } + + async fn get_transactions_by_account( + &self, + account_id: AccountId, + limit: u32, + offset: u32, + ) -> Result<Vec<Transaction>, ErrorObjectOwned> { + let mut account_txs: Vec<_> = self + .transactions + .values() + .filter(|(tx, _)| match tx { + Transaction::Public(pub_tx) => pub_tx.message.account_ids.contains(&account_id), + Transaction::PrivacyPreserving(priv_tx) => { + priv_tx.message.public_account_ids.contains(&account_id) + } + Transaction::ProgramDeployment(_) => false, + }) + .collect(); + + // Sort by block ID descending (most recent first) + account_txs.sort_by(|a, b| b.1.cmp(&a.1)); + + let start = offset as usize; + if start >= account_txs.len() { + return Ok(Vec::new()); + } + + let end = (start + limit as usize).min(account_txs.len()); + + Ok(account_txs[start..end] + .iter() + .map(|(tx, _)| tx.clone()) + .collect()) + } +} diff --git a/indexer_service/src/service.rs b/indexer_service/src/service.rs index 46c5fb2d..432dcc24 100644 --- a/indexer_service/src/service.rs +++ b/indexer_service/src/service.rs @@ -33,4 +33,17 @@ impl indexer_service_rpc::RpcServer for IndexerService { async fn get_transaction(&self, _tx_hash: Hash) -> Result<Transaction, ErrorObjectOwned> { todo!() } + + async fn get_blocks(&self, _offset: u32, _limit: u32) -> Result<Vec<Block>, ErrorObjectOwned> { + todo!() + } + + async fn get_transactions_by_account( + &self, + _account_id: AccountId, + _limit: u32, + _offset: u32, + ) -> Result<Vec<Transaction>, ErrorObjectOwned> { + todo!() + } } diff --git a/nssa/src/privacy_preserving_transaction/transaction.rs b/nssa/src/privacy_preserving_transaction/transaction.rs index 34649d2d..8eb4236e 100644 --- a/nssa/src/privacy_preserving_transaction/transaction.rs +++ b/nssa/src/privacy_preserving_transaction/transaction.rs @@ -5,6 +5,7 @@ use nssa_core::{ Commitment, CommitmentSetDigest, Nullifier, PrivacyPreservingCircuitOutput, account::{Account, AccountWithMetadata}, }; +use sha2::{Digest as _, digest::FixedOutput as _}; use super::{message::Message, witness_set::WitnessSet}; use crate::{ @@ -131,6 +132,13 @@ impl PrivacyPreservingTransaction { &self.witness_set } + pub fn hash(&self) -> [u8; 32] { + let bytes = self.to_bytes(); + let mut hasher = sha2::Sha256::new(); + hasher.update(&bytes); + hasher.finalize_fixed().into() + } + pub(crate) fn signer_account_ids(&self) -> Vec<AccountId> { self.witness_set .signatures_and_public_keys() diff --git a/nssa/src/program_deployment_transaction/transaction.rs b/nssa/src/program_deployment_transaction/transaction.rs index 6002aded..188b73ea 100644 --- a/nssa/src/program_deployment_transaction/transaction.rs +++ b/nssa/src/program_deployment_transaction/transaction.rs @@ -1,4 +1,5 @@ use borsh::{BorshDeserialize, BorshSerialize}; +use sha2::{Digest as _, digest::FixedOutput as _}; use crate::{ V02State, error::NssaError, program::Program, program_deployment_transaction::message::Message, @@ -6,7 +7,7 @@ use crate::{ #[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] pub struct ProgramDeploymentTransaction { - pub(crate) message: Message, + pub message: Message, } impl ProgramDeploymentTransaction { @@ -30,4 +31,11 @@ impl ProgramDeploymentTransaction { Ok(program) } } + + pub fn hash(&self) -> [u8; 32] { + let bytes = self.to_bytes(); + let mut hasher = sha2::Sha256::new(); + hasher.update(&bytes); + hasher.finalize_fixed().into() + } } diff --git a/nssa/src/public_transaction/transaction.rs b/nssa/src/public_transaction/transaction.rs index f5badb6a..7d42dccc 100644 --- a/nssa/src/public_transaction/transaction.rs +++ b/nssa/src/public_transaction/transaction.rs @@ -17,8 +17,8 @@ use crate::{ #[derive(Debug, Clone, PartialEq, Eq, BorshSerialize, BorshDeserialize)] pub struct PublicTransaction { - message: Message, - witness_set: WitnessSet, + pub message: Message, + pub witness_set: WitnessSet, } impl PublicTransaction { From fcb2917c21ab14deebeac3a78c73e8dc9d44bba0 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Thu, 29 Jan 2026 22:20:42 +0300 Subject: [PATCH 11/25] Remove `post_indexer_message()` --- Cargo.lock | 8 ++++++++ common/src/communication/mod.rs | 1 - common/src/lib.rs | 1 - common/src/rpc_primitives/requests.rs | 11 ----------- common/src/sequencer_client.rs | 22 +--------------------- indexer_core/src/lib.rs | 14 ++------------ indexer_service/Cargo.toml | 8 ++++++++ indexer_service/src/lib.rs | 1 + sequencer_rpc/src/process.rs | 14 -------------- 9 files changed, 20 insertions(+), 60 deletions(-) delete mode 100644 common/src/communication/mod.rs diff --git a/Cargo.lock b/Cargo.lock index 460e998a..46d53b34 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3225,14 +3225,22 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", + "bedrock_client", + "borsh", "clap 4.5.53", + "common", "env_logger", + "futures", "indexer_service_protocol", "indexer_service_rpc", "jsonrpsee", "log", + "logos-blockchain-core", + "serde", + "serde_json", "tokio", "tokio-util", + "url", ] [[package]] diff --git a/common/src/communication/mod.rs b/common/src/communication/mod.rs deleted file mode 100644 index d99eb481..00000000 --- a/common/src/communication/mod.rs +++ /dev/null @@ -1 +0,0 @@ -pub mod indexer; diff --git a/common/src/lib.rs b/common/src/lib.rs index 68902811..b64e6ef9 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -1,5 +1,4 @@ pub mod block; -pub mod communication; pub mod error; pub mod rpc_primitives; pub mod sequencer_client; diff --git a/common/src/rpc_primitives/requests.rs b/common/src/rpc_primitives/requests.rs index 6191df44..71641936 100644 --- a/common/src/rpc_primitives/requests.rs +++ b/common/src/rpc_primitives/requests.rs @@ -73,11 +73,6 @@ pub struct GetProofForCommitmentRequest { #[derive(Serialize, Deserialize, Debug)] pub struct GetProgramIdsRequest {} -#[derive(Serialize, Deserialize, Debug)] -pub struct PostIndexerMessageRequest { - pub message: crate::communication::indexer::Message, -} - parse_request!(HelloRequest); parse_request!(RegisterAccountRequest); parse_request!(SendTxRequest); @@ -92,7 +87,6 @@ parse_request!(GetAccountsNoncesRequest); parse_request!(GetProofForCommitmentRequest); parse_request!(GetAccountRequest); parse_request!(GetProgramIdsRequest); -parse_request!(PostIndexerMessageRequest); #[derive(Serialize, Deserialize, Debug)] pub struct HelloResponse { @@ -222,8 +216,3 @@ pub struct GetInitialTestnetAccountsResponse { pub account_id: String, pub balance: u64, } - -#[derive(Serialize, Deserialize, Debug)] -pub struct PostIndexerMessageResponse { - pub status: String, -} diff --git a/common/src/sequencer_client.rs b/common/src/sequencer_client.rs index 7a14d425..f25b451f 100644 --- a/common/src/sequencer_client.rs +++ b/common/src/sequencer_client.rs @@ -22,8 +22,7 @@ use crate::{ GetInitialTestnetAccountsResponse, GetLastBlockRequest, GetLastBlockResponse, GetProgramIdsRequest, GetProgramIdsResponse, GetProofForCommitmentRequest, GetProofForCommitmentResponse, GetTransactionByHashRequest, - GetTransactionByHashResponse, PostIndexerMessageRequest, PostIndexerMessageResponse, - SendTxRequest, SendTxResponse, + GetTransactionByHashResponse, SendTxRequest, SendTxResponse, }, }, transaction::{EncodedTransaction, NSSATransaction}, @@ -396,23 +395,4 @@ impl SequencerClient { Ok(resp_deser) } - - /// Post indexer into sequencer - pub async fn post_indexer_message( - &self, - message: crate::communication::indexer::Message, - ) -> Result<PostIndexerMessageResponse, SequencerClientError> { - let last_req = PostIndexerMessageRequest { message }; - - let req = serde_json::to_value(last_req).unwrap(); - - let resp = self - .call_method_with_payload("post_indexer_message", req) - .await - .unwrap(); - - let resp_deser = serde_json::from_value(resp).unwrap(); - - Ok(resp_deser) - } } diff --git a/indexer_core/src/lib.rs b/indexer_core/src/lib.rs index ca9ec22f..332d4d98 100644 --- a/indexer_core/src/lib.rs +++ b/indexer_core/src/lib.rs @@ -2,10 +2,7 @@ use std::sync::Arc; use anyhow::Result; use bedrock_client::BedrockClient; -use common::{ - block::HashableBlockData, communication::indexer::Message, - rpc_primitives::requests::PostIndexerMessageResponse, sequencer_client::SequencerClient, -}; +use common::{block::HashableBlockData, sequencer_client::SequencerClient}; use futures::StreamExt; use log::info; use logos_blockchain_core::mantle::{ @@ -96,13 +93,6 @@ impl IndexerCore { .await; } } - - pub async fn send_message_to_sequencer( - &self, - message: Message, - ) -> Result<PostIndexerMessageResponse> { - Ok(self.sequencer_client.post_indexer_message(message).await?) - } } fn parse_blocks( @@ -121,4 +111,4 @@ fn parse_blocks( _ => None, }) }) -} +} \ No newline at end of file diff --git a/indexer_service/Cargo.toml b/indexer_service/Cargo.toml index 8c085d7e..723c82ac 100644 --- a/indexer_service/Cargo.toml +++ b/indexer_service/Cargo.toml @@ -6,6 +6,8 @@ edition = "2024" [dependencies] indexer_service_protocol.workspace = true indexer_service_rpc = { workspace = true, features = ["server"] } +common.workspace = true +bedrock_client.workspace = true clap = { workspace = true, features = ["derive"] } anyhow.workspace = true @@ -15,6 +17,12 @@ env_logger.workspace = true log.workspace = true jsonrpsee.workspace = true async-trait = "0.1.89" +serde.workspace = true +serde_json.workspace = true +borsh.workspace = true +futures.workspace = true +url.workspace = true +logos-blockchain-core.workspace = true [features] # Return mock responses with generated data for testing purposes diff --git a/indexer_service/src/lib.rs b/indexer_service/src/lib.rs index 0c18410e..ccabe1ae 100644 --- a/indexer_service/src/lib.rs +++ b/indexer_service/src/lib.rs @@ -1,3 +1,4 @@ +#[cfg(not(feature = "mock-responses"))] pub mod service; #[cfg(feature = "mock-responses")] diff --git a/sequencer_rpc/src/process.rs b/sequencer_rpc/src/process.rs index 8b4ec7a5..6d149448 100644 --- a/sequencer_rpc/src/process.rs +++ b/sequencer_rpc/src/process.rs @@ -44,7 +44,6 @@ pub const GET_ACCOUNTS_NONCES: &str = "get_accounts_nonces"; pub const GET_ACCOUNT: &str = "get_account"; pub const GET_PROOF_FOR_COMMITMENT: &str = "get_proof_for_commitment"; pub const GET_PROGRAM_IDS: &str = "get_program_ids"; -pub const POST_INDEXER_MESSAGE: &str = "post_indexer_message"; pub const HELLO_FROM_SEQUENCER: &str = "HELLO_FROM_SEQUENCER"; @@ -315,18 +314,6 @@ impl JsonHandler { respond(response) } - async fn process_indexer_message(&self, request: Request) -> Result<Value, RpcErr> { - let _indexer_post_req = PostIndexerMessageRequest::parse(Some(request.params))?; - - // ToDo: Add indexer messages handling - - let response = PostIndexerMessageResponse { - status: "Success".to_string(), - }; - - respond(response) - } - pub async fn process_request_internal(&self, request: Request) -> Result<Value, RpcErr> { match request.method.as_ref() { HELLO => self.process_temp_hello(request).await, @@ -342,7 +329,6 @@ impl JsonHandler { GET_TRANSACTION_BY_HASH => self.process_get_transaction_by_hash(request).await, GET_PROOF_FOR_COMMITMENT => self.process_get_proof_by_commitment(request).await, GET_PROGRAM_IDS => self.process_get_program_ids(request).await, - POST_INDEXER_MESSAGE => self.process_indexer_message(request).await, _ => Err(RpcErr(RpcError::method_not_found(request.method))), } } From 9cac2e7487b881491c0f9c62a20814372a2b2a4e Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Thu, 29 Jan 2026 22:23:42 +0300 Subject: [PATCH 12/25] Move indexer_core and indexer_service into indexer --- Cargo.toml | 16 ++++++++-------- {indexer_core => indexer/core}/Cargo.toml | 0 {indexer_core => indexer/core}/src/config.rs | 0 {indexer_core => indexer/core}/src/lib.rs | 2 +- {indexer_core => indexer/core}/src/state.rs | 0 {indexer_service => indexer/service}/Cargo.toml | 0 {indexer_service => indexer/service}/Dockerfile | 0 .../service}/docker-compose.yml | 0 .../service}/protocol/Cargo.toml | 0 .../service}/protocol/src/convert.rs | 0 .../service}/protocol/src/lib.rs | 0 .../service}/rpc/Cargo.toml | 0 .../service}/rpc/src/lib.rs | 0 {indexer_service => indexer/service}/src/lib.rs | 0 {indexer_service => indexer/service}/src/main.rs | 0 .../service}/src/mock_service.rs | 0 .../service}/src/service.rs | 0 17 files changed, 9 insertions(+), 9 deletions(-) rename {indexer_core => indexer/core}/Cargo.toml (100%) rename {indexer_core => indexer/core}/src/config.rs (100%) rename {indexer_core => indexer/core}/src/lib.rs (99%) rename {indexer_core => indexer/core}/src/state.rs (100%) rename {indexer_service => indexer/service}/Cargo.toml (100%) rename {indexer_service => indexer/service}/Dockerfile (100%) rename {indexer_service => indexer/service}/docker-compose.yml (100%) rename {indexer_service => indexer/service}/protocol/Cargo.toml (100%) rename {indexer_service => indexer/service}/protocol/src/convert.rs (100%) rename {indexer_service => indexer/service}/protocol/src/lib.rs (100%) rename {indexer_service => indexer/service}/rpc/Cargo.toml (100%) rename {indexer_service => indexer/service}/rpc/src/lib.rs (100%) rename {indexer_service => indexer/service}/src/lib.rs (100%) rename {indexer_service => indexer/service}/src/main.rs (100%) rename {indexer_service => indexer/service}/src/mock_service.rs (100%) rename {indexer_service => indexer/service}/src/service.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index dcceb699..2e5602f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,9 +13,10 @@ members = [ "sequencer_core", "sequencer_rpc", "sequencer_runner", - "indexer_service", - "indexer_service/protocol", - "indexer_service/rpc", + "indexer/core", + "indexer/service", + "indexer/service/protocol", + "indexer/service/rpc", "explorer_service", "program_methods", "program_methods/guest", @@ -25,7 +26,6 @@ members = [ "examples/program_deployment/methods", "examples/program_deployment/methods/guest", "bedrock_client", - "indexer_core", ] [workspace.dependencies] @@ -38,14 +38,14 @@ key_protocol = { path = "key_protocol" } sequencer_core = { path = "sequencer_core" } sequencer_rpc = { path = "sequencer_rpc" } sequencer_runner = { path = "sequencer_runner" } -indexer_service = { path = "indexer_service" } -indexer_service_protocol = { path = "indexer_service/protocol" } -indexer_service_rpc = { path = "indexer_service/rpc" } +indexer_core = { path = "indexer/core" } +indexer_service = { path = "indexer/service" } +indexer_service_protocol = { path = "indexer/service/protocol" } +indexer_service_rpc = { path = "indexer/service/rpc" } wallet = { path = "wallet" } wallet-ffi = { path = "wallet-ffi" } test_program_methods = { path = "test_program_methods" } bedrock_client = { path = "bedrock_client" } -indexer_core = { path = "indexer_core" } tokio = { version = "1.28.2", features = [ "net", diff --git a/indexer_core/Cargo.toml b/indexer/core/Cargo.toml similarity index 100% rename from indexer_core/Cargo.toml rename to indexer/core/Cargo.toml diff --git a/indexer_core/src/config.rs b/indexer/core/src/config.rs similarity index 100% rename from indexer_core/src/config.rs rename to indexer/core/src/config.rs diff --git a/indexer_core/src/lib.rs b/indexer/core/src/lib.rs similarity index 99% rename from indexer_core/src/lib.rs rename to indexer/core/src/lib.rs index 332d4d98..23909e29 100644 --- a/indexer_core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -111,4 +111,4 @@ fn parse_blocks( _ => None, }) }) -} \ No newline at end of file +} diff --git a/indexer_core/src/state.rs b/indexer/core/src/state.rs similarity index 100% rename from indexer_core/src/state.rs rename to indexer/core/src/state.rs diff --git a/indexer_service/Cargo.toml b/indexer/service/Cargo.toml similarity index 100% rename from indexer_service/Cargo.toml rename to indexer/service/Cargo.toml diff --git a/indexer_service/Dockerfile b/indexer/service/Dockerfile similarity index 100% rename from indexer_service/Dockerfile rename to indexer/service/Dockerfile diff --git a/indexer_service/docker-compose.yml b/indexer/service/docker-compose.yml similarity index 100% rename from indexer_service/docker-compose.yml rename to indexer/service/docker-compose.yml diff --git a/indexer_service/protocol/Cargo.toml b/indexer/service/protocol/Cargo.toml similarity index 100% rename from indexer_service/protocol/Cargo.toml rename to indexer/service/protocol/Cargo.toml diff --git a/indexer_service/protocol/src/convert.rs b/indexer/service/protocol/src/convert.rs similarity index 100% rename from indexer_service/protocol/src/convert.rs rename to indexer/service/protocol/src/convert.rs diff --git a/indexer_service/protocol/src/lib.rs b/indexer/service/protocol/src/lib.rs similarity index 100% rename from indexer_service/protocol/src/lib.rs rename to indexer/service/protocol/src/lib.rs diff --git a/indexer_service/rpc/Cargo.toml b/indexer/service/rpc/Cargo.toml similarity index 100% rename from indexer_service/rpc/Cargo.toml rename to indexer/service/rpc/Cargo.toml diff --git a/indexer_service/rpc/src/lib.rs b/indexer/service/rpc/src/lib.rs similarity index 100% rename from indexer_service/rpc/src/lib.rs rename to indexer/service/rpc/src/lib.rs diff --git a/indexer_service/src/lib.rs b/indexer/service/src/lib.rs similarity index 100% rename from indexer_service/src/lib.rs rename to indexer/service/src/lib.rs diff --git a/indexer_service/src/main.rs b/indexer/service/src/main.rs similarity index 100% rename from indexer_service/src/main.rs rename to indexer/service/src/main.rs diff --git a/indexer_service/src/mock_service.rs b/indexer/service/src/mock_service.rs similarity index 100% rename from indexer_service/src/mock_service.rs rename to indexer/service/src/mock_service.rs diff --git a/indexer_service/src/service.rs b/indexer/service/src/service.rs similarity index 100% rename from indexer_service/src/service.rs rename to indexer/service/src/service.rs From 22a6195eca28fd3c638e2f77ffa9cec59743327c Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Thu, 29 Jan 2026 22:34:27 +0300 Subject: [PATCH 13/25] Move BasicAuth to common::config and remove SequencerClient from IndexerCore --- common/src/communication/indexer.rs | 6 ---- common/src/config.rs | 55 +++++++++++++++++++++++++++++ common/src/lib.rs | 1 + common/src/sequencer_client.rs | 55 ++--------------------------- indexer/core/src/config.rs | 10 +++--- indexer/core/src/lib.rs | 13 +++---- sequencer_core/src/config.rs | 2 +- wallet/src/config.rs | 2 +- 8 files changed, 69 insertions(+), 75 deletions(-) delete mode 100644 common/src/communication/indexer.rs create mode 100644 common/src/config.rs diff --git a/common/src/communication/indexer.rs b/common/src/communication/indexer.rs deleted file mode 100644 index a0edc176..00000000 --- a/common/src/communication/indexer.rs +++ /dev/null @@ -1,6 +0,0 @@ -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub enum Message { - L2BlockFinalized { l2_block_height: u64 }, -} diff --git a/common/src/config.rs b/common/src/config.rs new file mode 100644 index 00000000..3850f08c --- /dev/null +++ b/common/src/config.rs @@ -0,0 +1,55 @@ +//! Common configuration structures and utilities. + +use std::str::FromStr; + +use logos_blockchain_common_http_client::BasicAuthCredentials; +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct BasicAuth { + pub username: String, + pub password: Option<String>, +} + +impl std::fmt::Display for BasicAuth { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.username)?; + if let Some(password) = &self.password { + write!(f, ":{password}")?; + } + + Ok(()) + } +} + +impl FromStr for BasicAuth { + type Err = anyhow::Error; + + fn from_str(s: &str) -> Result<Self, Self::Err> { + let parse = || { + let mut parts = s.splitn(2, ':'); + let username = parts.next()?; + let password = parts.next().filter(|p| !p.is_empty()); + if parts.next().is_some() { + return None; + } + + Some((username, password)) + }; + + let (username, password) = parse().ok_or_else(|| { + anyhow::anyhow!("Invalid auth format. Expected 'user' or 'user:password'") + })?; + + Ok(Self { + username: username.to_string(), + password: password.map(|p| p.to_string()), + }) + } +} + +impl From<BasicAuth> for BasicAuthCredentials { + fn from(value: BasicAuth) -> Self { + BasicAuthCredentials::new(value.username, value.password) + } +} diff --git a/common/src/lib.rs b/common/src/lib.rs index b64e6ef9..21c0796d 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -1,4 +1,5 @@ pub mod block; +pub mod config; pub mod error; pub mod rpc_primitives; pub mod sequencer_client; diff --git a/common/src/sequencer_client.rs b/common/src/sequencer_client.rs index f25b451f..ee197a37 100644 --- a/common/src/sequencer_client.rs +++ b/common/src/sequencer_client.rs @@ -1,10 +1,9 @@ -use std::{collections::HashMap, ops::RangeInclusive, str::FromStr}; +use std::{collections::HashMap, ops::RangeInclusive}; use anyhow::Result; -use logos_blockchain_common_http_client::BasicAuthCredentials; use nssa_core::program::ProgramId; use reqwest::Client; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use serde_json::Value; use url::Url; @@ -13,6 +12,7 @@ use super::rpc_primitives::requests::{ GetGenesisIdRequest, GetGenesisIdResponse, GetInitialTestnetAccountsRequest, }; use crate::{ + config::BasicAuth, error::{SequencerClientError, SequencerRpcError}, rpc_primitives::{ self, @@ -28,55 +28,6 @@ use crate::{ transaction::{EncodedTransaction, NSSATransaction}, }; -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct BasicAuth { - pub username: String, - pub password: Option<String>, -} - -impl std::fmt::Display for BasicAuth { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{}", self.username)?; - if let Some(password) = &self.password { - write!(f, ":{password}")?; - } - - Ok(()) - } -} - -impl FromStr for BasicAuth { - type Err = anyhow::Error; - - fn from_str(s: &str) -> Result<Self, Self::Err> { - let parse = || { - let mut parts = s.splitn(2, ':'); - let username = parts.next()?; - let password = parts.next().filter(|p| !p.is_empty()); - if parts.next().is_some() { - return None; - } - - Some((username, password)) - }; - - let (username, password) = parse().ok_or_else(|| { - anyhow::anyhow!("Invalid auth format. Expected 'user' or 'user:password'") - })?; - - Ok(Self { - username: username.to_string(), - password: password.map(|p| p.to_string()), - }) - } -} - -impl From<BasicAuth> for BasicAuthCredentials { - fn from(value: BasicAuth) -> Self { - BasicAuthCredentials::new(value.username, value.password) - } -} - #[derive(Clone)] pub struct SequencerClient { pub client: reqwest::Client, diff --git a/indexer/core/src/config.rs b/indexer/core/src/config.rs index 784f5840..486a00ac 100644 --- a/indexer/core/src/config.rs +++ b/indexer/core/src/config.rs @@ -2,25 +2,23 @@ use std::{fs::File, io::BufReader, path::Path}; use anyhow::{Context, Result}; use bedrock_client::BackoffConfig; -use common::sequencer_client::BasicAuth; +use common::config::BasicAuth; use logos_blockchain_core::mantle::ops::channel::ChannelId; use serde::{Deserialize, Serialize}; use url::Url; #[derive(Debug, Clone, Serialize, Deserialize)] -/// ToDo: Expand if necessary -pub struct ClientConfig { +pub struct BedrockClientConfig { pub addr: Url, pub auth: Option<BasicAuth>, } #[derive(Debug, Clone, Serialize, Deserialize)] -/// Note: For individual RPC requests we use Fibonacci backoff retry strategy pub struct IndexerConfig { pub resubscribe_interval_millis: u64, + /// For individual RPC requests we use Fibonacci backoff retry strategy. pub backoff: BackoffConfig, - pub bedrock_client_config: ClientConfig, - pub sequencer_client_config: ClientConfig, + pub bedrock_client_config: BedrockClientConfig, pub channel_id: ChannelId, } diff --git a/indexer/core/src/lib.rs b/indexer/core/src/lib.rs index 23909e29..e88f2057 100644 --- a/indexer/core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use anyhow::Result; use bedrock_client::BedrockClient; -use common::{block::HashableBlockData, sequencer_client::SequencerClient}; +use common::block::HashableBlockData; use futures::StreamExt; use log::info; use logos_blockchain_core::mantle::{ @@ -17,10 +17,9 @@ pub mod config; pub mod state; pub struct IndexerCore { - pub bedrock_client: BedrockClient, - pub sequencer_client: SequencerClient, - pub config: IndexerConfig, - pub state: IndexerState, + bedrock_client: BedrockClient, + config: IndexerConfig, + state: IndexerState, } impl IndexerCore { @@ -30,10 +29,6 @@ impl IndexerCore { config.bedrock_client_config.auth.clone().map(Into::into), config.bedrock_client_config.addr.clone(), )?, - sequencer_client: SequencerClient::new_with_auth( - config.sequencer_client_config.addr.clone(), - config.sequencer_client_config.auth.clone(), - )?, config, // No state setup for now, future task. state: IndexerState { diff --git a/sequencer_core/src/config.rs b/sequencer_core/src/config.rs index 3d69e8af..b0dda3e6 100644 --- a/sequencer_core/src/config.rs +++ b/sequencer_core/src/config.rs @@ -5,7 +5,7 @@ use std::{ }; use anyhow::Result; -use common::sequencer_client::BasicAuth; +use common::config::BasicAuth; use logos_blockchain_core::mantle::ops::channel::ChannelId; use serde::{Deserialize, Serialize}; diff --git a/wallet/src/config.rs b/wallet/src/config.rs index 8da28bce..2784267b 100644 --- a/wallet/src/config.rs +++ b/wallet/src/config.rs @@ -4,7 +4,7 @@ use std::{ }; use anyhow::{Context as _, Result}; -use common::sequencer_client::BasicAuth; +use common::common::BasicAuth; use key_protocol::key_management::{ KeyChain, key_tree::{ From c1d2b625ea1852962c4b1c09d1439b18ca9b49ac Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Thu, 29 Jan 2026 23:03:00 +0300 Subject: [PATCH 14/25] Add IndexerCore to IndexerService --- Cargo.lock | 9 +-------- indexer/core/src/config.rs | 10 +++++----- indexer/service/Cargo.toml | 9 +-------- indexer/service/src/main.rs | 18 +++++++++++++----- indexer/service/src/service.rs | 14 +++++++++++++- 5 files changed, 33 insertions(+), 27 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 46d53b34..d87af8af 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3225,22 +3225,15 @@ version = "0.1.0" dependencies = [ "anyhow", "async-trait", - "bedrock_client", - "borsh", "clap 4.5.53", - "common", "env_logger", - "futures", + "indexer_core", "indexer_service_protocol", "indexer_service_rpc", "jsonrpsee", "log", - "logos-blockchain-core", - "serde", - "serde_json", "tokio", "tokio-util", - "url", ] [[package]] diff --git a/indexer/core/src/config.rs b/indexer/core/src/config.rs index 486a00ac..db7855ba 100644 --- a/indexer/core/src/config.rs +++ b/indexer/core/src/config.rs @@ -1,6 +1,6 @@ use std::{fs::File, io::BufReader, path::Path}; -use anyhow::{Context, Result}; +use anyhow::{Context as _, Result}; use bedrock_client::BackoffConfig; use common::config::BasicAuth; use logos_blockchain_core::mantle::ops::channel::ChannelId; @@ -23,12 +23,12 @@ pub struct IndexerConfig { } impl IndexerConfig { - pub fn from_path(config_home: &Path) -> Result<IndexerConfig> { - let file = File::open(config_home) - .with_context(|| format!("Failed to open indexer config at {config_home:?}"))?; + pub fn from_path(config_path: &Path) -> Result<IndexerConfig> { + let file = File::open(config_path) + .with_context(|| format!("Failed to open indexer config at {config_path:?}"))?; let reader = BufReader::new(file); serde_json::from_reader(reader) - .with_context(|| format!("Failed to parse indexer config at {config_home:?}")) + .with_context(|| format!("Failed to parse indexer config at {config_path:?}")) } } diff --git a/indexer/service/Cargo.toml b/indexer/service/Cargo.toml index 723c82ac..a959fcb1 100644 --- a/indexer/service/Cargo.toml +++ b/indexer/service/Cargo.toml @@ -6,8 +6,7 @@ edition = "2024" [dependencies] indexer_service_protocol.workspace = true indexer_service_rpc = { workspace = true, features = ["server"] } -common.workspace = true -bedrock_client.workspace = true +indexer_core.workspace = true clap = { workspace = true, features = ["derive"] } anyhow.workspace = true @@ -17,12 +16,6 @@ env_logger.workspace = true log.workspace = true jsonrpsee.workspace = true async-trait = "0.1.89" -serde.workspace = true -serde_json.workspace = true -borsh.workspace = true -futures.workspace = true -url.workspace = true -logos-blockchain-core.workspace = true [features] # Return mock responses with generated data for testing purposes diff --git a/indexer/service/src/main.rs b/indexer/service/src/main.rs index 1c6856ec..f18e540b 100644 --- a/indexer/service/src/main.rs +++ b/indexer/service/src/main.rs @@ -1,4 +1,4 @@ -use std::net::SocketAddr; +use std::{net::SocketAddr, path::PathBuf}; use anyhow::{Context as _, Result}; use clap::Parser; @@ -10,6 +10,8 @@ use tokio_util::sync::CancellationToken; #[derive(Debug, Parser)] #[clap(version)] struct Args { + #[clap(rename = "config")] + config_path: PathBuf, #[clap(short, long, default_value = "8779")] port: u16, } @@ -18,11 +20,11 @@ struct Args { async fn main() -> Result<()> { env_logger::init(); - let args = Args::parse(); + let Args { config_path, port } = Args::parse(); let cancellation_token = listen_for_shutdown_signal(); - let handle = run_server(args.port).await?; + let handle = run_server(config_path, port).await?; let handle_clone = handle.clone(); tokio::select! { @@ -39,7 +41,9 @@ async fn main() -> Result<()> { Ok(()) } -async fn run_server(port: u16) -> Result<jsonrpsee::server::ServerHandle> { +async fn run_server(config_path: PathBuf, port: u16) -> Result<jsonrpsee::server::ServerHandle> { + let config = IndexerServiceConfig::from_file(&config_path)?; + let server = Server::builder() .build(SocketAddr::from(([0, 0, 0, 0], port))) .await @@ -52,7 +56,11 @@ async fn run_server(port: u16) -> Result<jsonrpsee::server::ServerHandle> { info!("Starting Indexer Service RPC server on {addr}"); #[cfg(not(feature = "mock-responses"))] - let handle = server.start(indexer_service::service::IndexerService.into_rpc()); + let handle = { + let service = indexer_service::service::IndexerService::new(config) + .context("Failed to initialize indexer service")?; + server.start(service.into_rpc()) + }?; #[cfg(feature = "mock-responses")] let handle = server.start( indexer_service::mock_service::MockIndexerService::new_with_mock_blocks().into_rpc(), diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index 432dcc24..6d61fb41 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -1,7 +1,19 @@ +use anyhow::Result; +use indexer_core::{IndexerCore, config::IndexerConfig}; use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; use jsonrpsee::{core::SubscriptionResult, types::ErrorObjectOwned}; -pub struct IndexerService; +pub struct IndexerService { + indexer: IndexerCore, +} + +impl IndexerService { + pub fn new(config: IndexerConfig) -> Result<Self> { + Ok(Self { + indexer: IndexerCore::new(config)?, + }) + } +} // `async_trait` is required by `jsonrpsee` #[async_trait::async_trait] From 616159f93608b566f601ea43ec5b0107f220d8f4 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Thu, 29 Jan 2026 23:12:33 +0300 Subject: [PATCH 15/25] Remove async_trait comments --- indexer/service/src/mock_service.rs | 1 - indexer/service/src/service.rs | 1 - 2 files changed, 2 deletions(-) diff --git a/indexer/service/src/mock_service.rs b/indexer/service/src/mock_service.rs index 907bdd0e..06a9780a 100644 --- a/indexer/service/src/mock_service.rs +++ b/indexer/service/src/mock_service.rs @@ -161,7 +161,6 @@ impl MockIndexerService { } } -// `async_trait` is required by `jsonrpsee` #[async_trait::async_trait] impl indexer_service_rpc::RpcServer for MockIndexerService { async fn subscribe_to_blocks( diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index 6d61fb41..49565ad3 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -15,7 +15,6 @@ impl IndexerService { } } -// `async_trait` is required by `jsonrpsee` #[async_trait::async_trait] impl indexer_service_rpc::RpcServer for IndexerService { async fn subscribe_to_blocks( From e0729a17251fd03702128141197f3c696c59147a Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Fri, 30 Jan 2026 19:29:59 +0300 Subject: [PATCH 16/25] Integrate indexer client into sequencer --- Cargo.lock | 6 + indexer/core/src/lib.rs | 12 +- indexer/service/Cargo.toml | 1 + indexer/service/rpc/src/lib.rs | 4 +- indexer/service/src/main.rs | 7 +- indexer/service/src/mock_service.rs | 14 +- indexer/service/src/service.rs | 2 +- integration_tests/src/lib.rs | 66 ++----- integration_tests/tests/tps.rs | 1 + sequencer_core/Cargo.toml | 4 +- sequencer_core/src/config.rs | 5 +- sequencer_core/src/lib.rs | 21 +++ sequencer_rpc/src/process.rs | 9 +- sequencer_runner/Cargo.toml | 3 + sequencer_runner/src/lib.rs | 268 +++++++++++++++++++--------- wallet/src/config.rs | 2 +- 16 files changed, 270 insertions(+), 155 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d87af8af..844b7645 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3232,6 +3232,7 @@ dependencies = [ "indexer_service_rpc", "jsonrpsee", "log", + "serde_json", "tokio", "tokio-util", ] @@ -6446,6 +6447,7 @@ dependencies = [ "chrono", "common", "futures", + "jsonrpsee", "log", "logos-blockchain-core", "logos-blockchain-key-management-system-service", @@ -6459,6 +6461,7 @@ dependencies = [ "storage", "tempfile", "tokio", + "url", ] [[package]] @@ -6495,6 +6498,9 @@ dependencies = [ "clap 4.5.53", "common", "env_logger", + "futures", + "indexer_service_protocol", + "indexer_service_rpc", "log", "sequencer_core", "sequencer_rpc", diff --git a/indexer/core/src/lib.rs b/indexer/core/src/lib.rs index e88f2057..3508a257 100644 --- a/indexer/core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -69,14 +69,14 @@ impl IndexerCore { } } - // Sending data into sequencer, may need to be expanded. - let message = Message::L2BlockFinalized { - l2_block_height: l2_block.block_id, - }; + // // Sending data into sequencer, may need to be expanded. + // let message = Message::L2BlockFinalized { + // l2_block_height: l2_block.block_id, + // }; - let status = self.send_message_to_sequencer(message.clone()).await?; + // let status = self.send_message_to_sequencer(message.clone()).await?; - info!("Sent message {message:#?} to sequencer; status {status:#?}"); + // info!("Sent message {message:#?} to sequencer; status {status:#?}"); } } } diff --git a/indexer/service/Cargo.toml b/indexer/service/Cargo.toml index a959fcb1..82639982 100644 --- a/indexer/service/Cargo.toml +++ b/indexer/service/Cargo.toml @@ -15,6 +15,7 @@ tokio-util.workspace = true env_logger.workspace = true log.workspace = true jsonrpsee.workspace = true +serde_json.workspace = true async-trait = "0.1.89" [features] diff --git a/indexer/service/rpc/src/lib.rs b/indexer/service/rpc/src/lib.rs index def20ad5..f0fd519f 100644 --- a/indexer/service/rpc/src/lib.rs +++ b/indexer/service/rpc/src/lib.rs @@ -23,8 +23,8 @@ pub trait Rpc { Ok(serde_json::to_value(block_schema).expect("Schema serialization should not fail")) } - #[subscription(name = "subscribeToBlocks", item = Vec<Block>)] - async fn subscribe_to_blocks(&self, from: BlockId) -> SubscriptionResult; + #[subscription(name = "subscribeToFinalizedBlocks", item = Block)] + async fn subscribe_to_finalized_blocks(&self, from: BlockId) -> SubscriptionResult; #[method(name = "getBlockById")] async fn get_block_by_id(&self, block_id: BlockId) -> Result<Block, ErrorObjectOwned>; diff --git a/indexer/service/src/main.rs b/indexer/service/src/main.rs index f18e540b..aaeebacd 100644 --- a/indexer/service/src/main.rs +++ b/indexer/service/src/main.rs @@ -2,6 +2,7 @@ use std::{net::SocketAddr, path::PathBuf}; use anyhow::{Context as _, Result}; use clap::Parser; +use indexer_core::config::IndexerConfig; use indexer_service_rpc::RpcServer as _; use jsonrpsee::server::Server; use log::{error, info}; @@ -10,7 +11,7 @@ use tokio_util::sync::CancellationToken; #[derive(Debug, Parser)] #[clap(version)] struct Args { - #[clap(rename = "config")] + #[clap(name = "config")] config_path: PathBuf, #[clap(short, long, default_value = "8779")] port: u16, @@ -42,7 +43,9 @@ async fn main() -> Result<()> { } async fn run_server(config_path: PathBuf, port: u16) -> Result<jsonrpsee::server::ServerHandle> { - let config = IndexerServiceConfig::from_file(&config_path)?; + let config = IndexerConfig::from_path(&config_path)?; + #[cfg(feature = "mock-responses")] + let _ = config; let server = Server::builder() .build(SocketAddr::from(([0, 0, 0, 0], port))) diff --git a/indexer/service/src/mock_service.rs b/indexer/service/src/mock_service.rs index 06a9780a..e6edd172 100644 --- a/indexer/service/src/mock_service.rs +++ b/indexer/service/src/mock_service.rs @@ -163,13 +163,17 @@ impl MockIndexerService { #[async_trait::async_trait] impl indexer_service_rpc::RpcServer for MockIndexerService { - async fn subscribe_to_blocks( + async fn subscribe_to_finalized_blocks( &self, - _subscription_sink: jsonrpsee::PendingSubscriptionSink, - _from: BlockId, + subscription_sink: jsonrpsee::PendingSubscriptionSink, + from: BlockId, ) -> SubscriptionResult { - // Subscription not implemented for mock service - Err("Subscriptions not supported in mock service".into()) + let sink = subscription_sink.accept().await?; + for block in self.blocks.iter().filter(|b| b.header.block_id >= from) { + let json = serde_json::value::to_raw_value(block).unwrap(); + sink.send(json).await?; + } + Ok(()) } async fn get_block_by_id(&self, block_id: BlockId) -> Result<Block, ErrorObjectOwned> { diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index 49565ad3..643da044 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -17,7 +17,7 @@ impl IndexerService { #[async_trait::async_trait] impl indexer_service_rpc::RpcServer for IndexerService { - async fn subscribe_to_blocks( + async fn subscribe_to_finalized_blocks( &self, _subscription_sink: jsonrpsee::PendingSubscriptionSink, _from: BlockId, diff --git a/integration_tests/src/lib.rs b/integration_tests/src/lib.rs index 21e1ca81..0fa39129 100644 --- a/integration_tests/src/lib.rs +++ b/integration_tests/src/lib.rs @@ -2,19 +2,18 @@ use std::{net::SocketAddr, path::PathBuf, sync::LazyLock}; -use actix_web::dev::ServerHandle; use anyhow::{Context, Result}; use base64::{Engine, engine::general_purpose::STANDARD as BASE64}; use common::{ sequencer_client::SequencerClient, transaction::{EncodedTransaction, NSSATransaction}, }; -use futures::FutureExt as _; use indexer_core::{IndexerCore, config::IndexerConfig}; use log::debug; use nssa::PrivacyPreservingTransaction; use nssa_core::Commitment; use sequencer_core::config::SequencerConfig; +use sequencer_runner::SequencerHandle; use tempfile::TempDir; use tokio::task::JoinHandle; use url::Url; @@ -38,9 +37,7 @@ static LOGGER: LazyLock<()> = LazyLock::new(env_logger::init); /// It's memory and logically safe to create multiple instances of this struct in parallel tests, /// as each instance uses its own temporary directories for sequencer and wallet data. pub struct TestContext { - sequencer_server_handle: ServerHandle, - sequencer_loop_handle: JoinHandle<Result<()>>, - sequencer_retry_pending_blocks_handle: JoinHandle<Result<()>>, + _sequencer_handle: SequencerHandle, indexer_loop_handle: Option<JoinHandle<Result<()>>>, sequencer_client: SequencerClient, wallet: WalletCore, @@ -95,15 +92,10 @@ impl TestContext { debug!("Test context setup"); - let ( - sequencer_server_handle, - sequencer_addr, - sequencer_loop_handle, - sequencer_retry_pending_blocks_handle, - temp_sequencer_dir, - ) = Self::setup_sequencer(sequencer_config) - .await - .context("Failed to setup sequencer")?; + let (_sequencer_handle, sequencer_addr, temp_sequencer_dir) = + Self::setup_sequencer(sequencer_config) + .await + .context("Failed to setup sequencer")?; // Convert 0.0.0.0 to 127.0.0.1 for client connections // When binding to port 0, the server binds to 0.0.0.0:<random_port> @@ -123,10 +115,7 @@ impl TestContext { ) .context("Failed to create sequencer client")?; - if let Some(mut indexer_config) = indexer_config { - indexer_config.sequencer_client_config.addr = - Url::parse(&sequencer_addr).context("Failed to parse sequencer addr")?; - + if let Some(indexer_config) = indexer_config { let indexer_core = IndexerCore::new(indexer_config)?; let indexer_loop_handle = Some(tokio::spawn(async move { @@ -134,9 +123,7 @@ impl TestContext { })); Ok(Self { - sequencer_server_handle, - sequencer_loop_handle, - sequencer_retry_pending_blocks_handle, + _sequencer_handle, indexer_loop_handle, sequencer_client, wallet, @@ -145,9 +132,7 @@ impl TestContext { }) } else { Ok(Self { - sequencer_server_handle, - sequencer_loop_handle, - sequencer_retry_pending_blocks_handle, + _sequencer_handle, indexer_loop_handle: None, sequencer_client, wallet, @@ -159,13 +144,7 @@ impl TestContext { async fn setup_sequencer( mut config: SequencerConfig, - ) -> Result<( - ServerHandle, - SocketAddr, - JoinHandle<Result<()>>, - JoinHandle<Result<()>>, - TempDir, - )> { + ) -> Result<(SequencerHandle, SocketAddr, TempDir)> { let temp_sequencer_dir = tempfile::tempdir().context("Failed to create temp dir for sequencer home")?; @@ -177,20 +156,10 @@ impl TestContext { // Setting port to 0 lets the OS choose a free port for us config.port = 0; - let ( - sequencer_server_handle, - sequencer_addr, - sequencer_loop_handle, - sequencer_retry_pending_blocks_handle, - ) = sequencer_runner::startup_sequencer(config).await?; + let (sequencer_handle, sequencer_addr) = + sequencer_runner::startup_sequencer(config).await?; - Ok(( - sequencer_server_handle, - sequencer_addr, - sequencer_loop_handle, - sequencer_retry_pending_blocks_handle, - temp_sequencer_dir, - )) + Ok((sequencer_handle, sequencer_addr, temp_sequencer_dir)) } async fn setup_wallet(sequencer_addr: String) -> Result<(WalletCore, TempDir)> { @@ -247,9 +216,7 @@ impl Drop for TestContext { debug!("Test context cleanup"); let Self { - sequencer_server_handle, - sequencer_loop_handle, - sequencer_retry_pending_blocks_handle, + _sequencer_handle, indexer_loop_handle, sequencer_client: _, wallet: _, @@ -257,14 +224,9 @@ impl Drop for TestContext { _temp_wallet_dir, } = self; - sequencer_loop_handle.abort(); - sequencer_retry_pending_blocks_handle.abort(); if let Some(indexer_loop_handle) = indexer_loop_handle { indexer_loop_handle.abort(); } - - // Can't wait here as Drop can't be async, but anyway stop signal should be sent - sequencer_server_handle.stop(true).now_or_never(); } } diff --git a/integration_tests/tests/tps.rs b/integration_tests/tests/tps.rs index 5fc09c4c..cb571726 100644 --- a/integration_tests/tests/tps.rs +++ b/integration_tests/tests/tps.rs @@ -191,6 +191,7 @@ impl TpsTestManager { signing_key: [37; 32], bedrock_config: None, retry_pending_blocks_timeout_millis: 1000 * 60 * 4, + indexer_rpc_url: "http://localhost:8779".parse().unwrap(), } } } diff --git a/sequencer_core/Cargo.toml b/sequencer_core/Cargo.toml index 528fa16f..dfe2c27e 100644 --- a/sequencer_core/Cargo.toml +++ b/sequencer_core/Cargo.toml @@ -9,6 +9,7 @@ nssa_core.workspace = true common.workspace = true storage.workspace = true mempool.workspace = true +bedrock_client.workspace = true base58.workspace = true anyhow.workspace = true @@ -18,12 +19,13 @@ tempfile.workspace = true chrono.workspace = true log.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros"] } -bedrock_client.workspace = true logos-blockchain-key-management-system-service.workspace = true logos-blockchain-core.workspace = true rand.workspace = true reqwest.workspace = true borsh.workspace = true +url.workspace = true +jsonrpsee = { workspace = true, features = ["http-client"] } [features] default = [] diff --git a/sequencer_core/src/config.rs b/sequencer_core/src/config.rs index b0dda3e6..26f5f97e 100644 --- a/sequencer_core/src/config.rs +++ b/sequencer_core/src/config.rs @@ -8,6 +8,7 @@ use anyhow::Result; use common::config::BasicAuth; use logos_blockchain_core::mantle::ops::channel::ChannelId; use serde::{Deserialize, Serialize}; +use url::Url; #[derive(Debug, Serialize, Deserialize, Clone)] /// Helperstruct for account serialization @@ -53,6 +54,8 @@ pub struct SequencerConfig { pub signing_key: [u8; 32], /// Bedrock configuration options pub bedrock_config: Option<BedrockConfig>, + /// Indexer RPC URL + pub indexer_rpc_url: Url, } #[derive(Clone, Serialize, Deserialize)] @@ -60,7 +63,7 @@ pub struct BedrockConfig { /// Bedrock channel ID pub channel_id: ChannelId, /// Bedrock Url - pub node_url: String, + pub node_url: Url, /// Bedrock auth pub auth: Option<BasicAuth>, } diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index efddcd7e..f1b9dc80 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -19,6 +19,8 @@ mod block_settlement_client; pub mod block_store; pub mod config; +type IndexerClient = jsonrpsee::http_client::HttpClient; + pub struct SequencerCore { state: nssa::V02State, store: SequencerStore, @@ -26,6 +28,7 @@ pub struct SequencerCore { sequencer_config: SequencerConfig, chain_height: u64, block_settlement_client: Option<BlockSettlementClient>, + indexer_client: IndexerClient, last_bedrock_msg_id: MantleMsgId, } @@ -113,6 +116,10 @@ impl SequencerCore { .expect("Block settlement client should be constructible") }); + let indexer_client = jsonrpsee::http_client::HttpClientBuilder::default() + .build(config.indexer_rpc_url.clone()) + .expect("Failed to create Indexer client"); + let sequencer_core = Self { state, store, @@ -120,6 +127,7 @@ impl SequencerCore { chain_height: config.genesis_id, sequencer_config: config, block_settlement_client, + indexer_client, last_bedrock_msg_id: channel_genesis_msg_id, }; @@ -252,6 +260,14 @@ impl SequencerCore { } } + pub fn first_pending_block_id(&self) -> Result<Option<u64>> { + Ok(self + .get_pending_blocks()? + .iter() + .map(|block| block.header.block_id) + .min()) + } + /// Returns the list of stored pending blocks. pub fn get_pending_blocks(&self) -> Result<Vec<Block>> { Ok(self @@ -266,6 +282,10 @@ impl SequencerCore { pub fn block_settlement_client(&self) -> Option<BlockSettlementClient> { self.block_settlement_client.clone() } + + pub fn indexer_client(&self) -> &IndexerClient { + &self.indexer_client + } } // TODO: Introduce type-safe wrapper around checked transaction, e.g. AuthenticatedTransaction @@ -329,6 +349,7 @@ mod tests { signing_key: *sequencer_sign_key_for_testing().value(), bedrock_config: None, retry_pending_blocks_timeout_millis: 1000 * 60 * 4, + indexer_rpc_url: "http://localhost:8779".parse().unwrap(), } } diff --git a/sequencer_rpc/src/process.rs b/sequencer_rpc/src/process.rs index 6d149448..e2d6052a 100644 --- a/sequencer_rpc/src/process.rs +++ b/sequencer_rpc/src/process.rs @@ -18,8 +18,8 @@ use common::{ GetInitialTestnetAccountsRequest, GetLastBlockRequest, GetLastBlockResponse, GetProgramIdsRequest, GetProgramIdsResponse, GetProofForCommitmentRequest, GetProofForCommitmentResponse, GetTransactionByHashRequest, - GetTransactionByHashResponse, HelloRequest, HelloResponse, PostIndexerMessageRequest, - PostIndexerMessageResponse, SendTxRequest, SendTxResponse, + GetTransactionByHashResponse, HelloRequest, HelloResponse, SendTxRequest, + SendTxResponse, }, }, transaction::{EncodedTransaction, NSSATransaction}, @@ -341,7 +341,7 @@ mod tests { use base58::ToBase58; use base64::{Engine, engine::general_purpose}; use common::{ - sequencer_client::BasicAuth, test_utils::sequencer_sign_key_for_testing, + config::BasicAuth, test_utils::sequencer_sign_key_for_testing, transaction::EncodedTransaction, }; use sequencer_core::{ @@ -394,12 +394,13 @@ mod tests { retry_pending_blocks_timeout_millis: 1000 * 60 * 4, bedrock_config: Some(BedrockConfig { channel_id: [42; 32].into(), - node_url: "http://localhost:8080".to_string(), + node_url: "http://localhost:8080".parse().unwrap(), auth: Some(BasicAuth { username: "user".to_string(), password: None, }), }), + indexer_rpc_url: "http://localhost:8779".parse().unwrap(), } } diff --git a/sequencer_runner/Cargo.toml b/sequencer_runner/Cargo.toml index 55f56dec..f840317c 100644 --- a/sequencer_runner/Cargo.toml +++ b/sequencer_runner/Cargo.toml @@ -7,6 +7,8 @@ edition = "2024" common.workspace = true sequencer_core = { workspace = true, features = ["testnet"] } sequencer_rpc.workspace = true +indexer_service_protocol.workspace = true +indexer_service_rpc = { workspace = true, features = ["client"] } clap = { workspace = true, features = ["derive", "env"] } anyhow.workspace = true @@ -15,3 +17,4 @@ log.workspace = true actix.workspace = true actix-web.workspace = true tokio.workspace = true +futures.workspace = true diff --git a/sequencer_runner/src/lib.rs b/sequencer_runner/src/lib.rs index 8dbea525..ef381da1 100644 --- a/sequencer_runner/src/lib.rs +++ b/sequencer_runner/src/lib.rs @@ -1,10 +1,11 @@ -use std::{net::SocketAddr, path::PathBuf, sync::Arc}; +use std::{net::SocketAddr, path::PathBuf, sync::Arc, time::Duration}; use actix_web::dev::ServerHandle; -use anyhow::Result; +use anyhow::{Context as _, Result}; use clap::Parser; use common::rpc_primitives::RpcConfig; -use log::{info, warn}; +use futures::FutureExt as _; +use log::{debug, error, info, warn}; use sequencer_core::{SequencerCore, config::SequencerConfig}; use sequencer_rpc::new_http_server; use tokio::{sync::Mutex, task::JoinHandle}; @@ -18,16 +19,76 @@ struct Args { home_dir: PathBuf, } +/// An enum that can never be instantiated, used to replace unstable `!` type. +#[derive(Debug)] +pub enum Never {} + +/// Handle to manage the sequencer and its tasks. +/// +/// Implements `Drop` to ensure all tasks are aborted and the HTTP server is stopped when dropped. +pub struct SequencerHandle { + http_server_handle: ServerHandle, + main_loop_handle: JoinHandle<Result<Never>>, + retry_pending_blocks_loop_handle: JoinHandle<Result<Never>>, + listen_for_bedrock_blocks_loop_handle: JoinHandle<Result<Never>>, +} + +impl SequencerHandle { + /// Runs the sequencer indefinitely, monitoring its tasks. + /// + /// If no error occurs, this function will never return. + async fn run_forever(&mut self) -> Result<Never> { + let Self { + http_server_handle: _, + main_loop_handle, + retry_pending_blocks_loop_handle, + listen_for_bedrock_blocks_loop_handle, + } = self; + + tokio::select! { + res = main_loop_handle => { + res + .context("Main loop task panicked")? + .context("Main loop exited unexpectedly") + } + res = retry_pending_blocks_loop_handle => { + res + .context("Retry pending blocks loop task panicked")? + .context("Retry pending blocks loop exited unexpectedly") + } + res = listen_for_bedrock_blocks_loop_handle => { + res + .context("Listen for bedrock blocks loop task panicked")? + .context("Listen for bedrock blocks loop exited unexpectedly") + } + } + } +} + +impl Drop for SequencerHandle { + fn drop(&mut self) { + let Self { + http_server_handle, + main_loop_handle, + retry_pending_blocks_loop_handle, + listen_for_bedrock_blocks_loop_handle, + } = self; + + main_loop_handle.abort(); + retry_pending_blocks_loop_handle.abort(); + listen_for_bedrock_blocks_loop_handle.abort(); + + // Can't wait here as Drop can't be async, but anyway stop signal should be sent + http_server_handle.stop(true).now_or_never(); + } +} + pub async fn startup_sequencer( app_config: SequencerConfig, -) -> Result<( - ServerHandle, - SocketAddr, - JoinHandle<Result<()>>, - JoinHandle<Result<()>>, -)> { - let block_timeout = app_config.block_create_timeout_millis; - let retry_pending_blocks_timeout = app_config.retry_pending_blocks_timeout_millis; +) -> Result<(SequencerHandle, SocketAddr)> { + let block_timeout = Duration::from_millis(app_config.block_create_timeout_millis); + let retry_pending_blocks_timeout = + Duration::from_millis(app_config.retry_pending_blocks_timeout_millis); let port = app_config.port; let (sequencer_core, mempool_handle) = SequencerCore::start_from_config(app_config); @@ -45,69 +106,128 @@ pub async fn startup_sequencer( let http_server_handle = http_server.handle(); tokio::spawn(http_server); - info!("Starting pending block retry loop"); - let seq_core_wrapped_for_block_retry = seq_core_wrapped.clone(); - let retry_pending_blocks_handle = tokio::spawn(async move { - loop { - tokio::time::sleep(std::time::Duration::from_millis( - retry_pending_blocks_timeout, - )) - .await; - - let (pending_blocks, block_settlement_client) = { - let sequencer_core = seq_core_wrapped_for_block_retry.lock().await; - let client = sequencer_core.block_settlement_client(); - let pending_blocks = sequencer_core - .get_pending_blocks() - .expect("Sequencer should be able to retrieve pending blocks"); - (pending_blocks, client) - }; - - let Some(client) = block_settlement_client else { - continue; - }; - - info!("Resubmitting {} pending blocks", pending_blocks.len()); - for block in &pending_blocks { - if let Err(e) = client.submit_block_to_bedrock(block).await { - warn!( - "Failed to resubmit block with id {} with error {}", - block.header.block_id, e - ); - } - } - } - }); - info!("Starting main sequencer loop"); - let main_loop_handle = tokio::spawn(async move { - loop { - tokio::time::sleep(std::time::Duration::from_millis(block_timeout)).await; + let main_loop_handle = tokio::spawn(main_loop(Arc::clone(&seq_core_wrapped), block_timeout)); - info!("Collecting transactions from mempool, block creation"); + info!("Starting pending block retry loop"); + let retry_pending_blocks_loop_handle = tokio::spawn(retry_pending_blocks_loop( + Arc::clone(&seq_core_wrapped), + retry_pending_blocks_timeout, + )); - let id = { - let mut state = seq_core_wrapped.lock().await; - - state - .produce_new_block_and_post_to_settlement_layer() - .await? - }; - - info!("Block with id {id} created"); - - info!("Waiting for new transactions"); - } - }); + info!("Starting bedrock block listening loop"); + let listen_for_bedrock_blocks_loop_handle = + tokio::spawn(listen_for_bedrock_blocks_loop(seq_core_wrapped)); Ok(( - http_server_handle, + SequencerHandle { + http_server_handle, + main_loop_handle, + retry_pending_blocks_loop_handle, + listen_for_bedrock_blocks_loop_handle, + }, addr, - main_loop_handle, - retry_pending_blocks_handle, )) } +async fn main_loop(seq_core: Arc<Mutex<SequencerCore>>, block_timeout: Duration) -> Result<Never> { + loop { + tokio::time::sleep(block_timeout).await; + + info!("Collecting transactions from mempool, block creation"); + + let id = { + let mut state = seq_core.lock().await; + + state + .produce_new_block_and_post_to_settlement_layer() + .await? + }; + + info!("Block with id {id} created"); + + info!("Waiting for new transactions"); + } +} + +async fn retry_pending_blocks_loop( + seq_core: Arc<Mutex<SequencerCore>>, + retry_pending_blocks_timeout: Duration, +) -> Result<Never> { + loop { + tokio::time::sleep(retry_pending_blocks_timeout).await; + + let (pending_blocks, block_settlement_client) = { + let sequencer_core = seq_core.lock().await; + let client = sequencer_core.block_settlement_client(); + let pending_blocks = sequencer_core + .get_pending_blocks() + .expect("Sequencer should be able to retrieve pending blocks"); + (pending_blocks, client) + }; + + let Some(client) = block_settlement_client else { + continue; + }; + + info!("Resubmitting {} pending blocks", pending_blocks.len()); + for block in &pending_blocks { + if let Err(e) = client.submit_block_to_bedrock(block).await { + warn!( + "Failed to resubmit block with id {} with error {}", + block.header.block_id, e + ); + } + } + } +} + +async fn listen_for_bedrock_blocks_loop(seq_core: Arc<Mutex<SequencerCore>>) -> Result<Never> { + use indexer_service_rpc::RpcClient as _; + + let indexer_client = seq_core.lock().await.indexer_client().clone(); + + loop { + let first_pending_block_id = { + let sequencer_core = seq_core.lock().await; + + sequencer_core + .first_pending_block_id() + .context("Failed to get first pending block ID")? + .unwrap_or(sequencer_core.chain_height()) + }; + + info!("Subscribing to blocks from ID {first_pending_block_id}"); + let mut subscription = indexer_client + .subscribe_to_finalized_blocks(first_pending_block_id) + .await + .with_context(|| { + format!("Failed to subscribe to blocks from {first_pending_block_id}") + })?; + + while let Some(block) = subscription.next().await { + let block = block.context("Failed to get next block from subscription")?; + let block_id = block.header.block_id; + + info!("Received new L2 block with ID {block_id}"); + debug!("Block data: {block:#?}"); + + seq_core + .lock() + .await + .clean_finalized_blocks_from_db(block_id) + .with_context(|| { + format!("Failed to clean finalized blocks from DB for block ID {block_id}") + })?; + } + + warn!( + "Block subscription closed unexpectedly, reason: {:?}", + subscription.close_reason() + ); + } +} + pub async fn main_runner() -> Result<()> { env_logger::init(); @@ -125,24 +245,12 @@ pub async fn main_runner() -> Result<()> { } // ToDo: Add restart on failures - let (_, _, main_loop_handle, retry_loop_handle) = startup_sequencer(app_config).await?; + let (mut sequencer_handle, _addr) = startup_sequencer(app_config).await?; info!("Sequencer running. Monitoring concurrent tasks..."); - tokio::select! { - res = main_loop_handle => { - match res { - Ok(inner_res) => warn!("Main loop exited unexpectedly: {:?}", inner_res), - Err(e) => warn!("Main loop task panicked: {:?}", e), - } - } - res = retry_loop_handle => { - match res { - Ok(inner_res) => warn!("Retry loop exited unexpectedly: {:?}", inner_res), - Err(e) => warn!("Retry loop task panicked: {:?}", e), - } - } - } + let Err(err) = sequencer_handle.run_forever().await; + error!("Sequencer failed: {err:?}"); info!("Shutting down sequencer..."); diff --git a/wallet/src/config.rs b/wallet/src/config.rs index 2784267b..3a5d6e0c 100644 --- a/wallet/src/config.rs +++ b/wallet/src/config.rs @@ -4,7 +4,7 @@ use std::{ }; use anyhow::{Context as _, Result}; -use common::common::BasicAuth; +use common::config::BasicAuth; use key_protocol::key_management::{ KeyChain, key_tree::{ From 2d0525ab31552516c020c84f10396b03d85d69af Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Fri, 30 Jan 2026 19:33:51 +0300 Subject: [PATCH 17/25] Adjust Indexer RPC for Sequencer and Explorer needs only --- indexer/service/rpc/src/lib.rs | 3 --- indexer/service/src/mock_service.rs | 7 ------- indexer/service/src/service.rs | 4 ---- 3 files changed, 14 deletions(-) diff --git a/indexer/service/rpc/src/lib.rs b/indexer/service/rpc/src/lib.rs index f0fd519f..820fd9a8 100644 --- a/indexer/service/rpc/src/lib.rs +++ b/indexer/service/rpc/src/lib.rs @@ -32,9 +32,6 @@ pub trait Rpc { #[method(name = "getBlockByHash")] async fn get_block_by_hash(&self, block_hash: Hash) -> Result<Block, ErrorObjectOwned>; - #[method(name = "getLastBlockId")] - async fn get_last_block_id(&self) -> Result<BlockId, ErrorObjectOwned>; - #[method(name = "getAccount")] async fn get_account(&self, account_id: AccountId) -> Result<Account, ErrorObjectOwned>; diff --git a/indexer/service/src/mock_service.rs b/indexer/service/src/mock_service.rs index e6edd172..2ce801ce 100644 --- a/indexer/service/src/mock_service.rs +++ b/indexer/service/src/mock_service.rs @@ -198,13 +198,6 @@ impl indexer_service_rpc::RpcServer for MockIndexerService { .ok_or_else(|| ErrorObjectOwned::owned(-32001, "Block with hash not found", None::<()>)) } - async fn get_last_block_id(&self) -> Result<BlockId, ErrorObjectOwned> { - self.blocks - .last() - .map(|b| b.header.block_id) - .ok_or_else(|| ErrorObjectOwned::owned(-32001, "No blocks available", None::<()>)) - } - async fn get_account(&self, account_id: AccountId) -> Result<Account, ErrorObjectOwned> { self.accounts .get(&account_id) diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index 643da044..224ad38f 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -33,10 +33,6 @@ impl indexer_service_rpc::RpcServer for IndexerService { todo!() } - async fn get_last_block_id(&self) -> Result<BlockId, ErrorObjectOwned> { - todo!() - } - async fn get_account(&self, _account_id: AccountId) -> Result<Account, ErrorObjectOwned> { todo!() } From 71787a70f722e39d6a6922533ebbd7d52c094ecc Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Fri, 30 Jan 2026 21:37:27 +0300 Subject: [PATCH 18/25] Implement block subscription --- Cargo.lock | 3 + Cargo.toml | 1 + indexer/core/Cargo.toml | 1 + indexer/core/src/lib.rs | 80 ++++++++++++------------ indexer/service/Cargo.toml | 4 +- indexer/service/rpc/src/lib.rs | 2 +- indexer/service/src/lib.rs | 1 - indexer/service/src/mock_service.rs | 7 ++- indexer/service/src/service.rs | 95 ++++++++++++++++++++++++++--- integration_tests/src/lib.rs | 25 ++++---- sequencer_core/src/lib.rs | 8 --- sequencer_runner/src/lib.rs | 17 +----- wallet/Cargo.toml | 2 +- 13 files changed, 158 insertions(+), 88 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 844b7645..604ad55f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3207,6 +3207,7 @@ name = "indexer_core" version = "0.1.0" dependencies = [ "anyhow", + "async-stream", "bedrock_client", "borsh", "common", @@ -3227,11 +3228,13 @@ dependencies = [ "async-trait", "clap 4.5.53", "env_logger", + "futures", "indexer_core", "indexer_service_protocol", "indexer_service_rpc", "jsonrpsee", "log", + "serde", "serde_json", "tokio", "tokio-util", diff --git a/Cargo.toml b/Cargo.toml index 2e5602f6..cc078836 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,6 +93,7 @@ itertools = "0.14.0" url = { version = "2.5.4", features = ["serde"] } tokio-retry = "0.3.0" schemars = "1.2.0" +async-stream = "0.3.6" logos-blockchain-common-http-client = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } logos-blockchain-key-management-system-service = { git = "https://github.com/logos-blockchain/logos-blockchain.git" } diff --git a/indexer/core/Cargo.toml b/indexer/core/Cargo.toml index 922f566c..8e503410 100644 --- a/indexer/core/Cargo.toml +++ b/indexer/core/Cargo.toml @@ -16,3 +16,4 @@ futures.workspace = true url.workspace = true logos-blockchain-core.workspace = true serde_json.workspace = true +async-stream.workspace = true diff --git a/indexer/core/src/lib.rs b/indexer/core/src/lib.rs index 3508a257..c794b713 100644 --- a/indexer/core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use anyhow::Result; use bedrock_client::BedrockClient; -use common::block::HashableBlockData; +use common::block::{Block, }; use futures::StreamExt; use log::info; use logos_blockchain_core::mantle::{ @@ -16,6 +16,7 @@ use crate::{config::IndexerConfig, state::IndexerState}; pub mod config; pub mod state; +#[derive(Clone)] pub struct IndexerCore { bedrock_client: BedrockClient, config: IndexerConfig, @@ -37,55 +38,52 @@ impl IndexerCore { }) } - pub async fn subscribe_parse_block_stream(&self) -> Result<()> { - loop { - let mut stream_pinned = Box::pin(self.bedrock_client.get_lib_stream().await?); + pub async fn subscribe_parse_block_stream( + &self, + ) -> impl futures::Stream<Item = Result<Block>> { + async_stream::stream! { + loop { + let mut stream_pinned = Box::pin(self.bedrock_client.get_lib_stream().await?); - info!("Block stream joined"); + info!("Block stream joined"); - while let Some(block_info) = stream_pinned.next().await { - let header_id = block_info.header_id; + while let Some(block_info) = stream_pinned.next().await { + let header_id = block_info.header_id; - info!("Observed L1 block at height {}", block_info.height); + info!("Observed L1 block at height {}", block_info.height); - if let Some(l1_block) = self - .bedrock_client - .get_block_by_id(header_id, &self.config.backoff) - .await? - { - info!("Extracted L1 block at height {}", block_info.height); + if let Some(l1_block) = self + .bedrock_client + .get_block_by_id(header_id, &self.config.backoff) + .await? + { + info!("Extracted L1 block at height {}", block_info.height); - let l2_blocks_parsed = parse_blocks( - l1_block.into_transactions().into_iter(), - &self.config.channel_id, - ); + let l2_blocks_parsed = parse_blocks( + l1_block.into_transactions().into_iter(), + &self.config.channel_id, + ); - for l2_block in l2_blocks_parsed { - // State modification, will be updated in future - { - let mut guard = self.state.latest_seen_block.write().await; - if l2_block.block_id > *guard { - *guard = l2_block.block_id; + for l2_block in l2_blocks_parsed { + // State modification, will be updated in future + { + let mut guard = self.state.latest_seen_block.write().await; + if l2_block.header.block_id > *guard { + *guard = l2_block.header.block_id; + } } + + yield Ok(l2_block); } - - // // Sending data into sequencer, may need to be expanded. - // let message = Message::L2BlockFinalized { - // l2_block_height: l2_block.block_id, - // }; - - // let status = self.send_message_to_sequencer(message.clone()).await?; - - // info!("Sent message {message:#?} to sequencer; status {status:#?}"); } } - } - // Refetch stream after delay - tokio::time::sleep(std::time::Duration::from_millis( - self.config.resubscribe_interval_millis, - )) - .await; + // Refetch stream after delay + tokio::time::sleep(std::time::Duration::from_millis( + self.config.resubscribe_interval_millis, + )) + .await; + } } } } @@ -93,7 +91,7 @@ impl IndexerCore { fn parse_blocks( block_txs: impl Iterator<Item = SignedMantleTx>, decoded_channel_id: &ChannelId, -) -> impl Iterator<Item = HashableBlockData> { +) -> impl Iterator<Item = Block> { block_txs.flat_map(|tx| { tx.mantle_tx.ops.into_iter().filter_map(|op| match op { Op::ChannelInscribe(InscriptionOp { @@ -101,7 +99,7 @@ fn parse_blocks( inscription, .. }) if channel_id == *decoded_channel_id => { - borsh::from_slice::<HashableBlockData>(&inscription).ok() + borsh::from_slice::<Block>(&inscription).ok() } _ => None, }) diff --git a/indexer/service/Cargo.toml b/indexer/service/Cargo.toml index 82639982..f41a9afd 100644 --- a/indexer/service/Cargo.toml +++ b/indexer/service/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2024" [dependencies] -indexer_service_protocol.workspace = true +indexer_service_protocol = { workspace = true, features = ["convert"] } indexer_service_rpc = { workspace = true, features = ["server"] } indexer_core.workspace = true @@ -15,7 +15,9 @@ tokio-util.workspace = true env_logger.workspace = true log.workspace = true jsonrpsee.workspace = true +serde.workspace = true serde_json.workspace = true +futures.workspace = true async-trait = "0.1.89" [features] diff --git a/indexer/service/rpc/src/lib.rs b/indexer/service/rpc/src/lib.rs index 820fd9a8..18755df5 100644 --- a/indexer/service/rpc/src/lib.rs +++ b/indexer/service/rpc/src/lib.rs @@ -24,7 +24,7 @@ pub trait Rpc { } #[subscription(name = "subscribeToFinalizedBlocks", item = Block)] - async fn subscribe_to_finalized_blocks(&self, from: BlockId) -> SubscriptionResult; + async fn subscribe_to_finalized_blocks(&self) -> SubscriptionResult; #[method(name = "getBlockById")] async fn get_block_by_id(&self, block_id: BlockId) -> Result<Block, ErrorObjectOwned>; diff --git a/indexer/service/src/lib.rs b/indexer/service/src/lib.rs index ccabe1ae..0c18410e 100644 --- a/indexer/service/src/lib.rs +++ b/indexer/service/src/lib.rs @@ -1,4 +1,3 @@ -#[cfg(not(feature = "mock-responses"))] pub mod service; #[cfg(feature = "mock-responses")] diff --git a/indexer/service/src/mock_service.rs b/indexer/service/src/mock_service.rs index 2ce801ce..e7afda18 100644 --- a/indexer/service/src/mock_service.rs +++ b/indexer/service/src/mock_service.rs @@ -166,10 +166,13 @@ impl indexer_service_rpc::RpcServer for MockIndexerService { async fn subscribe_to_finalized_blocks( &self, subscription_sink: jsonrpsee::PendingSubscriptionSink, - from: BlockId, ) -> SubscriptionResult { let sink = subscription_sink.accept().await?; - for block in self.blocks.iter().filter(|b| b.header.block_id >= from) { + for block in self + .blocks + .iter() + .filter(|b| b.bedrock_status == BedrockStatus::Finalized) + { let json = serde_json::value::to_raw_value(block).unwrap(); sink.send(json).await?; } diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index 224ad38f..c7cdccd4 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -1,16 +1,36 @@ -use anyhow::Result; +use std::{pin::pin, sync::Arc}; + +use anyhow::{Context as _, Result, anyhow}; +use futures::StreamExt as _; use indexer_core::{IndexerCore, config::IndexerConfig}; use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; -use jsonrpsee::{core::SubscriptionResult, types::ErrorObjectOwned}; +use jsonrpsee::{SubscriptionSink, core::{Serialize, SubscriptionResult}, types::ErrorObjectOwned}; +use tokio::sync::Mutex; pub struct IndexerService { - indexer: IndexerCore, + service_impl: Arc<Mutex<IndexerServiceImpl>>, + respond_subscribers_loop_handle: tokio::task::JoinHandle<Result<()>>, +} + +impl Drop for IndexerService { + fn drop(&mut self) { + self.respond_subscribers_loop_handle.abort(); + } } impl IndexerService { pub fn new(config: IndexerConfig) -> Result<Self> { + let service_impl = Arc::new(Mutex::new(IndexerServiceImpl::new( + IndexerCore::new(config)?, + ))); + + let respond_subscribers_loop_handle = tokio::spawn( + IndexerServiceImpl::respond_subscribers_loop(Arc::clone(&service_impl)), + ); + Ok(Self { - indexer: IndexerCore::new(config)?, + service_impl, + respond_subscribers_loop_handle, }) } } @@ -19,10 +39,11 @@ impl IndexerService { impl indexer_service_rpc::RpcServer for IndexerService { async fn subscribe_to_finalized_blocks( &self, - _subscription_sink: jsonrpsee::PendingSubscriptionSink, - _from: BlockId, + subscription_sink: jsonrpsee::PendingSubscriptionSink, ) -> SubscriptionResult { - todo!() + let sink = subscription_sink.accept().await?; + self.service_impl.lock().await.add_subscription(Subscription::new(sink)).await; + Ok(()) } async fn get_block_by_id(&self, _block_id: BlockId) -> Result<Block, ErrorObjectOwned> { @@ -54,3 +75,63 @@ impl indexer_service_rpc::RpcServer for IndexerService { todo!() } } + +struct IndexerServiceImpl { + indexer: IndexerCore, + subscriptions: Vec<Subscription<Block>>, +} + +impl IndexerServiceImpl { + fn new(indexer: IndexerCore) -> Self { + Self { + indexer, + subscriptions: Vec::new(), + } + } + + async fn add_subscription(&mut self, subscription: Subscription<Block>) { + self.subscriptions.push(subscription); + } + + async fn respond_subscribers_loop(service_impl: Arc<Mutex<IndexerServiceImpl>>) -> Result<()> { + let indexer_clone = service_impl.lock().await.indexer.clone(); + + let mut block_stream = pin!(indexer_clone.subscribe_parse_block_stream().await); + while let Some(block) = block_stream.next().await { + let block= block.context("Failed to get L2 block data")?; + let block = block.try_into().context("Failed to convert L2 Block into protocol Block")?; + + // Cloning subscriptions to avoid holding the lock while sending + let subscriptions = service_impl.lock().await.subscriptions.clone(); + for sink in subscriptions { + sink.send(&block).await?; + } + } + + Err(anyhow!("Block stream ended unexpectedly")) + } +} + +#[derive(Clone)] +struct Subscription<T> { + sink: SubscriptionSink, + _marker: std::marker::PhantomData<T>, +} + +impl<T> Subscription<T> { + fn new(sink: SubscriptionSink) -> Self { + Self { + sink, + _marker: std::marker::PhantomData, + } + } + + async fn send(&self, item: &T) -> Result<()> + where T: Serialize + { + let json = serde_json::value::to_raw_value(item) + .context("Failed to serialize item for subscription")?; + self.sink.send(json).await?; + Ok(()) + } +} diff --git a/integration_tests/src/lib.rs b/integration_tests/src/lib.rs index 0fa39129..baff7c9c 100644 --- a/integration_tests/src/lib.rs +++ b/integration_tests/src/lib.rs @@ -116,20 +116,21 @@ impl TestContext { .context("Failed to create sequencer client")?; if let Some(indexer_config) = indexer_config { - let indexer_core = IndexerCore::new(indexer_config)?; + // let indexer_core = IndexerCore::new(indexer_config)?; - let indexer_loop_handle = Some(tokio::spawn(async move { - indexer_core.subscribe_parse_block_stream().await - })); + // let indexer_loop_handle = Some(tokio::spawn(async move { + // indexer_core.subscribe_parse_block_stream().await + // })); - Ok(Self { - _sequencer_handle, - indexer_loop_handle, - sequencer_client, - wallet, - _temp_sequencer_dir: temp_sequencer_dir, - _temp_wallet_dir: temp_wallet_dir, - }) + // Ok(Self { + // _sequencer_handle, + // indexer_loop_handle, + // sequencer_client, + // wallet, + // _temp_sequencer_dir: temp_sequencer_dir, + // _temp_wallet_dir: temp_wallet_dir, + // }) + todo!() } else { Ok(Self { _sequencer_handle, diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index f1b9dc80..4af124e4 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -260,14 +260,6 @@ impl SequencerCore { } } - pub fn first_pending_block_id(&self) -> Result<Option<u64>> { - Ok(self - .get_pending_blocks()? - .iter() - .map(|block| block.header.block_id) - .min()) - } - /// Returns the list of stored pending blocks. pub fn get_pending_blocks(&self) -> Result<Vec<Block>> { Ok(self diff --git a/sequencer_runner/src/lib.rs b/sequencer_runner/src/lib.rs index ef381da1..d62d0ca3 100644 --- a/sequencer_runner/src/lib.rs +++ b/sequencer_runner/src/lib.rs @@ -188,22 +188,11 @@ async fn listen_for_bedrock_blocks_loop(seq_core: Arc<Mutex<SequencerCore>>) -> let indexer_client = seq_core.lock().await.indexer_client().clone(); loop { - let first_pending_block_id = { - let sequencer_core = seq_core.lock().await; - - sequencer_core - .first_pending_block_id() - .context("Failed to get first pending block ID")? - .unwrap_or(sequencer_core.chain_height()) - }; - - info!("Subscribing to blocks from ID {first_pending_block_id}"); + // TODO: Subscribe from the first pending block ID? let mut subscription = indexer_client - .subscribe_to_finalized_blocks(first_pending_block_id) + .subscribe_to_finalized_blocks() .await - .with_context(|| { - format!("Failed to subscribe to blocks from {first_pending_block_id}") - })?; + .context("Failed to subscribe to finalized blocks")?; while let Some(block) = subscription.next().await { let block = block.context("Failed to get next block from subscription")?; diff --git a/wallet/Cargo.toml b/wallet/Cargo.toml index 292cebac..45b0788c 100644 --- a/wallet/Cargo.toml +++ b/wallet/Cargo.toml @@ -26,7 +26,7 @@ itertools.workspace = true sha2.workspace = true futures.workspace = true risc0-zkvm.workspace = true -async-stream = "0.3.6" +async-stream.workspace = true indicatif = { version = "0.18.3", features = ["improved_unicode"] } optfield = "0.4.0" url.workspace = true From a87db600cfba42ee8dd219e7291f652fe587ab3b Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Sat, 31 Jan 2026 01:39:59 +0300 Subject: [PATCH 19/25] Fix some errors --- indexer/core/src/lib.rs | 6 ++--- indexer/service/src/main.rs | 2 +- sequencer_core/src/lib.rs | 52 ++++++++++++++++++++---------------- sequencer_rpc/src/process.rs | 2 +- sequencer_runner/src/lib.rs | 4 +-- 5 files changed, 35 insertions(+), 31 deletions(-) diff --git a/indexer/core/src/lib.rs b/indexer/core/src/lib.rs index c794b713..78012c6e 100644 --- a/indexer/core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use anyhow::Result; use bedrock_client::BedrockClient; -use common::block::{Block, }; +use common::block::Block; use futures::StreamExt; use log::info; use logos_blockchain_core::mantle::{ @@ -38,9 +38,7 @@ impl IndexerCore { }) } - pub async fn subscribe_parse_block_stream( - &self, - ) -> impl futures::Stream<Item = Result<Block>> { + pub async fn subscribe_parse_block_stream(&self) -> impl futures::Stream<Item = Result<Block>> { async_stream::stream! { loop { let mut stream_pinned = Box::pin(self.bedrock_client.get_lib_stream().await?); diff --git a/indexer/service/src/main.rs b/indexer/service/src/main.rs index aaeebacd..e0ece691 100644 --- a/indexer/service/src/main.rs +++ b/indexer/service/src/main.rs @@ -63,7 +63,7 @@ async fn run_server(config_path: PathBuf, port: u16) -> Result<jsonrpsee::server let service = indexer_service::service::IndexerService::new(config) .context("Failed to initialize indexer service")?; server.start(service.into_rpc()) - }?; + }; #[cfg(feature = "mock-responses")] let handle = server.start( indexer_service::mock_service::MockIndexerService::new_with_mock_blocks().into_rpc(), diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index 4af124e4..1e198c17 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -1,4 +1,4 @@ -use std::{fmt::Display, time::Instant}; +use std::{fmt::Display, sync::Arc, time::Instant}; use anyhow::Result; #[cfg(feature = "testnet")] @@ -19,7 +19,7 @@ mod block_settlement_client; pub mod block_store; pub mod config; -type IndexerClient = jsonrpsee::http_client::HttpClient; +type IndexerClient = Arc<jsonrpsee::ws_client::WsClient>; pub struct SequencerCore { state: nssa::V02State, @@ -52,7 +52,9 @@ impl SequencerCore { /// assumed to represent the correct latest state consistent with Bedrock-finalized data. /// If no database is found, the sequencer performs a fresh start from genesis, /// initializing its state with the accounts defined in the configuration file. - pub fn start_from_config(config: SequencerConfig) -> (Self, MemPoolHandle<EncodedTransaction>) { + pub async fn start_from_config( + config: SequencerConfig, + ) -> (Self, MemPoolHandle<EncodedTransaction>) { let hashable_data = HashableBlockData { block_id: config.genesis_id, transactions: vec![], @@ -116,9 +118,12 @@ impl SequencerCore { .expect("Block settlement client should be constructible") }); - let indexer_client = jsonrpsee::http_client::HttpClientBuilder::default() - .build(config.indexer_rpc_url.clone()) - .expect("Failed to create Indexer client"); + let indexer_client = Arc::new( + jsonrpsee::ws_client::WsClientBuilder::default() + .build(config.indexer_rpc_url.clone()) + .await + .expect("Failed to create Indexer client"), + ); let sequencer_core = Self { state, @@ -275,8 +280,8 @@ impl SequencerCore { self.block_settlement_client.clone() } - pub fn indexer_client(&self) -> &IndexerClient { - &self.indexer_client + pub fn indexer_client(&self) -> IndexerClient { + Arc::clone(&self.indexer_client) } } @@ -387,7 +392,7 @@ mod tests { async fn common_setup_with_config( config: SequencerConfig, ) -> (SequencerCore, MemPoolHandle<EncodedTransaction>) { - let (mut sequencer, mempool_handle) = SequencerCore::start_from_config(config); + let (mut sequencer, mempool_handle) = SequencerCore::start_from_config(config).await; let tx = common::test_utils::produce_dummy_empty_transaction(); mempool_handle.push(tx).await.unwrap(); @@ -399,10 +404,10 @@ mod tests { (sequencer, mempool_handle) } - #[test] - fn test_start_from_config() { + #[tokio::test] + async fn test_start_from_config() { let config = setup_sequencer_config(); - let (sequencer, _mempool_handle) = SequencerCore::start_from_config(config.clone()); + let (sequencer, _mempool_handle) = SequencerCore::start_from_config(config.clone()).await; assert_eq!(sequencer.chain_height, config.genesis_id); assert_eq!(sequencer.sequencer_config.max_num_tx_in_block, 10); @@ -436,8 +441,8 @@ mod tests { assert_eq!(20000, balance_acc_2); } - #[test] - fn test_start_different_intial_accounts_balances() { + #[tokio::test] + async fn test_start_different_intial_accounts_balances() { let acc1_account_id: Vec<u8> = vec![ 27, 132, 197, 86, 123, 18, 100, 64, 153, 93, 62, 213, 170, 186, 5, 101, 215, 30, 24, 52, 96, 72, 25, 255, 156, 23, 245, 233, 213, 221, 7, 143, @@ -461,7 +466,7 @@ mod tests { let initial_accounts = vec![initial_acc1, initial_acc2]; let config = setup_sequencer_config_variable_initial_accounts(initial_accounts); - let (sequencer, _mempool_handle) = SequencerCore::start_from_config(config.clone()); + let (sequencer, _mempool_handle) = SequencerCore::start_from_config(config.clone()).await; let acc1_account_id = config.initial_accounts[0] .account_id @@ -788,7 +793,8 @@ mod tests { // from `acc_1` to `acc_2`. The block created with that transaction will be kept stored in // the temporary directory for the block storage of this test. { - let (mut sequencer, mempool_handle) = SequencerCore::start_from_config(config.clone()); + let (mut sequencer, mempool_handle) = + SequencerCore::start_from_config(config.clone()).await; let signing_key = PrivateKey::try_new([1; 32]).unwrap(); let tx = common::test_utils::create_transaction_native_token_transfer( @@ -810,7 +816,7 @@ mod tests { // Instantiating a new sequencer from the same config. This should load the existing block // with the above transaction and update the state to reflect that. - let (sequencer, _mempool_handle) = SequencerCore::start_from_config(config.clone()); + let (sequencer, _mempool_handle) = SequencerCore::start_from_config(config.clone()).await; let balance_acc_1 = sequencer.state.get_account_by_id(&acc1_account_id).balance; let balance_acc_2 = sequencer.state.get_account_by_id(&acc2_account_id).balance; @@ -825,10 +831,10 @@ mod tests { ); } - #[test] - fn test_get_pending_blocks() { + #[tokio::test] + async fn test_get_pending_blocks() { let config = setup_sequencer_config(); - let (mut sequencer, _mempool_handle) = SequencerCore::start_from_config(config); + let (mut sequencer, _mempool_handle) = SequencerCore::start_from_config(config).await; sequencer .produce_new_block_with_mempool_transactions() .unwrap(); @@ -841,10 +847,10 @@ mod tests { assert_eq!(sequencer.get_pending_blocks().unwrap().len(), 4); } - #[test] - fn test_delete_blocks() { + #[tokio::test] + async fn test_delete_blocks() { let config = setup_sequencer_config(); - let (mut sequencer, _mempool_handle) = SequencerCore::start_from_config(config); + let (mut sequencer, _mempool_handle) = SequencerCore::start_from_config(config).await; sequencer .produce_new_block_with_mempool_transactions() .unwrap(); diff --git a/sequencer_rpc/src/process.rs b/sequencer_rpc/src/process.rs index e2d6052a..0702ac1f 100644 --- a/sequencer_rpc/src/process.rs +++ b/sequencer_rpc/src/process.rs @@ -407,7 +407,7 @@ mod tests { async fn components_for_tests() -> (JsonHandler, Vec<AccountInitialData>, EncodedTransaction) { let config = sequencer_config_for_tests(); - let (mut sequencer_core, mempool_handle) = SequencerCore::start_from_config(config); + let (mut sequencer_core, mempool_handle) = SequencerCore::start_from_config(config).await; let initial_accounts = sequencer_core.sequencer_config().initial_accounts.clone(); let signing_key = nssa::PrivateKey::try_new([1; 32]).unwrap(); diff --git a/sequencer_runner/src/lib.rs b/sequencer_runner/src/lib.rs index d62d0ca3..17c984f5 100644 --- a/sequencer_runner/src/lib.rs +++ b/sequencer_runner/src/lib.rs @@ -91,7 +91,7 @@ pub async fn startup_sequencer( Duration::from_millis(app_config.retry_pending_blocks_timeout_millis); let port = app_config.port; - let (sequencer_core, mempool_handle) = SequencerCore::start_from_config(app_config); + let (sequencer_core, mempool_handle) = SequencerCore::start_from_config(app_config).await; info!("Sequencer core set up"); @@ -185,7 +185,7 @@ async fn retry_pending_blocks_loop( async fn listen_for_bedrock_blocks_loop(seq_core: Arc<Mutex<SequencerCore>>) -> Result<Never> { use indexer_service_rpc::RpcClient as _; - let indexer_client = seq_core.lock().await.indexer_client().clone(); + let indexer_client = seq_core.lock().await.indexer_client(); loop { // TODO: Subscribe from the first pending block ID? From f4e9a6606dee3e1324f8d6f29b6cc95b94830298 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Sat, 31 Jan 2026 01:50:30 +0300 Subject: [PATCH 20/25] Add log about parsed L2 blocks --- indexer/core/src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/indexer/core/src/lib.rs b/indexer/core/src/lib.rs index 78012c6e..78c1e5ce 100644 --- a/indexer/core/src/lib.rs +++ b/indexer/core/src/lib.rs @@ -60,7 +60,9 @@ impl IndexerCore { let l2_blocks_parsed = parse_blocks( l1_block.into_transactions().into_iter(), &self.config.channel_id, - ); + ).collect::<Vec<_>>(); + + info!("Parsed {} L2 blocks", l2_blocks_parsed.len()); for l2_block in l2_blocks_parsed { // State modification, will be updated in future From 0ae327d9343330d2f41a075bd6b11c32f97526f5 Mon Sep 17 00:00:00 2001 From: Sergio Chouhy <sergio.chouhy@gmail.com> Date: Fri, 30 Jan 2026 20:20:30 -0300 Subject: [PATCH 21/25] fix config --- sequencer_core/src/lib.rs | 1 + sequencer_runner/configs/debug/sequencer_config.json | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index 1e198c17..5d8947b6 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -258,6 +258,7 @@ impl SequencerCore { .map(|block| block.header.block_id) .min() { + info!("FIRST PENDING BLOCK: {}", first_pending_block_id); (first_pending_block_id..=last_finalized_block_id) .try_for_each(|id| self.store.delete_block_at_id(id)) } else { diff --git a/sequencer_runner/configs/debug/sequencer_config.json b/sequencer_runner/configs/debug/sequencer_config.json index 80bfe0a4..9ab5d98d 100644 --- a/sequencer_runner/configs/debug/sequencer_config.json +++ b/sequencer_runner/configs/debug/sequencer_config.json @@ -162,5 +162,6 @@ "auth": { "username": "user" } - } + }, + "indexer_rpc_url": "ws://localhost:8779" } From d14aeb6cc18cc23700ddd2b82cdd44df579cfe64 Mon Sep 17 00:00:00 2001 From: Sergio Chouhy <sergio.chouhy@gmail.com> Date: Sat, 31 Jan 2026 18:12:59 -0300 Subject: [PATCH 22/25] fix genesis msg id --- sequencer_core/src/block_store.rs | 10 +++++----- sequencer_core/src/lib.rs | 29 ++++++++++++++++++++--------- storage/src/lib.rs | 10 +++++----- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/sequencer_core/src/block_store.rs b/sequencer_core/src/block_store.rs index a0b07445..4404a34d 100644 --- a/sequencer_core/src/block_store.rs +++ b/sequencer_core/src/block_store.rs @@ -20,7 +20,7 @@ impl SequencerStore { /// ATTENTION: Will overwrite genesis block. pub fn open_db_with_genesis( location: &Path, - genesis_block: Option<Block>, + genesis_block: Option<&Block>, signing_key: nssa::PrivateKey, ) -> Result<Self> { let tx_hash_to_block_map = if let Some(block) = &genesis_block { @@ -84,8 +84,8 @@ impl SequencerStore { self.dbio.get_all_blocks().map(|res| Ok(res?)) } - pub(crate) fn update(&mut self, block: Block, state: &V02State) -> Result<()> { - let new_transactions_map = block_to_transactions_map(&block); + pub(crate) fn update(&mut self, block: &Block, state: &V02State) -> Result<()> { + let new_transactions_map = block_to_transactions_map(block); self.dbio.atomic_update(block, state)?; self.tx_hash_to_block_map.extend(new_transactions_map); Ok(()) @@ -129,7 +129,7 @@ mod tests { let genesis_block = genesis_block_hashable_data.into_pending_block(&signing_key, [0; 32]); // Start an empty node store let mut node_store = - SequencerStore::open_db_with_genesis(path, Some(genesis_block), signing_key).unwrap(); + SequencerStore::open_db_with_genesis(path, Some(&genesis_block), signing_key).unwrap(); let tx = common::test_utils::produce_dummy_empty_transaction(); let block = common::test_utils::produce_dummy_block(1, None, vec![tx.clone()]); @@ -139,7 +139,7 @@ mod tests { assert_eq!(None, retrieved_tx); // Add the block with the transaction let dummy_state = V02State::new_with_genesis_accounts(&[], &[]); - node_store.update(block, &dummy_state).unwrap(); + node_store.update(&block, &dummy_state).unwrap(); // Try again let retrieved_tx = node_store.get_transaction_by_hash(tx.hash()); assert_eq!(Some(tx), retrieved_tx); diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index 5d8947b6..f54fb78f 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -70,7 +70,7 @@ impl SequencerCore { // as fixing this issue may require actions non-native to program scope let store = SequencerStore::open_db_with_genesis( &config.home.join("rocksdb"), - Some(genesis_block), + Some(&genesis_block), signing_key, ) .unwrap(); @@ -118,6 +118,15 @@ impl SequencerCore { .expect("Block settlement client should be constructible") }); + let last_bedrock_msg_id = if let Some(client) = block_settlement_client.as_ref() { + let (_, msg_id) = client + .create_inscribe_tx(&genesis_block) + .expect("Inscription transaction with genesis block should be constructible"); + msg_id.into() + } else { + channel_genesis_msg_id + }; + let indexer_client = Arc::new( jsonrpsee::ws_client::WsClientBuilder::default() .build(config.indexer_rpc_url.clone()) @@ -133,7 +142,7 @@ impl SequencerCore { sequencer_config: config, block_settlement_client, indexer_client, - last_bedrock_msg_id: channel_genesis_msg_id, + last_bedrock_msg_id, }; (sequencer_core, mempool_handle) @@ -158,11 +167,9 @@ impl SequencerCore { } pub async fn produce_new_block_and_post_to_settlement_layer(&mut self) -> Result<u64> { - let block_data = self.produce_new_block_with_mempool_transactions()?; + let block = self.produce_new_block_with_mempool_transactions()?; if let Some(client) = self.block_settlement_client.as_mut() { - let block = - block_data.into_pending_block(self.store.signing_key(), self.last_bedrock_msg_id); let msg_id = client.submit_block_to_bedrock(&block).await?; self.last_bedrock_msg_id = msg_id.into(); log::info!("Posted block data to Bedrock"); @@ -172,7 +179,7 @@ impl SequencerCore { } /// Produces new block from transactions in mempool - pub fn produce_new_block_with_mempool_transactions(&mut self) -> Result<HashableBlockData> { + pub fn produce_new_block_with_mempool_transactions(&mut self) -> Result<Block> { let now = Instant::now(); let new_block_height = self.chain_height + 1; @@ -209,7 +216,7 @@ impl SequencerCore { .clone() .into_pending_block(self.store.signing_key(), self.last_bedrock_msg_id); - self.store.update(block, &self.state)?; + self.store.update(&block, &self.state)?; self.chain_height = new_block_height; @@ -228,7 +235,7 @@ impl SequencerCore { hashable_data.transactions.len(), now.elapsed().as_secs() ); - Ok(hashable_data) + Ok(block) } pub fn state(&self) -> &nssa::V02State { @@ -692,7 +699,7 @@ mod tests { let block = sequencer.produce_new_block_with_mempool_transactions(); assert!(block.is_ok()); - assert_eq!(block.unwrap().block_id, genesis_height + 1); + assert_eq!(block.unwrap().header.block_id, genesis_height + 1); } #[tokio::test] @@ -730,6 +737,7 @@ mod tests { let current_height = sequencer .produce_new_block_with_mempool_transactions() .unwrap() + .header .block_id; let block = sequencer.store.get_block_at_id(current_height).unwrap(); @@ -767,6 +775,7 @@ mod tests { let current_height = sequencer .produce_new_block_with_mempool_transactions() .unwrap() + .header .block_id; let block = sequencer.store.get_block_at_id(current_height).unwrap(); assert_eq!(block.body.transactions, vec![tx.clone()]); @@ -776,6 +785,7 @@ mod tests { let current_height = sequencer .produce_new_block_with_mempool_transactions() .unwrap() + .header .block_id; let block = sequencer.store.get_block_at_id(current_height).unwrap(); assert!(block.body.transactions.is_empty()); @@ -810,6 +820,7 @@ mod tests { let current_height = sequencer .produce_new_block_with_mempool_transactions() .unwrap() + .header .block_id; let block = sequencer.store.get_block_at_id(current_height).unwrap(); assert_eq!(block.body.transactions, vec![tx.clone()]); diff --git a/storage/src/lib.rs b/storage/src/lib.rs index b96e0d61..e24bc7ab 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -47,7 +47,7 @@ pub struct RocksDBIO { } impl RocksDBIO { - pub fn open_or_create(path: &Path, start_block: Option<Block>) -> DbResult<Self> { + pub fn open_or_create(path: &Path, start_block: Option<&Block>) -> DbResult<Self> { let mut cf_opts = Options::default(); cf_opts.set_max_write_buffer_number(16); // ToDo: Add more column families for different data @@ -208,7 +208,7 @@ impl RocksDBIO { Ok(()) } - pub fn put_meta_first_block_in_db(&self, block: Block) -> DbResult<()> { + pub fn put_meta_first_block_in_db(&self, block: &Block) -> DbResult<()> { let cf_meta = self.meta_column(); self.db .put_cf( @@ -301,7 +301,7 @@ impl RocksDBIO { Ok(()) } - pub fn put_block(&self, block: Block, first: bool, batch: &mut WriteBatch) -> DbResult<()> { + pub fn put_block(&self, block: &Block, first: bool, batch: &mut WriteBatch) -> DbResult<()> { let cf_block = self.block_column(); if !first { @@ -317,7 +317,7 @@ impl RocksDBIO { borsh::to_vec(&block.header.block_id).map_err(|err| { DbError::borsh_cast_message(err, Some("Failed to serialize block id".to_string())) })?, - borsh::to_vec(&block).map_err(|err| { + borsh::to_vec(block).map_err(|err| { DbError::borsh_cast_message(err, Some("Failed to serialize block data".to_string())) })?, ); @@ -427,7 +427,7 @@ impl RocksDBIO { }) } - pub fn atomic_update(&self, block: Block, state: &V02State) -> DbResult<()> { + pub fn atomic_update(&self, block: &Block, state: &V02State) -> DbResult<()> { let block_id = block.header.block_id; let mut batch = WriteBatch::default(); self.put_block(block, false, &mut batch)?; From 6ca020d547a9ef65b07c636bfabf8ed2149d9b62 Mon Sep 17 00:00:00 2001 From: Sergio Chouhy <sergio.chouhy@gmail.com> Date: Sat, 31 Jan 2026 18:56:04 -0300 Subject: [PATCH 23/25] fix deadlock in subscriptions --- indexer/service/rpc/src/lib.rs | 2 +- indexer/service/src/service.rs | 83 ++++++++++++++++------------------ integration_tests/src/lib.rs | 2 +- sequencer_core/src/lib.rs | 5 +- sequencer_runner/src/lib.rs | 8 ++-- 5 files changed, 49 insertions(+), 51 deletions(-) diff --git a/indexer/service/rpc/src/lib.rs b/indexer/service/rpc/src/lib.rs index 18755df5..52c5f0fb 100644 --- a/indexer/service/rpc/src/lib.rs +++ b/indexer/service/rpc/src/lib.rs @@ -23,7 +23,7 @@ pub trait Rpc { Ok(serde_json::to_value(block_schema).expect("Schema serialization should not fail")) } - #[subscription(name = "subscribeToFinalizedBlocks", item = Block)] + #[subscription(name = "subscribeToFinalizedBlocks", item = BlockId)] async fn subscribe_to_finalized_blocks(&self) -> SubscriptionResult; #[method(name = "getBlockById")] diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index c7cdccd4..d3faa5d5 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -4,14 +4,18 @@ use anyhow::{Context as _, Result, anyhow}; use futures::StreamExt as _; use indexer_core::{IndexerCore, config::IndexerConfig}; use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; -use jsonrpsee::{SubscriptionSink, core::{Serialize, SubscriptionResult}, types::ErrorObjectOwned}; -use tokio::sync::Mutex; +use jsonrpsee::{ + SubscriptionMessage, SubscriptionSink, + core::{Serialize, SubscriptionResult}, + types::ErrorObjectOwned, +}; +use serde_json::value::RawValue; +use tokio::sync::{Mutex, broadcast}; pub struct IndexerService { service_impl: Arc<Mutex<IndexerServiceImpl>>, respond_subscribers_loop_handle: tokio::task::JoinHandle<Result<()>>, } - impl Drop for IndexerService { fn drop(&mut self) { self.respond_subscribers_loop_handle.abort(); @@ -20,9 +24,9 @@ impl Drop for IndexerService { impl IndexerService { pub fn new(config: IndexerConfig) -> Result<Self> { - let service_impl = Arc::new(Mutex::new(IndexerServiceImpl::new( - IndexerCore::new(config)?, - ))); + let service_impl = Arc::new(Mutex::new(IndexerServiceImpl::new(IndexerCore::new( + config, + )?))); let respond_subscribers_loop_handle = tokio::spawn( IndexerServiceImpl::respond_subscribers_loop(Arc::clone(&service_impl)), @@ -41,8 +45,27 @@ impl indexer_service_rpc::RpcServer for IndexerService { &self, subscription_sink: jsonrpsee::PendingSubscriptionSink, ) -> SubscriptionResult { + let mut rx = self + .service_impl + .lock() + .await + .finalized_block_id_tx + .subscribe(); + let sink = subscription_sink.accept().await?; - self.service_impl.lock().await.add_subscription(Subscription::new(sink)).await; + + tokio::spawn(async move { + while let Ok(block_id) = rx.recv().await { + let msg = SubscriptionMessage::from( + RawValue::from_string(block_id.to_string()) + .expect("u64 string is always valid JSON"), + ); + if sink.send(msg).await.is_err() { + break; + } + } + }); + Ok(()) } @@ -78,60 +101,34 @@ impl indexer_service_rpc::RpcServer for IndexerService { struct IndexerServiceImpl { indexer: IndexerCore, - subscriptions: Vec<Subscription<Block>>, + finalized_block_id_tx: broadcast::Sender<BlockId>, } impl IndexerServiceImpl { fn new(indexer: IndexerCore) -> Self { + let (finalized_block_id_tx, _block_rx) = broadcast::channel(1024); + Self { indexer, - subscriptions: Vec::new(), + finalized_block_id_tx, } } - async fn add_subscription(&mut self, subscription: Subscription<Block>) { - self.subscriptions.push(subscription); - } - async fn respond_subscribers_loop(service_impl: Arc<Mutex<IndexerServiceImpl>>) -> Result<()> { let indexer_clone = service_impl.lock().await.indexer.clone(); let mut block_stream = pin!(indexer_clone.subscribe_parse_block_stream().await); while let Some(block) = block_stream.next().await { - let block= block.context("Failed to get L2 block data")?; - let block = block.try_into().context("Failed to convert L2 Block into protocol Block")?; + let block = block.context("Failed to get L2 block data")?; // Cloning subscriptions to avoid holding the lock while sending - let subscriptions = service_impl.lock().await.subscriptions.clone(); - for sink in subscriptions { - sink.send(&block).await?; - } + service_impl + .lock() + .await + .finalized_block_id_tx + .send(block.header.block_id)?; } Err(anyhow!("Block stream ended unexpectedly")) } } - -#[derive(Clone)] -struct Subscription<T> { - sink: SubscriptionSink, - _marker: std::marker::PhantomData<T>, -} - -impl<T> Subscription<T> { - fn new(sink: SubscriptionSink) -> Self { - Self { - sink, - _marker: std::marker::PhantomData, - } - } - - async fn send(&self, item: &T) -> Result<()> - where T: Serialize - { - let json = serde_json::value::to_raw_value(item) - .context("Failed to serialize item for subscription")?; - self.sink.send(json).await?; - Ok(()) - } -} diff --git a/integration_tests/src/lib.rs b/integration_tests/src/lib.rs index baff7c9c..5f39c872 100644 --- a/integration_tests/src/lib.rs +++ b/integration_tests/src/lib.rs @@ -8,7 +8,7 @@ use common::{ sequencer_client::SequencerClient, transaction::{EncodedTransaction, NSSATransaction}, }; -use indexer_core::{IndexerCore, config::IndexerConfig}; +use indexer_core::config::IndexerConfig; use log::debug; use nssa::PrivacyPreservingTransaction; use nssa_core::Commitment; diff --git a/sequencer_core/src/lib.rs b/sequencer_core/src/lib.rs index f54fb78f..913481f8 100644 --- a/sequencer_core/src/lib.rs +++ b/sequencer_core/src/lib.rs @@ -265,7 +265,10 @@ impl SequencerCore { .map(|block| block.header.block_id) .min() { - info!("FIRST PENDING BLOCK: {}", first_pending_block_id); + info!( + "Clearing pending blocks up to id: {}", + last_finalized_block_id + ); (first_pending_block_id..=last_finalized_block_id) .try_for_each(|id| self.store.delete_block_at_id(id)) } else { diff --git a/sequencer_runner/src/lib.rs b/sequencer_runner/src/lib.rs index 17c984f5..5913ee02 100644 --- a/sequencer_runner/src/lib.rs +++ b/sequencer_runner/src/lib.rs @@ -5,7 +5,7 @@ use anyhow::{Context as _, Result}; use clap::Parser; use common::rpc_primitives::RpcConfig; use futures::FutureExt as _; -use log::{debug, error, info, warn}; +use log::{error, info, warn}; use sequencer_core::{SequencerCore, config::SequencerConfig}; use sequencer_rpc::new_http_server; use tokio::{sync::Mutex, task::JoinHandle}; @@ -194,12 +194,10 @@ async fn listen_for_bedrock_blocks_loop(seq_core: Arc<Mutex<SequencerCore>>) -> .await .context("Failed to subscribe to finalized blocks")?; - while let Some(block) = subscription.next().await { - let block = block.context("Failed to get next block from subscription")?; - let block_id = block.header.block_id; + while let Some(block_id) = subscription.next().await { + let block_id = block_id.context("Failed to get next block from subscription")?; info!("Received new L2 block with ID {block_id}"); - debug!("Block data: {block:#?}"); seq_core .lock() From 321f31a54b3a961e447c28db66f88ba3e08fd33e Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Mon, 2 Feb 2026 17:05:58 +0300 Subject: [PATCH 24/25] Reimplement subscriptions --- indexer/service/src/service.rs | 154 +++++++++++++++++++-------------- 1 file changed, 91 insertions(+), 63 deletions(-) diff --git a/indexer/service/src/service.rs b/indexer/service/src/service.rs index d3faa5d5..d7b14c4d 100644 --- a/indexer/service/src/service.rs +++ b/indexer/service/src/service.rs @@ -1,40 +1,34 @@ use std::{pin::pin, sync::Arc}; -use anyhow::{Context as _, Result, anyhow}; +use anyhow::{Context as _, Result, bail}; use futures::StreamExt as _; use indexer_core::{IndexerCore, config::IndexerConfig}; use indexer_service_protocol::{Account, AccountId, Block, BlockId, Hash, Transaction}; use jsonrpsee::{ - SubscriptionMessage, SubscriptionSink, + SubscriptionSink, core::{Serialize, SubscriptionResult}, types::ErrorObjectOwned, }; -use serde_json::value::RawValue; -use tokio::sync::{Mutex, broadcast}; +use tokio::sync::{Mutex, mpsc::UnboundedSender}; pub struct IndexerService { - service_impl: Arc<Mutex<IndexerServiceImpl>>, - respond_subscribers_loop_handle: tokio::task::JoinHandle<Result<()>>, -} -impl Drop for IndexerService { - fn drop(&mut self) { - self.respond_subscribers_loop_handle.abort(); - } + subscription_service: SubscriptionService, + + #[expect( + dead_code, + reason = "Will be used in future implementations of RPC methods" + )] + indexer: IndexerCore, } impl IndexerService { pub fn new(config: IndexerConfig) -> Result<Self> { - let service_impl = Arc::new(Mutex::new(IndexerServiceImpl::new(IndexerCore::new( - config, - )?))); - - let respond_subscribers_loop_handle = tokio::spawn( - IndexerServiceImpl::respond_subscribers_loop(Arc::clone(&service_impl)), - ); + let indexer = IndexerCore::new(config)?; + let subscription_service = SubscriptionService::spawn_new(indexer.clone()); Ok(Self { - service_impl, - respond_subscribers_loop_handle, + subscription_service, + indexer, }) } } @@ -45,26 +39,9 @@ impl indexer_service_rpc::RpcServer for IndexerService { &self, subscription_sink: jsonrpsee::PendingSubscriptionSink, ) -> SubscriptionResult { - let mut rx = self - .service_impl - .lock() - .await - .finalized_block_id_tx - .subscribe(); - let sink = subscription_sink.accept().await?; - - tokio::spawn(async move { - while let Ok(block_id) = rx.recv().await { - let msg = SubscriptionMessage::from( - RawValue::from_string(block_id.to_string()) - .expect("u64 string is always valid JSON"), - ); - if sink.send(msg).await.is_err() { - break; - } - } - }); + self.subscription_service + .add_subscription(Subscription::new(sink))?; Ok(()) } @@ -99,36 +76,87 @@ impl indexer_service_rpc::RpcServer for IndexerService { } } -struct IndexerServiceImpl { - indexer: IndexerCore, - finalized_block_id_tx: broadcast::Sender<BlockId>, +struct SubscriptionService { + respond_subscribers_loop_handle: tokio::task::JoinHandle<Result<()>>, + new_subscription_sender: UnboundedSender<Subscription<BlockId>>, } -impl IndexerServiceImpl { - fn new(indexer: IndexerCore) -> Self { - let (finalized_block_id_tx, _block_rx) = broadcast::channel(1024); +impl SubscriptionService { + pub fn spawn_new(indexer: IndexerCore) -> Self { + let (new_subscription_sender, mut sub_receiver) = + tokio::sync::mpsc::unbounded_channel::<Subscription<BlockId>>(); + + let subscriptions = Arc::new(Mutex::new(Vec::new())); + + let respond_subscribers_loop_handle = tokio::spawn(async move { + let mut block_stream = pin!(indexer.subscribe_parse_block_stream().await); + + loop { + tokio::select! { + sub = sub_receiver.recv() => { + let Some(subscription) = sub else { + bail!("Subscription receiver closed unexpectedly"); + }; + subscriptions.lock().await.push(subscription); + } + block_opt = block_stream.next() => { + let Some(block) = block_opt else { + bail!("Block stream ended unexpectedly"); + }; + let block = block.context("Failed to get L2 block data")?; + let block: indexer_service_protocol::Block = block + .try_into() + .context("Failed to convert L2 Block into protocol Block")?; + + // Cloning subscriptions to avoid holding the lock while sending + let subscriptions = subscriptions.lock().await.clone(); + for sink in subscriptions { + sink.send(&block.header.block_id).await?; + } + } + } + } + }); Self { - indexer, - finalized_block_id_tx, + respond_subscribers_loop_handle, + new_subscription_sender, } } - async fn respond_subscribers_loop(service_impl: Arc<Mutex<IndexerServiceImpl>>) -> Result<()> { - let indexer_clone = service_impl.lock().await.indexer.clone(); - - let mut block_stream = pin!(indexer_clone.subscribe_parse_block_stream().await); - while let Some(block) = block_stream.next().await { - let block = block.context("Failed to get L2 block data")?; - - // Cloning subscriptions to avoid holding the lock while sending - service_impl - .lock() - .await - .finalized_block_id_tx - .send(block.header.block_id)?; - } - - Err(anyhow!("Block stream ended unexpectedly")) + pub fn add_subscription(&self, subscription: Subscription<BlockId>) -> Result<()> { + self.new_subscription_sender.send(subscription)?; + Ok(()) + } +} + +impl Drop for SubscriptionService { + fn drop(&mut self) { + self.respond_subscribers_loop_handle.abort(); + } +} + +#[derive(Clone)] +struct Subscription<T> { + sink: SubscriptionSink, + _marker: std::marker::PhantomData<T>, +} + +impl<T> Subscription<T> { + fn new(sink: SubscriptionSink) -> Self { + Self { + sink, + _marker: std::marker::PhantomData, + } + } + + async fn send(&self, item: &T) -> Result<()> + where + T: Serialize, + { + let json = serde_json::value::to_raw_value(item) + .context("Failed to serialize item for subscription")?; + self.sink.send(json).await?; + Ok(()) } } From 71a7905a5845217ce7661db01c48a8be6cf33c48 Mon Sep 17 00:00:00 2001 From: Daniil Polyakov <arjentix@gmail.com> Date: Mon, 2 Feb 2026 19:07:24 +0300 Subject: [PATCH 25/25] Integrate Indexer Service into integration tests --- Cargo.lock | 2 +- common/src/lib.rs | 3 +- indexer/core/src/config.rs | 4 +- indexer/service/src/lib.rs | 78 +++++++++++++++ indexer/service/src/main.rs | 43 +------- integration_tests/Cargo.toml | 2 +- .../configs/indexer/indexer_config.json | 17 ---- integration_tests/src/config.rs | 39 ++++++++ integration_tests/src/lib.rs | 98 +++++-------------- sequencer_runner/src/lib.rs | 6 +- 10 files changed, 152 insertions(+), 140 deletions(-) delete mode 100644 integration_tests/configs/indexer/indexer_config.json create mode 100644 integration_tests/src/config.rs diff --git a/Cargo.lock b/Cargo.lock index 604ad55f..e0690a13 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3321,7 +3321,7 @@ dependencies = [ "env_logger", "futures", "hex", - "indexer_core", + "indexer_service", "key_protocol", "log", "nssa", diff --git a/common/src/lib.rs b/common/src/lib.rs index 21c0796d..d44fd30f 100644 --- a/common/src/lib.rs +++ b/common/src/lib.rs @@ -8,6 +8,7 @@ pub mod transaction; // Module for tests utility functions // TODO: Compile only for tests pub mod test_utils; -pub type HashType = [u8; 32]; pub const PINATA_BASE58: &str = "EfQhKQAkX2FJiwNii2WFQsGndjvF1Mzd7RuVe7QdPLw7"; + +pub type HashType = [u8; 32]; diff --git a/indexer/core/src/config.rs b/indexer/core/src/config.rs index db7855ba..c05aa5cc 100644 --- a/indexer/core/src/config.rs +++ b/indexer/core/src/config.rs @@ -1,9 +1,9 @@ use std::{fs::File, io::BufReader, path::Path}; use anyhow::{Context as _, Result}; -use bedrock_client::BackoffConfig; +pub use bedrock_client::BackoffConfig; use common::config::BasicAuth; -use logos_blockchain_core::mantle::ops::channel::ChannelId; +pub use logos_blockchain_core::mantle::ops::channel::ChannelId; use serde::{Deserialize, Serialize}; use url::Url; diff --git a/indexer/service/src/lib.rs b/indexer/service/src/lib.rs index 0c18410e..8185cb40 100644 --- a/indexer/service/src/lib.rs +++ b/indexer/service/src/lib.rs @@ -1,4 +1,82 @@ +use std::net::SocketAddr; + +use anyhow::{Context as _, Result}; +pub use indexer_core::config::*; +use indexer_service_rpc::RpcServer as _; +use jsonrpsee::server::Server; +use log::{error, info}; + pub mod service; #[cfg(feature = "mock-responses")] pub mod mock_service; + +pub struct IndexerHandle { + addr: SocketAddr, + server_handle: Option<jsonrpsee::server::ServerHandle>, +} +impl IndexerHandle { + fn new(addr: SocketAddr, server_handle: jsonrpsee::server::ServerHandle) -> Self { + Self { + addr, + server_handle: Some(server_handle), + } + } + + pub fn addr(&self) -> SocketAddr { + self.addr + } + + pub async fn stopped(mut self) { + let handle = self + .server_handle + .take() + .expect("Indexer server handle is set"); + + handle.stopped().await + } +} + +impl Drop for IndexerHandle { + fn drop(&mut self) { + let Self { + addr: _, + server_handle, + } = self; + + let Some(handle) = server_handle else { + return; + }; + + if let Err(err) = handle.stop() { + error!("An error occurred while stopping Indexer RPC server: {err}"); + } + } +} + +pub async fn run_server(config: IndexerConfig, port: u16) -> Result<IndexerHandle> { + #[cfg(feature = "mock-responses")] + let _ = config; + + let server = Server::builder() + .build(SocketAddr::from(([0, 0, 0, 0], port))) + .await + .context("Failed to build RPC server")?; + + let addr = server + .local_addr() + .context("Failed to get local address of RPC server")?; + + info!("Starting Indexer Service RPC server on {addr}"); + + #[cfg(not(feature = "mock-responses"))] + let handle = { + let service = + service::IndexerService::new(config).context("Failed to initialize indexer service")?; + server.start(service.into_rpc()) + }; + #[cfg(feature = "mock-responses")] + let handle = server.start(mock_service::MockIndexerService::new_with_mock_blocks().into_rpc()); + + Ok(IndexerHandle::new(addr, handle)) +} diff --git a/indexer/service/src/main.rs b/indexer/service/src/main.rs index e0ece691..e4d18feb 100644 --- a/indexer/service/src/main.rs +++ b/indexer/service/src/main.rs @@ -1,10 +1,7 @@ -use std::{net::SocketAddr, path::PathBuf}; +use std::path::PathBuf; -use anyhow::{Context as _, Result}; +use anyhow::Result; use clap::Parser; -use indexer_core::config::IndexerConfig; -use indexer_service_rpc::RpcServer as _; -use jsonrpsee::server::Server; use log::{error, info}; use tokio_util::sync::CancellationToken; @@ -25,14 +22,14 @@ async fn main() -> Result<()> { let cancellation_token = listen_for_shutdown_signal(); - let handle = run_server(config_path, port).await?; - let handle_clone = handle.clone(); + let config = indexer_service::IndexerConfig::from_path(&config_path)?; + let indexer_handle = indexer_service::run_server(config, port).await?; tokio::select! { _ = cancellation_token.cancelled() => { info!("Shutting down server..."); } - _ = handle_clone.stopped() => { + _ = indexer_handle.stopped() => { error!("Server stopped unexpectedly"); } } @@ -42,36 +39,6 @@ async fn main() -> Result<()> { Ok(()) } -async fn run_server(config_path: PathBuf, port: u16) -> Result<jsonrpsee::server::ServerHandle> { - let config = IndexerConfig::from_path(&config_path)?; - #[cfg(feature = "mock-responses")] - let _ = config; - - let server = Server::builder() - .build(SocketAddr::from(([0, 0, 0, 0], port))) - .await - .context("Failed to build RPC server")?; - - let addr = server - .local_addr() - .context("Failed to get local address of RPC server")?; - - info!("Starting Indexer Service RPC server on {addr}"); - - #[cfg(not(feature = "mock-responses"))] - let handle = { - let service = indexer_service::service::IndexerService::new(config) - .context("Failed to initialize indexer service")?; - server.start(service.into_rpc()) - }; - #[cfg(feature = "mock-responses")] - let handle = server.start( - indexer_service::mock_service::MockIndexerService::new_with_mock_blocks().into_rpc(), - ); - - Ok(handle) -} - fn listen_for_shutdown_signal() -> CancellationToken { let cancellation_token = CancellationToken::new(); let cancellation_token_clone = cancellation_token.clone(); diff --git a/integration_tests/Cargo.toml b/integration_tests/Cargo.toml index b7ca13dd..74fbd557 100644 --- a/integration_tests/Cargo.toml +++ b/integration_tests/Cargo.toml @@ -11,7 +11,7 @@ sequencer_runner.workspace = true wallet.workspace = true common.workspace = true key_protocol.workspace = true -indexer_core.workspace = true +indexer_service.workspace = true url.workspace = true anyhow.workspace = true diff --git a/integration_tests/configs/indexer/indexer_config.json b/integration_tests/configs/indexer/indexer_config.json deleted file mode 100644 index fd5309b2..00000000 --- a/integration_tests/configs/indexer/indexer_config.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "bedrock_client_config": { - "addr": "http://127.0.0.1:8080", - "auth": { - "username": "user" - } - }, - "channel_id": "0101010101010101010101010101010101010101010101010101010101010101", - "backoff": { - "max_retries": 10, - "start_delay_millis": 100 - }, - "resubscribe_interval_millis": 1000, - "sequencer_client_config": { - "addr": "will_be_replaced_in_runtime" - } -} \ No newline at end of file diff --git a/integration_tests/src/config.rs b/integration_tests/src/config.rs new file mode 100644 index 00000000..16d577b5 --- /dev/null +++ b/integration_tests/src/config.rs @@ -0,0 +1,39 @@ +use std::net::SocketAddr; + +use anyhow::Result; +use indexer_service::{BackoffConfig, BedrockClientConfig, ChannelId, IndexerConfig}; +use url::Url; + +pub fn indexer_config(bedrock_addr: SocketAddr) -> IndexerConfig { + let channel_id: [u8; 32] = [0u8, 1] + .repeat(16) + .try_into() + .unwrap_or_else(|_| unreachable!()); + let channel_id = ChannelId::try_from(channel_id).expect("Failed to create channel ID"); + + IndexerConfig { + resubscribe_interval_millis: 1000, + backoff: BackoffConfig { + start_delay_millis: 100, + max_retries: 10, + }, + bedrock_client_config: BedrockClientConfig { + addr: addr_to_http_url(bedrock_addr).expect("Failed to convert bedrock addr to URL"), + auth: None, + }, + channel_id, + } +} + +fn addr_to_http_url(addr: SocketAddr) -> Result<Url> { + // Convert 0.0.0.0 to 127.0.0.1 for client connections + // When binding to port 0, the server binds to 0.0.0.0:<random_port> + // but clients need to connect to 127.0.0.1:<port> to work reliably + let url_string = if addr.ip().is_unspecified() { + format!("http://127.0.0.1:{}", addr.port()) + } else { + format!("http://{addr}") + }; + + url_string.parse().map_err(Into::into) +} diff --git a/integration_tests/src/lib.rs b/integration_tests/src/lib.rs index 5f39c872..24dccbf8 100644 --- a/integration_tests/src/lib.rs +++ b/integration_tests/src/lib.rs @@ -8,17 +8,18 @@ use common::{ sequencer_client::SequencerClient, transaction::{EncodedTransaction, NSSATransaction}, }; -use indexer_core::config::IndexerConfig; +use indexer_service::IndexerHandle; use log::debug; use nssa::PrivacyPreservingTransaction; use nssa_core::Commitment; use sequencer_core::config::SequencerConfig; use sequencer_runner::SequencerHandle; use tempfile::TempDir; -use tokio::task::JoinHandle; use url::Url; use wallet::{WalletCore, config::WalletConfigOverrides}; +mod config; + // TODO: Remove this and control time from tests pub const TIME_TO_WAIT_FOR_BLOCK_SECONDS: u64 = 12; @@ -37,16 +38,16 @@ static LOGGER: LazyLock<()> = LazyLock::new(env_logger::init); /// It's memory and logically safe to create multiple instances of this struct in parallel tests, /// as each instance uses its own temporary directories for sequencer and wallet data. pub struct TestContext { - _sequencer_handle: SequencerHandle, - indexer_loop_handle: Option<JoinHandle<Result<()>>>, sequencer_client: SequencerClient, wallet: WalletCore, + _sequencer_handle: SequencerHandle, + _indexer_handle: IndexerHandle, _temp_sequencer_dir: TempDir, _temp_wallet_dir: TempDir, } impl TestContext { - /// Create new test context in detached mode. Default. + /// Create new test context. pub async fn new() -> Result<Self> { let manifest_dir = env!("CARGO_MANIFEST_DIR"); @@ -56,42 +57,22 @@ impl TestContext { let sequencer_config = SequencerConfig::from_path(&sequencer_config_path) .context("Failed to create sequencer config from file")?; - Self::new_with_sequencer_and_maybe_indexer_configs(sequencer_config, None).await + Self::new_with_sequencer_config(sequencer_config).await } - /// Create new test context in local bedrock node attached mode. - pub async fn new_bedrock_local_attached() -> Result<Self> { - let manifest_dir = env!("CARGO_MANIFEST_DIR"); - - let sequencer_config_path = PathBuf::from(manifest_dir) - .join("configs/sequencer/bedrock_local_attached/sequencer_config.json"); - - let sequencer_config = SequencerConfig::from_path(&sequencer_config_path) - .context("Failed to create sequencer config from file")?; - - let indexer_config_path = - PathBuf::from(manifest_dir).join("configs/indexer/indexer_config.json"); - - let indexer_config = IndexerConfig::from_path(&indexer_config_path) - .context("Failed to create indexer config from file")?; - - Self::new_with_sequencer_and_maybe_indexer_configs(sequencer_config, Some(indexer_config)) - .await - } - - /// Create new test context with custom sequencer config and maybe indexer config. + /// Create new test context with custom sequencer config. /// /// `home` and `port` fields of the provided config will be overridden to meet tests parallelism /// requirements. - pub async fn new_with_sequencer_and_maybe_indexer_configs( - sequencer_config: SequencerConfig, - indexer_config: Option<IndexerConfig>, - ) -> Result<Self> { + pub async fn new_with_sequencer_config(sequencer_config: SequencerConfig) -> Result<Self> { // Ensure logger is initialized only once *LOGGER; debug!("Test context setup"); + let bedrock_addr = todo!(); + let indexer_config = config::indexer_config(bedrock_addr); + let (_sequencer_handle, sequencer_addr, temp_sequencer_dir) = Self::setup_sequencer(sequencer_config) .await @@ -115,32 +96,18 @@ impl TestContext { ) .context("Failed to create sequencer client")?; - if let Some(indexer_config) = indexer_config { - // let indexer_core = IndexerCore::new(indexer_config)?; + let _indexer_handle = indexer_service::run_server(indexer_config, 0) + .await + .context("Failed to run Indexer Service")?; - // let indexer_loop_handle = Some(tokio::spawn(async move { - // indexer_core.subscribe_parse_block_stream().await - // })); - - // Ok(Self { - // _sequencer_handle, - // indexer_loop_handle, - // sequencer_client, - // wallet, - // _temp_sequencer_dir: temp_sequencer_dir, - // _temp_wallet_dir: temp_wallet_dir, - // }) - todo!() - } else { - Ok(Self { - _sequencer_handle, - indexer_loop_handle: None, - sequencer_client, - wallet, - _temp_sequencer_dir: temp_sequencer_dir, - _temp_wallet_dir: temp_wallet_dir, - }) - } + Ok(Self { + sequencer_client, + wallet, + _sequencer_handle, + _indexer_handle, + _temp_sequencer_dir: temp_sequencer_dir, + _temp_wallet_dir: temp_wallet_dir, + }) } async fn setup_sequencer( @@ -212,25 +179,6 @@ impl TestContext { } } -impl Drop for TestContext { - fn drop(&mut self) { - debug!("Test context cleanup"); - - let Self { - _sequencer_handle, - indexer_loop_handle, - sequencer_client: _, - wallet: _, - _temp_sequencer_dir, - _temp_wallet_dir, - } = self; - - if let Some(indexer_loop_handle) = indexer_loop_handle { - indexer_loop_handle.abort(); - } - } -} - pub fn format_public_account_id(account_id: &str) -> String { format!("Public/{account_id}") } diff --git a/sequencer_runner/src/lib.rs b/sequencer_runner/src/lib.rs index 5913ee02..c74a943e 100644 --- a/sequencer_runner/src/lib.rs +++ b/sequencer_runner/src/lib.rs @@ -4,7 +4,7 @@ use actix_web::dev::ServerHandle; use anyhow::{Context as _, Result}; use clap::Parser; use common::rpc_primitives::RpcConfig; -use futures::FutureExt as _; +use futures::{FutureExt as _, never::Never}; use log::{error, info, warn}; use sequencer_core::{SequencerCore, config::SequencerConfig}; use sequencer_rpc::new_http_server; @@ -19,10 +19,6 @@ struct Args { home_dir: PathBuf, } -/// An enum that can never be instantiated, used to replace unstable `!` type. -#[derive(Debug)] -pub enum Never {} - /// Handle to manage the sequencer and its tasks. /// /// Implements `Drop` to ensure all tasks are aborted and the HTTP server is stopped when dropped.