mirror of
https://github.com/Qortal/piratewallet-light-cli.git
synced 2025-01-30 18:42:15 +00:00
Cleanup
This commit is contained in:
parent
7ebc8686ed
commit
c2e26fbbca
@ -6,7 +6,7 @@ use std::io::{self, Read, Write};
|
||||
|
||||
|
||||
use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt};
|
||||
use pairing::bls12_381::{Bls12, Fr, FrRepr};
|
||||
use pairing::bls12_381::{Bls12};
|
||||
use zcash_primitives::primitives::{Diversifier, Note, PaymentAddress, /*read_note */ };
|
||||
use std::cmp;
|
||||
use std::collections::HashMap;
|
||||
@ -31,7 +31,8 @@ use zcash_primitives::{
|
||||
zip32::{ExtendedFullViewingKey, ExtendedSpendingKey},
|
||||
JUBJUB,
|
||||
};
|
||||
use zcash_primitives::jubjub::{edwards, FixedGenerators, JubjubEngine, JubjubParams, PrimeOrder,
|
||||
use zcash_primitives::jubjub::{
|
||||
JubjubEngine,
|
||||
fs::{Fs, FsRepr},
|
||||
};
|
||||
|
||||
@ -137,6 +138,10 @@ pub fn read_note<R: Read>(mut reader: R) -> io::Result<(u64, Fs)> {
|
||||
}
|
||||
|
||||
impl SaplingNoteData {
|
||||
fn serialized_version() -> u64 {
|
||||
1
|
||||
}
|
||||
|
||||
fn new(
|
||||
extfvk: &ExtendedFullViewingKey,
|
||||
output: zcash_client_backend::wallet::WalletShieldedOutput
|
||||
@ -166,27 +171,21 @@ impl SaplingNoteData {
|
||||
|
||||
// Reading a note also needs the corresponding address to read from.
|
||||
pub fn read<R: Read>(mut reader: R) -> io::Result<Self> {
|
||||
println!("Trying to read sapling note data");
|
||||
// Read the version number first
|
||||
let version = reader.read_u64::<LittleEndian>()?;
|
||||
println!("SaplingNoteData version {}", version);
|
||||
assert_eq!(version, SaplingNoteData::serialized_version());
|
||||
|
||||
let account = reader.read_u64::<LittleEndian>()? as usize;
|
||||
|
||||
println!("Trying to read extfvk");
|
||||
let extfvk = ExtendedFullViewingKey::read(&mut reader)?;
|
||||
|
||||
println!("Trying to read diversifier");
|
||||
let mut diversifier_bytes = [0u8; 11];
|
||||
reader.read_exact(&mut diversifier_bytes)?;
|
||||
let diversifier = Diversifier{0: diversifier_bytes};
|
||||
|
||||
// To recover the note, read the value and r, and then use the payment address
|
||||
// to recreate the note
|
||||
println!("Reading value and r");
|
||||
let (value, r) = read_note(&mut reader)?; // TODO: This method is in a different package, because of some fields that are private
|
||||
|
||||
println!("Reading note");
|
||||
let maybe_note = extfvk.fvk.vk.into_payment_address(diversifier, &JUBJUB).unwrap().create_note(value, r, &JUBJUB);
|
||||
|
||||
let note = match maybe_note {
|
||||
@ -228,11 +227,10 @@ impl SaplingNoteData {
|
||||
|
||||
pub fn write<W: Write>(&self, mut writer: W) -> io::Result<()> {
|
||||
// Write a version number first, so we can later upgrade this if needed.
|
||||
writer.write_u64::<LittleEndian>(1)?;
|
||||
writer.write_u64::<LittleEndian>(SaplingNoteData::serialized_version())?;
|
||||
|
||||
writer.write_u64::<LittleEndian>(self.account as u64)?;
|
||||
|
||||
println!("Writing extfvk {:?}", self.extfvk);
|
||||
self.extfvk.write(&mut writer)?;
|
||||
|
||||
writer.write_all(&self.diversifier.0)?;
|
||||
@ -262,11 +260,12 @@ pub struct WalletTx {
|
||||
}
|
||||
|
||||
impl WalletTx {
|
||||
|
||||
pub fn serialized_version() -> u64 {
|
||||
return 1;
|
||||
}
|
||||
pub fn read<R: Read>(mut reader: R) -> io::Result<Self> {
|
||||
let version = reader.read_u64::<LittleEndian>()?;
|
||||
println!("Wallet version {}", version);
|
||||
// TODO Assert version?
|
||||
assert_eq!(version, WalletTx::serialized_version());
|
||||
|
||||
let block = reader.read_i32::<LittleEndian>()?;
|
||||
|
||||
@ -279,7 +278,7 @@ impl WalletTx {
|
||||
}
|
||||
|
||||
pub fn write<W: Write>(&self, mut writer: W) -> io::Result<()> {
|
||||
writer.write_u64::<LittleEndian>(1)?;
|
||||
writer.write_u64::<LittleEndian>(WalletTx::serialized_version())?;
|
||||
|
||||
writer.write_i32::<LittleEndian>(self.block)?;
|
||||
|
||||
@ -324,14 +323,15 @@ pub struct LightWallet {
|
||||
}
|
||||
|
||||
impl LightWallet {
|
||||
pub fn new() -> Self {
|
||||
pub fn serialized_version() -> u64 {
|
||||
return 1;
|
||||
}
|
||||
|
||||
pub fn new() -> Self {
|
||||
let extsk = ExtendedSpendingKey::master(&[1; 32]); // New key
|
||||
let extfvk = ExtendedFullViewingKey::from(&extsk);
|
||||
let address = extfvk.default_address().unwrap().1;
|
||||
|
||||
println!("extfvk is {:?}", extfvk);
|
||||
|
||||
LightWallet {
|
||||
extsks: [extsk],
|
||||
extfvks: [extfvk],
|
||||
@ -343,7 +343,7 @@ impl LightWallet {
|
||||
|
||||
pub fn read<R: Read>(mut reader: R) -> io::Result<Self> {
|
||||
let version = reader.read_u64::<LittleEndian>()?;
|
||||
println!("LightWallet version {}", version);
|
||||
assert_eq!(version, LightWallet::serialized_version());
|
||||
|
||||
let blocks = Vector::read(&mut reader, |r| BlockData::read(r))?;
|
||||
|
||||
@ -371,7 +371,7 @@ impl LightWallet {
|
||||
|
||||
pub fn write<W: Write>(&self, mut writer: W) -> io::Result<()> {
|
||||
// Write the version
|
||||
writer.write_u64::<LittleEndian>(1)?;
|
||||
writer.write_u64::<LittleEndian>(LightWallet::serialized_version())?;
|
||||
|
||||
// TODO: Write the keys properly. Right now, they're just hardcoded
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user