From 16ee53a909bf302d3f2952a92dc0146be683c783 Mon Sep 17 00:00:00 2001 From: Deirdre Connolly Date: Wed, 4 Mar 2020 21:37:17 -0500 Subject: [PATCH] Impl zcash_(de)serialize for TransparentAddress --- zebra-chain/src/addresses.rs | 124 +++++++++++++++++++++++++++-------- 1 file changed, 98 insertions(+), 26 deletions(-) diff --git a/zebra-chain/src/addresses.rs b/zebra-chain/src/addresses.rs index 8731fb80..51ec86aa 100644 --- a/zebra-chain/src/addresses.rs +++ b/zebra-chain/src/addresses.rs @@ -1,6 +1,9 @@ //! Address types. +use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt}; +use ripemd160::Ripdemd160; use secp256k1::PublicKey; +use sha2::Sha256; use crate::serialization::{ ReadZcashExt, SerializationError, WriteZcashExt, ZcashDeserialize, ZcashSerialize, @@ -9,32 +12,18 @@ use crate::serialization::{ use crate::types::Script; /// A hash of a redeem script, as used in transparent -/// pay-to-script-hash addresses. +/// pay-to-script-hash and pay-to-publickey-hash addresses. /// +/// The resulting hash in both of these cases is always exactly 20 +/// bytes. These are big-endian. /// https://en.bitcoin.it/Base58Check_encoding#Encoding_a_Bitcoin_address #[derive(Copy, Clone, Eq, PartialEq)] #[cfg_attr(test, derive(Arbitrary))] struct AddressPayloadHash(pub [u8; 20]); -impl From