diff --git a/apps/extension/src/background/sdk/service.ts b/apps/extension/src/background/sdk/service.ts index 9686c45d6..fe602ccc8 100644 --- a/apps/extension/src/background/sdk/service.ts +++ b/apps/extension/src/background/sdk/service.ts @@ -8,6 +8,9 @@ const { defaultTokenAddress = "tnam1qxgfw7myv4dh0qna4hq0xdg6lx77fzl7dcem8h7e", } = process.env; +// Extension does not care about the MASP indexer - this will map to None in Rust +const MASP_INDEXER_URL = ""; + export class SdkService { private constructor( private rpc: string, @@ -27,6 +30,12 @@ export class SdkService { } getSdk(): Sdk { - return getSdk(this.cryptoMemory, this.rpc, "NOT USED DB NAME", this.token); + return getSdk( + this.cryptoMemory, + this.rpc, + MASP_INDEXER_URL, + "NOT USED DB NAME", + this.token + ); } } diff --git a/packages/shared/lib/Cargo.lock b/packages/shared/lib/Cargo.lock index 76961429c..859286a23 100644 --- a/packages/shared/lib/Cargo.lock +++ b/packages/shared/lib/Cargo.lock @@ -2886,6 +2886,7 @@ checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" [[package]] name = "namada_account" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "namada_core", @@ -2897,6 +2898,7 @@ dependencies = [ [[package]] name = "namada_controller" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "namada_core", "smooth-operator", @@ -2906,6 +2908,7 @@ dependencies = [ [[package]] name = "namada_core" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "bech32 0.8.1", "borsh", @@ -2955,6 +2958,7 @@ dependencies = [ [[package]] name = "namada_ethereum_bridge" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "ethers", @@ -2982,6 +2986,7 @@ dependencies = [ [[package]] name = "namada_events" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "namada_core", @@ -2995,6 +3000,7 @@ dependencies = [ [[package]] name = "namada_gas" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "namada_core", @@ -3007,6 +3013,7 @@ dependencies = [ [[package]] name = "namada_governance" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "itertools 0.12.1", @@ -3029,6 +3036,7 @@ dependencies = [ [[package]] name = "namada_ibc" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "data-encoding", @@ -3058,6 +3066,7 @@ dependencies = [ [[package]] name = "namada_io" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "async-trait", "kdam", @@ -3070,6 +3079,7 @@ dependencies = [ [[package]] name = "namada_macros" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "data-encoding", "proc-macro2", @@ -3081,6 +3091,7 @@ dependencies = [ [[package]] name = "namada_merkle_tree" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "eyre", @@ -3095,6 +3106,7 @@ dependencies = [ [[package]] name = "namada_parameters" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "namada_core", "namada_macros", @@ -3109,6 +3121,7 @@ dependencies = [ [[package]] name = "namada_proof_of_stake" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "itertools 0.12.1", @@ -3132,6 +3145,7 @@ dependencies = [ [[package]] name = "namada_replay_protection" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "namada_core", ] @@ -3139,6 +3153,7 @@ dependencies = [ [[package]] name = "namada_sdk" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "async-trait", "bimap", @@ -3200,7 +3215,6 @@ dependencies = [ "tokio", "toml 0.5.11", "tracing", - "web-sys", "xorf", "zeroize", ] @@ -3208,6 +3222,7 @@ dependencies = [ [[package]] name = "namada_shielded_token" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "async-trait", "borsh", @@ -3242,13 +3257,13 @@ dependencies = [ "thiserror", "tracing", "typed-builder", - "web-sys", "xorf", ] [[package]] name = "namada_state" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "clru", @@ -3271,6 +3286,7 @@ dependencies = [ [[package]] name = "namada_storage" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "itertools 0.12.1", @@ -3289,6 +3305,7 @@ dependencies = [ [[package]] name = "namada_systems" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "namada_core", "namada_events", @@ -3298,6 +3315,7 @@ dependencies = [ [[package]] name = "namada_token" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "namada_core", @@ -3312,6 +3330,7 @@ dependencies = [ [[package]] name = "namada_trans_token" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "konst", "namada_core", @@ -3327,6 +3346,7 @@ dependencies = [ [[package]] name = "namada_tx" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "ark-bls12-381", "bitflags 2.5.0", @@ -3355,6 +3375,7 @@ dependencies = [ [[package]] name = "namada_vm" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "clru", @@ -3376,6 +3397,7 @@ dependencies = [ [[package]] name = "namada_vote_ext" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "borsh", "namada_core", @@ -3387,6 +3409,7 @@ dependencies = [ [[package]] name = "namada_vp" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "namada_core", "namada_events", @@ -3402,6 +3425,7 @@ dependencies = [ [[package]] name = "namada_vp_env" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "derivative", "masp_primitives", @@ -3416,6 +3440,7 @@ dependencies = [ [[package]] name = "namada_wallet" version = "0.43.0" +source = "git+https://github.com/anoma/namada?rev=8c4e722fd93#8c4e722fd93d2b1294b5f70504785937e8bce032" dependencies = [ "bimap", "borsh", diff --git a/packages/shared/lib/src/sdk/masp/masp_node.rs b/packages/shared/lib/src/sdk/masp/masp_node.rs index 360dda454..821f72dc6 100644 --- a/packages/shared/lib/src/sdk/masp/masp_node.rs +++ b/packages/shared/lib/src/sdk/masp/masp_node.rs @@ -1,8 +1,9 @@ use async_trait::async_trait; use namada_sdk::{ borsh::{BorshDeserialize, BorshSerialize}, - masp::{ContextSyncStatus, DispatcherCache, ShieldedContext, ShieldedUtils}, + masp::{ContextSyncStatus, DispatcherCache, ShieldedUtils}, masp_proofs::prover::LocalTxProver, + ShieldedWallet, }; use wasm_bindgen::{prelude::wasm_bindgen, JsValue}; @@ -21,6 +22,8 @@ const FILE_NAME: &str = "shielded.dat"; const TMP_FILE_NAME: &str = "shielded.tmp"; const SPECULATIVE_FILE_NAME: &str = "speculative_shielded.dat"; const SPECULATIVE_TMP_FILE_NAME: &str = "speculative_shielded.tmp"; +const CACHE_FILE_NAME: &str = "shielded_sync.cache"; +const CACHE_FILE_TMP_PREFIX: &str = "shielded_sync.cache.tmp"; /// Mostly copied from the Namada CLI @@ -32,7 +35,7 @@ pub struct NodeShieldedUtils { } impl NodeShieldedUtils { - pub async fn new(context_dir: &str) -> ShieldedContext { + pub async fn new(context_dir: &str) -> ShieldedWallet { let context_dir = PathBuf::from(context_dir); let spend_path = context_dir.join(SPEND_NAME); @@ -56,7 +59,7 @@ impl NodeShieldedUtils { let utils = Self { context_dir }; - ShieldedContext { + ShieldedWallet { utils, sync_status, ..Default::default() @@ -85,7 +88,7 @@ impl ShieldedUtils for NodeShieldedUtils { async fn load( &self, - ctx: &mut ShieldedContext, + ctx: &mut ShieldedWallet, force_confirmed: bool, ) -> std::io::Result<()> { let file_name = if force_confirmed { @@ -101,14 +104,14 @@ impl ShieldedUtils for NodeShieldedUtils { //TODO: change to_bytes to sth more descripive, add "from_bytes" let bytes = to_bytes(read_file_sync(path).unwrap().into()); - *ctx = ShieldedContext { + *ctx = ShieldedWallet { utils: ctx.utils.clone(), - ..ShieldedContext::::deserialize(&mut &bytes[..])? + ..ShieldedWallet::::deserialize(&mut &bytes[..])? }; Ok(()) } - async fn save(&self, ctx: &ShieldedContext) -> std::io::Result<()> { + async fn save(&self, ctx: &ShieldedWallet) -> std::io::Result<()> { let (tmp_file_name, file_name) = match ctx.sync_status { ContextSyncStatus::Confirmed => (TMP_FILE_NAME, FILE_NAME), ContextSyncStatus::Speculative => (SPECULATIVE_TMP_FILE_NAME, SPECULATIVE_FILE_NAME), @@ -139,9 +142,20 @@ impl ShieldedUtils for NodeShieldedUtils { /// Save a cache of data as part of shielded sync if that /// process gets interrupted. - async fn cache_save(&self, _cache: &DispatcherCache) -> std::io::Result<()> { - // TODO: - todo!() + async fn cache_save(&self, cache: &DispatcherCache) -> std::io::Result<()> { + let tmp_path = path_buf_to_js_value(self.context_dir.join(CACHE_FILE_TMP_PREFIX)); + { + let mut bytes = Vec::new(); + cache.serialize(&mut bytes).expect("cannot serialize cache"); + let uint8_array = js_sys::Uint8Array::from(&bytes[..]); + + write_file_sync(tmp_path.clone(), uint8_array.into()).unwrap(); + } + + let new_path = path_buf_to_js_value(self.context_dir.join(CACHE_FILE_NAME)); + renameSync(tmp_path, new_path).unwrap(); + + Ok(()) } /// Load a cache of data as part of shielded sync if that diff --git a/packages/shared/lib/src/sdk/mod.rs b/packages/shared/lib/src/sdk/mod.rs index 1d0336a96..e4d77bf3d 100644 --- a/packages/shared/lib/src/sdk/mod.rs +++ b/packages/shared/lib/src/sdk/mod.rs @@ -102,7 +102,7 @@ impl Sdk { let context_dir = context_dir.as_string().unwrap(); let mut shielded = self.namada.shielded_mut().await; - *shielded = masp::JSShieldedUtils::new(&context_dir).await; + *shielded = ShieldedContext::new(masp::JSShieldedUtils::new(&context_dir).await); Ok(()) }