Browse Source

Embed sapling params

checkpoints
Aditya Kulkarni 5 years ago
parent
commit
48bf5f3f63
  1. 4
      Cargo.toml
  2. 34
      src/lightclient.rs
  3. 17
      src/lightwallet/mod.rs
  4. 7
      src/main.rs
  5. BIN
      zcash-params/sapling-output.params
  6. BIN
      zcash-params/sapling-spend.params

4
Cargo.toml

@ -38,7 +38,7 @@ webpki-roots = "0.16.0"
tower-h2 = { git = "https://github.com/tower-rs/tower-h2" } tower-h2 = { git = "https://github.com/tower-rs/tower-h2" }
openssl = "*" openssl = "*"
openssl-probe = "*" openssl-probe = "*"
rust-embed = "5.1.0"
[dependencies.bellman] [dependencies.bellman]
git = "https://github.com/adityapk00/librustzcash.git" git = "https://github.com/adityapk00/librustzcash.git"
@ -72,4 +72,4 @@ tower-grpc-build = { git = "https://github.com/tower-rs/tower-grpc", features =
rand_core = "0.5.1" rand_core = "0.5.1"
[profile.release] [profile.release]
debug = true debug = false

34
src/lightclient.rs

@ -37,6 +37,7 @@ use zcash_client_backend::{
use crate::grpc_client::{ChainSpec, BlockId, BlockRange, RawTransaction, use crate::grpc_client::{ChainSpec, BlockId, BlockRange, RawTransaction,
TransparentAddressBlockFilter, TxFilter, Empty, LightdInfo}; TransparentAddressBlockFilter, TxFilter, Empty, LightdInfo};
use crate::grpc_client::client::CompactTxStreamer; use crate::grpc_client::client::CompactTxStreamer;
use crate::SaplingParams;
// Used below to return the grpc "Client" type to calling methods // Used below to return the grpc "Client" type to calling methods
@ -142,8 +143,6 @@ macro_rules! make_grpc_client {
}}; }};
} }
#[derive(Clone, Debug)] #[derive(Clone, Debug)]
pub struct LightClientConfig { pub struct LightClientConfig {
pub server : http::Uri, pub server : http::Uri,
@ -153,22 +152,6 @@ pub struct LightClientConfig {
} }
impl LightClientConfig { impl LightClientConfig {
pub fn get_params_path(&self, name: &str) -> Box<Path> {
let mut params_location;
if cfg!(target_os="macos") || cfg!(target_os="windows") {
params_location = dirs::data_dir()
.expect("Couldn't determine app data directory!");
params_location.push("ZcashParams");
} else {
params_location = dirs::home_dir()
.expect("Couldn't determine home directory!");
params_location.push(".zcash-params");
};
params_location.push(name);
params_location.into_boxed_path()
}
pub fn get_zcash_data_path(&self) -> Box<Path> { pub fn get_zcash_data_path(&self) -> Box<Path> {
let mut zcash_data_location; let mut zcash_data_location;
@ -335,19 +318,8 @@ impl LightClient {
info!("Read wallet with birthday {}", lc.wallet.get_first_tx_block()); info!("Read wallet with birthday {}", lc.wallet.get_first_tx_block());
// Read Sapling Params // Read Sapling Params
let mut f = match File::open(config.get_params_path("sapling-output.params")) { lc.sapling_output.extend_from_slice(SaplingParams::get("sapling-output.params").unwrap().as_ref());
Ok(file) => file, lc.sapling_spend.extend_from_slice(SaplingParams::get("sapling-spend.params").unwrap().as_ref());
Err(_) => return Err(Error::new(ErrorKind::NotFound,
format!("Couldn't read {}", config.get_params_path("sapling-output.params").display())))
};
f.read_to_end(&mut lc.sapling_output)?;
let mut f = match File::open(config.get_params_path("sapling-spend.params")) {
Ok(file) => file,
Err(_) => return Err(Error::new(ErrorKind::NotFound,
format!("Couldn't read {}", config.get_params_path("sapling-spend.params").display())))
};
f.read_to_end(&mut lc.sapling_spend)?;
info!("Created LightClient to {}", &config.server); info!("Created LightClient to {}", &config.server);
println!("Lightclient connecting to {}", config.server); println!("Lightclient connecting to {}", config.server);

17
src/lightwallet/mod.rs

@ -1228,24 +1228,17 @@ pub mod tests {
use super::LightWallet; use super::LightWallet;
use crate::LightClientConfig; use crate::LightClientConfig;
use secp256k1::{Secp256k1, key::PublicKey, key::SecretKey}; use secp256k1::{Secp256k1, key::PublicKey, key::SecretKey};
use crate::SaplingParams;
fn get_sapling_params(config: &LightClientConfig) -> Result<(Vec<u8>, Vec<u8>), Error> { fn get_sapling_params(config: &LightClientConfig) -> Result<(Vec<u8>, Vec<u8>), Error> {
// Read Sapling Params // Read Sapling Params
let mut sapling_output = vec![]; let mut sapling_output = vec![];
let mut f = match File::open(config.get_params_path("sapling-output.params")) { sapling_output.extend_from_slice(SaplingParams::get("sapling-output.params").unwrap().as_ref());
Ok(file) => file, println!("Read output {}", sapling_output.len());
Err(_) => return Err(Error::new(ErrorKind::NotFound,
format!("Couldn't read {}", config.get_params_path("sapling-output.params").display())))
};
f.read_to_end(&mut sapling_output)?;
let mut sapling_spend = vec![]; let mut sapling_spend = vec![];
let mut f = match File::open(config.get_params_path("sapling-spend.params")) { sapling_spend.extend_from_slice(SaplingParams::get("sapling-spend.params").unwrap().as_ref());
Ok(file) => file, println!("Read output {}", sapling_spend.len());
Err(_) => return Err(Error::new(ErrorKind::NotFound,
format!("Couldn't read {}", config.get_params_path("sapling-spend.params").display())))
};
f.read_to_end(&mut sapling_spend)?;
Ok((sapling_spend, sapling_output)) Ok((sapling_spend, sapling_output))
} }

7
src/main.rs

@ -1,3 +1,6 @@
#[macro_use]
extern crate rust_embed;
mod lightclient; mod lightclient;
mod lightwallet; mod lightwallet;
mod address; mod address;
@ -24,6 +27,10 @@ pub mod grpc_client {
include!(concat!(env!("OUT_DIR"), "/cash.z.wallet.sdk.rpc.rs")); include!(concat!(env!("OUT_DIR"), "/cash.z.wallet.sdk.rpc.rs"));
} }
#[derive(RustEmbed)]
#[folder = "zcash-params/"]
pub struct SaplingParams;
pub fn main() { pub fn main() {
// Get command line arguments // Get command line arguments
let matches = App::new("ZecLite CLI") let matches = App::new("ZecLite CLI")

BIN
zcash-params/sapling-output.params

Binary file not shown.

BIN
zcash-params/sapling-spend.params

Binary file not shown.
Loading…
Cancel
Save