Update to last sp_backend api
This commit is contained in:
parent
bfad95dd25
commit
59bbfafbb7
@ -1,41 +1,63 @@
|
|||||||
use rand::Rng;
|
use rand::Rng;
|
||||||
|
|
||||||
|
use sp_backend::silentpayments::sending::SilentPaymentAddress;
|
||||||
use wasm_bindgen::prelude::*;
|
use wasm_bindgen::prelude::*;
|
||||||
|
|
||||||
use sp_backend::spclient::{derive_keys_from_seed, SpClient};
|
|
||||||
use sp_backend::spclient::SpendKey;
|
use sp_backend::spclient::SpendKey;
|
||||||
|
use sp_backend::spclient::{derive_keys_from_seed, SpClient, OutputList};
|
||||||
|
|
||||||
const IS_TESTNET: bool = true;
|
const IS_TESTNET: bool = true;
|
||||||
|
|
||||||
|
#[wasm_bindgen]
|
||||||
|
pub struct GenerateSpWalletReturn {
|
||||||
|
sp_client_json: String,
|
||||||
|
sp_outputs_json: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
pub fn setup() {
|
pub fn setup() {
|
||||||
wasm_logger::init(wasm_logger::Config::default());
|
wasm_logger::init(wasm_logger::Config::default());
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_key() -> Vec<u8> {
|
fn new_key() -> Vec<u8> {
|
||||||
let mut seed = [0u8; 64];
|
let mut seed = [0u8; 64];
|
||||||
rand::thread_rng().fill(&mut seed);
|
rand::thread_rng().fill(&mut seed);
|
||||||
seed.to_vec()
|
seed.to_vec()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[wasm_bindgen]
|
#[wasm_bindgen]
|
||||||
pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option<String> {
|
pub fn generate_sp_wallet(birthday: u32, is_testnet: bool) -> Option<GenerateSpWalletReturn> {
|
||||||
let mut seed = [0u8;64];
|
let mut seed = [0u8; 64];
|
||||||
seed.copy_from_slice(&new_key());
|
seed.copy_from_slice(&new_key());
|
||||||
let (scan_sk, spend_sk) = derive_keys_from_seed(&seed, is_testnet).ok()?;
|
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!(
|
log::info!(
|
||||||
"Created client for sp with address: {}",
|
"Created client for sp with address: {}",
|
||||||
sp_client.get_receiving_address()
|
our_address.to_string()
|
||||||
);
|
);
|
||||||
// zero out the seed
|
// zero out the seed
|
||||||
for mut b in seed.into_iter() {
|
for mut b in seed.into_iter() {
|
||||||
b = 0;
|
b = 0;
|
||||||
assert!(b == 0); // this guarantee that the compiler won't optimize it away
|
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]
|
#[wasm_bindgen]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user