* Update librustzcash dep

* Update to latest librustzcash
This commit is contained in:
adityapk00
2020-06-06 18:12:57 -07:00
committed by GitHub
parent bade32c102
commit 2f3e69eba0
6 changed files with 108 additions and 155 deletions

View File

@@ -39,33 +39,33 @@ webpki-roots = "0.18.0"
[dependencies.bellman]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "98f9bda32957a6d7f0011c9a6adec13b5b80ea94"
rev = "ff0ffc3d1b8bc36a0ad4b6b0f06aa3ca5900d3e4"
default-features = false
features = ["groth16"]
[dependencies.pairing]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "98f9bda32957a6d7f0011c9a6adec13b5b80ea94"
rev = "ff0ffc3d1b8bc36a0ad4b6b0f06aa3ca5900d3e4"
[dependencies.zcash_client_backend]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "98f9bda32957a6d7f0011c9a6adec13b5b80ea94"
rev = "ff0ffc3d1b8bc36a0ad4b6b0f06aa3ca5900d3e4"
default-features = false
[dependencies.zcash_primitives]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "98f9bda32957a6d7f0011c9a6adec13b5b80ea94"
rev = "ff0ffc3d1b8bc36a0ad4b6b0f06aa3ca5900d3e4"
default-features = false
features = ["transparent-inputs"]
[dependencies.zcash_proofs]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "98f9bda32957a6d7f0011c9a6adec13b5b80ea94"
rev = "ff0ffc3d1b8bc36a0ad4b6b0f06aa3ca5900d3e4"
default-features = false
[dependencies.ff]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "98f9bda32957a6d7f0011c9a6adec13b5b80ea94"
rev = "ff0ffc3d1b8bc36a0ad4b6b0f06aa3ca5900d3e4"
features = ["ff_derive"]
[build-dependencies]

View File

