mirror of
https://github.com/Qortal/piratewallet-light-cli.git
synced 2025-02-11 17:55:47 +00:00
Merge
This commit is contained in:
parent
a9efbac3bd
commit
2c2afcc442
67
Cargo.toml
67
Cargo.toml
@ -4,74 +4,13 @@ version = "0.1.0"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
tower-grpc = { git = "https://github.com/tower-rs/tower-grpc" }
|
rustyline = "5.0.2"
|
||||||
futures = "0.1"
|
clap = "2.33"
|
||||||
bytes = "0.4"
|
|
||||||
base58 = "0.1.0"
|
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
log4rs = "0.8.3"
|
log4rs = "0.8.3"
|
||||||
dirs = "2.0.2"
|
|
||||||
http = "0.1"
|
|
||||||
prost = "0.5"
|
|
||||||
tokio = "0.1"
|
|
||||||
tower-request-modifier = { git = "https://github.com/tower-rs/tower-http" }
|
|
||||||
tower-util = "0.1"
|
|
||||||
hex = "0.3"
|
|
||||||
protobuf = "2"
|
|
||||||
rustyline = "5.0.2"
|
|
||||||
byteorder = "1"
|
|
||||||
json = "0.12.0"
|
|
||||||
shellwords = "1.0.0"
|
shellwords = "1.0.0"
|
||||||
tiny-bip39 = "0.6.2"
|
|
||||||
clap = "2.33"
|
|
||||||
secp256k1 = "=0.15.0"
|
|
||||||
sha2 = "0.8.0"
|
|
||||||
ripemd160 = "0.8.0"
|
|
||||||
ring = "0.14.0"
|
|
||||||
lazy_static = "1.2.0"
|
|
||||||
tower-service = "0.2"
|
|
||||||
tokio-rustls = "0.10.0-alpha.3"
|
|
||||||
rustls = { version = "0.15.2", features = ["dangerous_configuration"] }
|
|
||||||
webpki = "0.19.1"
|
|
||||||
webpki-roots = "0.16.0"
|
|
||||||
tower-h2 = { git = "https://github.com/tower-rs/tower-h2" }
|
|
||||||
rust-embed = "5.1.0"
|
|
||||||
rand = "0.7.2"
|
|
||||||
|
|
||||||
[dependencies.bellman]
|
|
||||||
git = "https://github.com/adityapk00/librustzcash.git"
|
|
||||||
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
|
|
||||||
default-features = false
|
|
||||||
features = ["groth16"]
|
|
||||||
|
|
||||||
[dependencies.pairing]
|
|
||||||
git = "https://github.com/adityapk00/librustzcash.git"
|
|
||||||
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
|
|
||||||
|
|
||||||
[dependencies.zcash_client_backend]
|
|
||||||
git = "https://github.com/adityapk00/librustzcash.git"
|
|
||||||
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
|
|
||||||
default-features = false
|
|
||||||
|
|
||||||
[dependencies.zcash_primitives]
|
|
||||||
git = "https://github.com/adityapk00/librustzcash.git"
|
|
||||||
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
|
|
||||||
default-features = false
|
|
||||||
features = ["transparent-inputs"]
|
|
||||||
|
|
||||||
[dependencies.zcash_proofs]
|
|
||||||
git = "https://github.com/adityapk00/librustzcash.git"
|
|
||||||
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
|
|
||||||
default-features = false
|
|
||||||
|
|
||||||
[dependencies.ff]
|
|
||||||
git = "https://github.com/adityapk00/librustzcash.git"
|
|
||||||
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
|
|
||||||
features = ["ff_derive"]
|
|
||||||
|
|
||||||
[build-dependencies]
|
|
||||||
tower-grpc-build = { git = "https://github.com/tower-rs/tower-grpc", features = ["tower-hyper"] }
|
|
||||||
|
|
||||||
|
zecwalletlitelib = { path = "./lib/" }
|
||||||
|
|
||||||
|
|
||||||
[profile.release]
|
[profile.release]
|
||||||
|
75
lib/Cargo.toml
Normal file
75
lib/Cargo.toml
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
[package]
|
||||||
|
name = "zecwalletlitelib"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
tower-grpc = { git = "https://github.com/tower-rs/tower-grpc" }
|
||||||
|
futures = "0.1"
|
||||||
|
bytes = "0.4"
|
||||||
|
base58 = "0.1.0"
|
||||||
|
log = "0.4"
|
||||||
|
log4rs = "0.8.3"
|
||||||
|
dirs = "2.0.2"
|
||||||
|
http = "0.1"
|
||||||
|
prost = "0.5"
|
||||||
|
tokio = "0.1"
|
||||||
|
tower-request-modifier = { git = "https://github.com/tower-rs/tower-http" }
|
||||||
|
tower-util = "0.1"
|
||||||
|
hex = "0.3"
|
||||||
|
protobuf = "2"
|
||||||
|
byteorder = "1"
|
||||||
|
rand = "0.5.6"
|
||||||
|
json = "0.12.0"
|
||||||
|
tiny-bip39 = "0.6.2"
|
||||||
|
secp256k1 = "=0.15.0"
|
||||||
|
sha2 = "0.8.0"
|
||||||
|
ripemd160 = "0.8.0"
|
||||||
|
ring = "0.14.0"
|
||||||
|
lazy_static = "1.2.0"
|
||||||
|
tower-service = "0.2"
|
||||||
|
tokio-rustls = "0.10.0-alpha.3"
|
||||||
|
webpki = "0.19.1"
|
||||||
|
webpki-roots = "0.16.0"
|
||||||
|
tower-h2 = { git = "https://github.com/tower-rs/tower-h2" }
|
||||||
|
rust-embed = "5.1.0"
|
||||||
|
|
||||||
|
[dependencies.bellman]
|
||||||
|
git = "https://github.com/adityapk00/librustzcash.git"
|
||||||
|
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
|
||||||
|
default-features = false
|
||||||
|
features = ["groth16"]
|
||||||
|
|
||||||
|
[dependencies.pairing]
|
||||||
|
git = "https://github.com/adityapk00/librustzcash.git"
|
||||||
|
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
|
||||||
|
|
||||||
|
[dependencies.zcash_client_backend]
|
||||||
|
git = "https://github.com/adityapk00/librustzcash.git"
|
||||||
|
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
|
||||||
|
default-features = false
|
||||||
|
|
||||||
|
[dependencies.zcash_primitives]
|
||||||
|
git = "https://github.com/adityapk00/librustzcash.git"
|
||||||
|
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
|
||||||
|
default-features = false
|
||||||
|
features = ["transparent-inputs"]
|
||||||
|
|
||||||
|
[dependencies.zcash_proofs]
|
||||||
|
git = "https://github.com/adityapk00/librustzcash.git"
|
||||||
|
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
|
||||||
|
default-features = false
|
||||||
|
|
||||||
|
[dependencies.ff]
|
||||||
|
git = "https://github.com/adityapk00/librustzcash.git"
|
||||||
|
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
|
||||||
|
features = ["ff_derive"]
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
tower-grpc-build = { git = "https://github.com/tower-rs/tower-grpc", features = ["tower-hyper"] }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
rand_core = "0.5.1"
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
debug = false
|
@ -1,7 +1,7 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use json::{object};
|
use json::{object};
|
||||||
|
|
||||||
use crate::LightClient;
|
use crate::lightclient::LightClient;
|
||||||
|
|
||||||
pub trait Command {
|
pub trait Command {
|
||||||
fn help(&self) -> String;
|
fn help(&self) -> String;
|
19
lib/src/lib.rs
Normal file
19
lib/src/lib.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#[macro_use]
|
||||||
|
extern crate rust_embed;
|
||||||
|
|
||||||
|
pub mod lightclient;
|
||||||
|
pub mod grpcconnector;
|
||||||
|
pub mod lightwallet;
|
||||||
|
pub mod commands;
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(RustEmbed)]
|
||||||
|
#[folder = "zcash-params/"]
|
||||||
|
pub struct SaplingParams;
|
||||||
|
|
||||||
|
pub const ANCHOR_OFFSET: u32 = 4;
|
||||||
|
|
||||||
|
|
||||||
|
pub mod grpc_client {
|
||||||
|
include!(concat!(env!("OUT_DIR"), "/cash.z.wallet.sdk.rpc.rs"));
|
||||||
|
}
|
@ -40,7 +40,7 @@ use zcash_primitives::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
use crate::{LightClientConfig};
|
use crate::lightclient::{LightClientConfig};
|
||||||
|
|
||||||
mod data;
|
mod data;
|
||||||
mod extended_key;
|
mod extended_key;
|
||||||
@ -1308,7 +1308,7 @@ pub mod tests {
|
|||||||
use sha2::{Sha256, Digest};
|
use sha2::{Sha256, Digest};
|
||||||
|
|
||||||
use super::LightWallet;
|
use super::LightWallet;
|
||||||
use crate::LightClientConfig;
|
use super::LightClientConfig;
|
||||||
use secp256k1::{Secp256k1, key::PublicKey, key::SecretKey};
|
use secp256k1::{Secp256k1, key::PublicKey, key::SecretKey};
|
||||||
use crate::SaplingParams;
|
use crate::SaplingParams;
|
||||||
|
|
@ -27,17 +27,6 @@ pub enum KeyIndex {
|
|||||||
impl KeyIndex {
|
impl KeyIndex {
|
||||||
|
|
||||||
/// Check index range.
|
/// Check index range.
|
||||||
///
|
|
||||||
/// # Examples
|
|
||||||
///
|
|
||||||
/// ```rust
|
|
||||||
/// # extern crate hdwallet;
|
|
||||||
/// use hdwallet::KeyIndex;
|
|
||||||
///
|
|
||||||
/// assert!(KeyIndex::Normal(0).is_valid());
|
|
||||||
/// assert!(!KeyIndex::Normal(2_147_483_648).is_valid());
|
|
||||||
/// assert!(KeyIndex::Hardened(2_147_483_648).is_valid());
|
|
||||||
/// ```
|
|
||||||
pub fn is_valid(self) -> bool {
|
pub fn is_valid(self) -> bool {
|
||||||
match self {
|
match self {
|
||||||
KeyIndex::Normal(i) => i < HARDENED_KEY_START_INDEX,
|
KeyIndex::Normal(i) => i < HARDENED_KEY_START_INDEX,
|
||||||
@ -46,20 +35,6 @@ impl KeyIndex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Generate Hardened KeyIndex from normalize index value.
|
/// Generate Hardened KeyIndex from normalize index value.
|
||||||
///
|
|
||||||
/// # Examples
|
|
||||||
///
|
|
||||||
/// ```rust
|
|
||||||
/// # extern crate hdwallet;
|
|
||||||
/// use hdwallet::KeyIndex;
|
|
||||||
///
|
|
||||||
/// // hardended key from zero
|
|
||||||
/// let hardened_index_zero = KeyIndex::hardened_from_normalize_index(0).unwrap();
|
|
||||||
/// assert_eq!(hardened_index_zero, KeyIndex::Hardened(2_147_483_648));
|
|
||||||
/// // also allow raw index for convernient
|
|
||||||
/// let hardened_index_zero = KeyIndex::hardened_from_normalize_index(2_147_483_648).unwrap();
|
|
||||||
/// assert_eq!(hardened_index_zero, KeyIndex::Hardened(2_147_483_648));
|
|
||||||
/// ```
|
|
||||||
pub fn hardened_from_normalize_index(i: u32) -> Result<KeyIndex, Error> {
|
pub fn hardened_from_normalize_index(i: u32) -> Result<KeyIndex, Error> {
|
||||||
if i < HARDENED_KEY_START_INDEX {
|
if i < HARDENED_KEY_START_INDEX {
|
||||||
Ok(KeyIndex::Hardened(HARDENED_KEY_START_INDEX + i))
|
Ok(KeyIndex::Hardened(HARDENED_KEY_START_INDEX + i))
|
||||||
@ -69,18 +44,6 @@ impl KeyIndex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Generate KeyIndex from raw index value.
|
/// Generate KeyIndex from raw index value.
|
||||||
///
|
|
||||||
/// # Examples
|
|
||||||
///
|
|
||||||
/// ```rust
|
|
||||||
/// # extern crate hdwallet;
|
|
||||||
/// use hdwallet::KeyIndex;
|
|
||||||
///
|
|
||||||
/// let normal_key = KeyIndex::from_index(0).unwrap();
|
|
||||||
/// assert_eq!(normal_key, KeyIndex::Normal(0));
|
|
||||||
/// let hardened_key = KeyIndex::from_index(2_147_483_648).unwrap();
|
|
||||||
/// assert_eq!(hardened_key, KeyIndex::Hardened(2_147_483_648));
|
|
||||||
/// ```
|
|
||||||
pub fn from_index(i: u32) -> Result<Self, Error> {
|
pub fn from_index(i: u32) -> Result<Self, Error> {
|
||||||
if i < HARDENED_KEY_START_INDEX {
|
if i < HARDENED_KEY_START_INDEX {
|
||||||
Ok(KeyIndex::Normal(i))
|
Ok(KeyIndex::Normal(i))
|
||||||
@ -99,19 +62,6 @@ impl From<u32> for KeyIndex {
|
|||||||
|
|
||||||
/// ExtendedPrivKey is used for child key derivation.
|
/// ExtendedPrivKey is used for child key derivation.
|
||||||
/// See [secp256k1 crate documentation](https://docs.rs/secp256k1) for SecretKey signatures usage.
|
/// See [secp256k1 crate documentation](https://docs.rs/secp256k1) for SecretKey signatures usage.
|
||||||
///
|
|
||||||
/// # Examples
|
|
||||||
///
|
|
||||||
/// ```rust
|
|
||||||
/// # extern crate hdwallet;
|
|
||||||
/// use hdwallet::{ExtendedPrivKey, KeyIndex};
|
|
||||||
///
|
|
||||||
/// let master_key = ExtendedPrivKey::random().unwrap();
|
|
||||||
/// let hardened_key_index = KeyIndex::hardened_from_normalize_index(0).unwrap();
|
|
||||||
/// let hardended_child_priv_key = master_key.derive_private_key(hardened_key_index).unwrap();
|
|
||||||
/// let normal_key_index = KeyIndex::Normal(0);
|
|
||||||
/// let noamal_child_priv_key = master_key.derive_private_key(normal_key_index).unwrap();
|
|
||||||
/// ```
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
pub struct ExtendedPrivKey {
|
pub struct ExtendedPrivKey {
|
||||||
pub private_key: SecretKey,
|
pub private_key: SecretKey,
|
BIN
lib/zcash-params/sapling-output.params
Normal file
BIN
lib/zcash-params/sapling-output.params
Normal file
Binary file not shown.
BIN
lib/zcash-params/sapling-spend.params
Normal file
BIN
lib/zcash-params/sapling-spend.params
Normal file
Binary file not shown.
22
src/main.rs
22
src/main.rs
@ -1,17 +1,12 @@
|
|||||||
#[macro_use]
|
|
||||||
extern crate rust_embed;
|
|
||||||
|
|
||||||
mod lightclient;
|
|
||||||
mod grpcconnector;
|
|
||||||
mod lightwallet;
|
|
||||||
mod commands;
|
|
||||||
|
|
||||||
use std::io::{Result, Error, ErrorKind};
|
use std::io::{Result, Error, ErrorKind};
|
||||||
use std::sync::{Arc};
|
use std::sync::{Arc};
|
||||||
use std::sync::mpsc::{channel, Sender, Receiver};
|
use std::sync::mpsc::{channel, Sender, Receiver};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
use lightclient::{LightClient, LightClientConfig};
|
use zecwalletlitelib::{grpcconnector, commands,
|
||||||
|
lightclient::{self, LightClient, LightClientConfig},
|
||||||
|
ANCHOR_OFFSET,
|
||||||
|
};
|
||||||
|
|
||||||
use log::{info, error, LevelFilter};
|
use log::{info, error, LevelFilter};
|
||||||
use log4rs::append::rolling_file::RollingFileAppender;
|
use log4rs::append::rolling_file::RollingFileAppender;
|
||||||
@ -29,15 +24,6 @@ use rustyline::Editor;
|
|||||||
|
|
||||||
use clap::{Arg, App};
|
use clap::{Arg, App};
|
||||||
|
|
||||||
pub mod grpc_client {
|
|
||||||
include!(concat!(env!("OUT_DIR"), "/cash.z.wallet.sdk.rpc.rs"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(RustEmbed)]
|
|
||||||
#[folder = "zcash-params/"]
|
|
||||||
pub struct SaplingParams;
|
|
||||||
|
|
||||||
const ANCHOR_OFFSET: u32 = 4;
|
|
||||||
|
|
||||||
/// Build the Logging config
|
/// Build the Logging config
|
||||||
fn get_log_config(config: &LightClientConfig) -> Result<Config> {
|
fn get_log_config(config: &LightClientConfig) -> Result<Config> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user