From cee7d0b8eb78590084533c947fa2cc044d118e8c Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Fri, 14 Aug 2020 23:06:03 -0700 Subject: [PATCH] chain: move serde_helpers into serialization. --- zebra-chain/src/commitments/sapling.rs | 5 +++-- zebra-chain/src/equihash_solution.rs | 8 +++----- zebra-chain/src/keys/sapling.rs | 5 +++-- zebra-chain/src/lib.rs | 1 - zebra-chain/src/notes/sapling/ciphertexts.rs | 5 +---- zebra-chain/src/notes/sprout/ciphertexts.rs | 5 +---- zebra-chain/src/proofs/bctv14.rs | 3 +-- zebra-chain/src/proofs/groth16.rs | 3 +-- zebra-chain/src/serialization.rs | 2 ++ .../src/{ => serialization}/serde_helpers.rs | 18 +++++++++--------- zebra-chain/src/transaction/shielded_data.rs | 2 +- 11 files changed, 25 insertions(+), 32 deletions(-) rename zebra-chain/src/{ => serialization}/serde_helpers.rs (69%) diff --git a/zebra-chain/src/commitments/sapling.rs b/zebra-chain/src/commitments/sapling.rs index d6aca751..9b5f8e57 100644 --- a/zebra-chain/src/commitments/sapling.rs +++ b/zebra-chain/src/commitments/sapling.rs @@ -14,8 +14,9 @@ use rand_core::{CryptoRng, RngCore}; use crate::{ keys::sapling::{find_group_hash, Diversifier, TransmissionKey}, - serde_helpers, - serialization::{ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize}, + serialization::{ + serde_helpers, ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize, + }, types::amount::{Amount, NonNegative}, }; diff --git a/zebra-chain/src/equihash_solution.rs b/zebra-chain/src/equihash_solution.rs index c411e62d..b9ce5c86 100644 --- a/zebra-chain/src/equihash_solution.rs +++ b/zebra-chain/src/equihash_solution.rs @@ -1,10 +1,8 @@ //! Equihash Solution and related items. -use crate::{ - serde_helpers, - serialization::{ - ReadZcashExt, SerializationError, WriteZcashExt, ZcashDeserialize, ZcashSerialize, - }, +use crate::serialization::{ + serde_helpers, ReadZcashExt, SerializationError, WriteZcashExt, ZcashDeserialize, + ZcashSerialize, }; use std::{fmt, io}; diff --git a/zebra-chain/src/keys/sapling.rs b/zebra-chain/src/keys/sapling.rs index 9657062f..b79590e0 100644 --- a/zebra-chain/src/keys/sapling.rs +++ b/zebra-chain/src/keys/sapling.rs @@ -31,8 +31,9 @@ use proptest_derive::Arbitrary; use crate::{ redjubjub::{self, SpendAuth}, - serde_helpers, - serialization::{ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize}, + serialization::{ + serde_helpers, ReadZcashExt, SerializationError, ZcashDeserialize, ZcashSerialize, + }, Network, }; diff --git a/zebra-chain/src/lib.rs b/zebra-chain/src/lib.rs index 2fc7fe67..f36ad1bb 100644 --- a/zebra-chain/src/lib.rs +++ b/zebra-chain/src/lib.rs @@ -12,7 +12,6 @@ extern crate serde; mod merkle_tree; -mod serde_helpers; pub mod addresses; pub mod block; diff --git a/zebra-chain/src/notes/sapling/ciphertexts.rs b/zebra-chain/src/notes/sapling/ciphertexts.rs index e68f90f6..b1f8090c 100644 --- a/zebra-chain/src/notes/sapling/ciphertexts.rs +++ b/zebra-chain/src/notes/sapling/ciphertexts.rs @@ -3,10 +3,7 @@ use std::{fmt, io}; #[cfg(test)] use proptest::{arbitrary::any, prelude::*}; -use crate::{ - serde_helpers, - serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}, -}; +use crate::serialization::{serde_helpers, SerializationError, ZcashDeserialize, ZcashSerialize}; /// A ciphertext component for encrypted output notes. #[derive(Deserialize, Serialize)] diff --git a/zebra-chain/src/notes/sprout/ciphertexts.rs b/zebra-chain/src/notes/sprout/ciphertexts.rs index f99a2cd7..414c44d3 100644 --- a/zebra-chain/src/notes/sprout/ciphertexts.rs +++ b/zebra-chain/src/notes/sprout/ciphertexts.rs @@ -5,10 +5,7 @@ use proptest::{arbitrary::any, prelude::*}; use serde::{Deserialize, Serialize}; -use crate::{ - serde_helpers, - serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}, -}; +use crate::serialization::{serde_helpers, SerializationError, ZcashDeserialize, ZcashSerialize}; /// A ciphertext component for encrypted output notes. #[derive(Serialize, Deserialize)] diff --git a/zebra-chain/src/proofs/bctv14.rs b/zebra-chain/src/proofs/bctv14.rs index 88b9a228..638d6686 100644 --- a/zebra-chain/src/proofs/bctv14.rs +++ b/zebra-chain/src/proofs/bctv14.rs @@ -2,8 +2,7 @@ use std::{fmt, io}; use serde::{Deserialize, Serialize}; -use crate::serde_helpers; -use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}; +use crate::serialization::{serde_helpers, SerializationError, ZcashDeserialize, ZcashSerialize}; /// An encoding of a BCTV14 proof, as used in Zcash. #[derive(Serialize, Deserialize)] diff --git a/zebra-chain/src/proofs/groth16.rs b/zebra-chain/src/proofs/groth16.rs index 4ff6f772..a1c13072 100644 --- a/zebra-chain/src/proofs/groth16.rs +++ b/zebra-chain/src/proofs/groth16.rs @@ -1,8 +1,7 @@ use serde::{Deserialize, Serialize}; use std::{fmt, io}; -use crate::serde_helpers; -use crate::serialization::{SerializationError, ZcashDeserialize, ZcashSerialize}; +use crate::serialization::{serde_helpers, SerializationError, ZcashDeserialize, ZcashSerialize}; /// An encoding of a Groth16 proof, as used in Zcash. #[derive(Serialize, Deserialize)] diff --git a/zebra-chain/src/serialization.rs b/zebra-chain/src/serialization.rs index 834f2bee..8d17ae21 100644 --- a/zebra-chain/src/serialization.rs +++ b/zebra-chain/src/serialization.rs @@ -12,6 +12,8 @@ mod write_zcash; mod zcash_deserialize; mod zcash_serialize; +pub(crate) mod serde_helpers; + pub mod sha256d; pub use error::SerializationError; diff --git a/zebra-chain/src/serde_helpers.rs b/zebra-chain/src/serialization/serde_helpers.rs similarity index 69% rename from zebra-chain/src/serde_helpers.rs rename to zebra-chain/src/serialization/serde_helpers.rs index e49da915..7c40c253 100644 --- a/zebra-chain/src/serde_helpers.rs +++ b/zebra-chain/src/serialization/serde_helpers.rs @@ -1,18 +1,18 @@ -use super::equihash_solution::EQUIHASH_SOLUTION_SIZE; use serde_big_array::big_array; big_array! { BigArray; - +EQUIHASH_SOLUTION_SIZE, - 80, // `sapling::OutCiphertext` - 580, // `sapling::EncryptedCiphertext` - 601, // `sprout::EncryptedCiphertext` - 296, // `bctv14::Bctv14Proof` + + 1344, // `EquihashSolution` + 80, // `sapling::OutCiphertext` + 580, // `sapling::EncryptedCiphertext` + 601, // `sprout::EncryptedCiphertext` + 296, // `Bctv14Proof` + 196, // `Groth16Proof` } #[derive(Deserialize, Serialize)] #[serde(remote = "jubjub::AffinePoint")] -pub(crate) struct AffinePoint { +pub struct AffinePoint { #[serde(getter = "jubjub::AffinePoint::to_bytes")] bytes: [u8; 32], } @@ -25,7 +25,7 @@ impl From for jubjub::AffinePoint { #[derive(Deserialize, Serialize)] #[serde(remote = "jubjub::Fq")] -pub(crate) struct Fq { +pub struct Fq { #[serde(getter = "jubjub::Fq::to_bytes")] bytes: [u8; 32], } @@ -38,7 +38,7 @@ impl From for jubjub::Fq { #[derive(Deserialize, Serialize)] #[serde(remote = "futures::future::Either")] -pub(crate) enum Either { +pub enum Either { Left(A), Right(B), } diff --git a/zebra-chain/src/transaction/shielded_data.rs b/zebra-chain/src/transaction/shielded_data.rs index 50342426..90f9ac13 100644 --- a/zebra-chain/src/transaction/shielded_data.rs +++ b/zebra-chain/src/transaction/shielded_data.rs @@ -2,7 +2,7 @@ use crate::{ commitments, keys, notes, proofs::Groth16Proof, redjubjub::{self, Binding, SpendAuth}, - serde_helpers, + serialization::serde_helpers, treestate::note_commitment_tree::SaplingNoteTreeRootHash, }; use futures::future::Either;