From 59bbfafbb7d808ae1d9ed529cc3116ed8a914eed Mon Sep 17 00:00:00 2001 From: Sosthene00 <674694@protonmail.ch> Date: Wed, 20 Mar 2024 14:40:51 +0100 Subject: [PATCH] Update to last sp_backend api --- crates/sp_client/src/api.rs | 38 +++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/crates/sp_client/src/api.rs b/crates/sp_client/src/api.rs index 5aba703..b1f6ad3 100644 --- a/crates/sp_client/src/api.rs +++ b/crates/sp_client/src/api.rs @@ -1,41 +1,63 @@ use rand::Rng; +use sp_backend::silentpayments::sending::SilentPaymentAddress; use wasm_bindgen::prelude::*; -use sp_backend::spclient::{derive_keys_from_seed, SpClient}; use sp_backend::spclient::SpendKey; +use sp_backend::spclient::{derive_keys_from_seed, SpClient, OutputList}; const IS_TESTNET: bool = true; +#[wasm_bindgen] +pub struct GenerateSpWalletReturn { + sp_client_json: String, + sp_outputs_json: String, +} + #[wasm_bindgen] pub fn setup() { wasm_logger::init(wasm_logger::Config::default()); } -pub fn new_key() -> Vec { +fn new_key() -> Vec { let mut seed = [0u8; 64]; rand::thread_rng().fill(&mut seed); seed.to_vec() } #[wasm_bindgen] -pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option { - let mut seed = [0u8;64]; +pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option { + let mut seed = [0u8; 64]; seed.copy_from_slice(&new_key()); let (scan_sk, spend_sk) = derive_keys_from_seed(&seed, is_testnet).ok()?; - let sp_client = SpClient::new("".to_owned(), scan_sk, SpendKey::Secret(spend_sk), None, birthday, IS_TESTNET).ok()?; + let sp_client = SpClient::new( + "".to_owned(), + scan_sk, + SpendKey::Secret(spend_sk), + None, + IS_TESTNET, + ) + .ok()?; + let our_address: SilentPaymentAddress = sp_client.get_receiving_address().try_into().ok()?; log::info!( "Created client for sp with address: {}", - sp_client.get_receiving_address() + our_address.to_string() ); // zero out the seed for mut b in seed.into_iter() { b = 0; assert!(b == 0); // this guarantee that the compiler won't optimize it away } - let json = serde_json::to_string(&sp_client).ok(); + let sp_client_json = serde_json::to_string(&sp_client).ok()?; + + // Generate an empty outputs + let sp_outputs = OutputList::new(our_address.get_scan_key(), our_address.get_spend_key(), birthday); + let sp_outputs_json = serde_json::to_string(&sp_outputs).ok()?; - json + Some(GenerateSpWalletReturn { + sp_client_json, + sp_outputs_json, + }) } #[wasm_bindgen]