@@ -4,6 +4,7 @@ use std::cmp;
use std::collections::{HashMap, HashSet};
use std::sync::{Arc, RwLock};
use std::io::{Error, ErrorKind};
use std::convert::TryFrom;
use rand::{Rng, rngs::OsRng};
@@ -28,12 +29,13 @@ use zcash_primitives::{
block::BlockHash,
merkle_tree::{CommitmentTree},
serialize::{Vector},
consensus::BranchId,
transaction::{
builder::{Builder},
components::{Amount, OutPoint, TxOut}, components::amount::DEFAULT_FEE,
TxId, Transaction,
},
legacy::{Script, TransparentAddress},
legacy::{Script, TransparentAddress},
note_encryption::{Memo, try_sapling_note_decryption, try_sapling_output_recovery},
zip32::{ExtendedFullViewingKey, ExtendedSpendingKey, ChildIndex},
JUBJUB,
@@ -411,7 +413,7 @@ impl LightWallet {
}
pub fn note_address(hrp: &str, note: &SaplingNoteData) -> Option<String> {
match note.extfvk.fvk.vk.into_payment_address(note.diversifier, &JUBJUB) {
match note.extfvk.fvk.vk.to_payment_address(note.diversifier, &JUBJUB) {
Some(pa) => Some(encode_payment_address(hrp, &pa)),
None => None
}
@@ -793,7 +795,7 @@ impl LightWallet {
Some(a) => a == encode_payment_address(
self.config.hrp_sapling_address(),
&nd.extfvk.fvk.vk
.into_payment_address(nd.diversifier, &JUBJUB).unwrap()
.to_payment_address(nd.diversifier, &JUBJUB).unwrap()
),
None => true
}
@@ -847,7 +849,7 @@ impl LightWallet {
Some(a) => a == encode_payment_address(
self.config.hrp_sapling_address(),
&nd.extfvk.fvk.vk
.into_payment_address(nd.diversifier, &JUBJUB).unwrap()
.to_payment_address(nd.diversifier, &JUBJUB).unwrap()
),
None => true
}
@@ -1542,7 +1544,7 @@ impl LightWallet {
})
.collect::<Result<Vec<_>, _>>()
.map_err(|e| format!("{}", e))?;
.map_err(|e| format!("{:?}", e))?;
// Confirm we were able to select sufficient value
@@ -1566,7 +1568,7 @@ impl LightWallet {
selected.extsk.clone(),
selected.diversifier,
selected.note.clone(),
selected.witness.clone(),
selected.witness.path().unwrap(),
) {
let e = format!("Error adding note: {:?}", e);
error!("{}", e);
@@ -1590,7 +1592,7 @@ impl LightWallet {
// Compute memo if it exists
let encoded_memo = match memo {
None => None,
Some(s) => match Memo::from_str(&s) {
Some(s) => match Memo::from_bytes(s.as_bytes()) {
None => {
let e = format!("Error creating output. Memo {:?} is too long", s);
error!("{}", e);
@@ -1619,8 +1621,8 @@ impl LightWallet {
println!("{}: Building transaction", now() - start_time);
let (tx, _) = match builder.build(
consensus_branch_id,
prover::InMemTxProver::new(spend_params, output_params),
BranchId::try_from(consensus_branch_id).unwrap(),
&prover::InMemTxProver::new(spend_params, output_params),
) {
Ok(res) => res,
Err(e) => {
@@ -1669,7 +1671,7 @@ impl LightWallet {
Some(s) => {
// If the address is not a z-address, then drop the memo
if LightWallet::is_shielded_address(&addr.to_string(), &self.config) {
Memo::from_str(s).unwrap()
Memo::from_bytes(s.as_bytes()).unwrap()
} else {
Memo::default()
}

View File

@@ -2,7 +2,7 @@ use std::io::{self, Read, Write};
use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt};
use pairing::bls12_381::{Bls12};
use ff::{PrimeField, PrimeFieldRepr};
use ff::{PrimeField};
use zcash_primitives::{
block::BlockHash,
@@ -18,7 +18,6 @@ use zcash_primitives::{
JUBJUB,
primitives::{Diversifier, Note,},
jubjub::{
JubjubEngine,
fs::{Fs, FsRepr},
}
};
@@ -83,8 +82,8 @@ pub struct SaplingNoteData {
fn read_fs(from: &[u8]) -> FsRepr {
assert_eq!(from.len(), 32);
let mut f = <<Bls12 as JubjubEngine>::Fs as PrimeField>::Repr::default();
f.read_le(from).expect("length is 32 bytes");
let mut f = FsRepr::default();
f.0.copy_from_slice(&from);
f
}
@@ -97,8 +96,8 @@ pub fn read_note<R: Read>(mut reader: R) -> io::Result<(u64, Fs)> {
reader.read_exact(&mut r_bytes)?;
let r = match Fs::from_repr(read_fs(&r_bytes)) {
Ok(r) => r,
Err(_) => return Err(io::Error::new(
Some(r) => r,
None => return Err(io::Error::new(
io::ErrorKind::InvalidInput, "Couldn't parse randomness"))
};
@@ -128,7 +127,7 @@ impl SaplingNoteData {
SaplingNoteData {
account: output.account,
extfvk: extfvk.clone(),
diversifier: output.to.diversifier,
diversifier: *output.to.diversifier(),
note: output.note,
witnesses: vec![witness],
nullifier: nf,
@@ -156,7 +155,7 @@ impl SaplingNoteData {
// to recreate the note
let (value, r) = read_note(&mut reader)?; // TODO: This method is in a different package, because of some fields that are private
let maybe_note = extfvk.fvk.vk.into_payment_address(diversifier, &JUBJUB).unwrap().create_note(value, r, &JUBJUB);
let maybe_note = extfvk.fvk.vk.to_payment_address(diversifier, &JUBJUB).unwrap().create_note(value, r, &JUBJUB);
let note = match maybe_note {
Some(n) => Ok(n),
@@ -216,9 +215,7 @@ impl SaplingNoteData {
// from these 2 values and the Payment address.
writer.write_u64::<LittleEndian>(self.note.value)?;
let mut rcm = [0; 32];
self.note.r.into_repr().write_le(&mut rcm[..])?;
writer.write_all(&rcm)?;
writer.write_all(&self.note.r.to_repr().0)?;
Vector::write(&mut writer, &self.witnesses, |wr, wi| wi.write(wr) )?;

View File

@@ -9,7 +9,8 @@ use zcash_primitives::{
transaction::components::Amount
};
use zcash_primitives::{
merkle_tree::CommitmentTreeWitness, prover::TxProver, sapling::Node,
merkle_tree::{MerklePath},
prover::TxProver, sapling::Node,
transaction::components::GROTH_PROOF_SIZE, JUBJUB,
};
use zcash_proofs::sapling::SaplingProvingContext;
@@ -57,7 +58,7 @@ impl TxProver for InMemTxProver {
ar: Fs,
value: u64,
anchor: Fr,
witness: CommitmentTreeWitness<Node>,
witness: MerklePath<Node>,
) -> Result<
(
[u8; GROTH_PROOF_SIZE],

View File

@@ -2,7 +2,7 @@ use std::convert::TryInto;
use std::io::{Error};
use rand::{RngCore, rngs::OsRng};
use ff::{Field, PrimeField, PrimeFieldRepr};
use ff::{Field, PrimeField};
use pairing::bls12_381::Bls12;
use protobuf::{Message, UnknownFields, CachedSize, RepeatedField};
use zcash_client_backend::{encoding::encode_payment_address,
@@ -85,7 +85,7 @@ impl FakeCompactBlock {
let mut c_out = CompactOutput::default();
let mut cmu_bytes = vec![];
o.cmu.into_repr().write_le(&mut cmu_bytes).unwrap();
cmu_bytes.extend_from_slice(&o.cmu.to_repr().0);
let mut epk_bytes = vec![];
o.ephemeral_key.write(&mut epk_bytes).unwrap();
@@ -124,8 +124,8 @@ impl FakeCompactBlock {
// Create a fake Note for the account
let mut rng = OsRng;
let note = Note {
g_d: to.diversifier.g_d::<Bls12>(&JUBJUB).unwrap(),
pk_d: to.pk_d.clone(),
g_d: to.diversifier().g_d::<Bls12>(&JUBJUB).unwrap(),
pk_d: to.pk_d().clone(),
value: value.into(),
r: Fs::random(&mut rng),
};
@@ -137,7 +137,7 @@ impl FakeCompactBlock {
&mut rng,
);
let mut cmu = vec![];
note.cm(&JUBJUB).into_repr().write_le(&mut cmu).unwrap();
cmu.extend_from_slice(&note.cm(&JUBJUB).to_repr().0);
let mut epk = vec![];
encryptor.epk().write(&mut epk).unwrap();
let enc_ciphertext = encryptor.encrypt_note_plaintext();
@@ -179,8 +179,8 @@ impl FakeCompactBlock {
// Create a fake Note for the payment
ctx.outputs.push({
let note = Note {
g_d: to.diversifier.g_d::<Bls12>(&JUBJUB).unwrap(),
pk_d: to.pk_d.clone(),
g_d: to.diversifier().g_d::<Bls12>(&JUBJUB).unwrap(),
pk_d: to.pk_d().clone(),
value: value.into(),
r: Fs::random(&mut rng),
};
@@ -192,7 +192,7 @@ impl FakeCompactBlock {
&mut rng,
);
let mut cmu = vec![];
note.cm(&JUBJUB).into_repr().write_le(&mut cmu).unwrap();
cmu.extend_from_slice(&note.cm(&JUBJUB).to_repr().0);
let mut epk = vec![];
encryptor.epk().write(&mut epk).unwrap();
let enc_ciphertext = encryptor.encrypt_note_plaintext();
@@ -208,8 +208,8 @@ impl FakeCompactBlock {
ctx.outputs.push({
let change_addr = extfvk.default_address().unwrap().1;
let note = Note {
g_d: change_addr.diversifier.g_d::<Bls12>(&JUBJUB).unwrap(),
pk_d: change_addr.pk_d.clone(),
g_d: change_addr.diversifier().g_d::<Bls12>(&JUBJUB).unwrap(),
pk_d: change_addr.pk_d().clone(),
value: (in_value - value).into(),
r: Fs::random(&mut rng),
};
@@ -221,7 +221,7 @@ impl FakeCompactBlock {
&mut rng,
);
let mut cmu = vec![];
note.cm(&JUBJUB).into_repr().write_le(&mut cmu).unwrap();
cmu.extend_from_slice(&note.cm(&JUBJUB).to_repr().0);
let mut epk = vec![];
encryptor.epk().write(&mut epk).unwrap();
let enc_ciphertext = encryptor.encrypt_note_plaintext();