From 72ddc7d7a1320b2f3666d0bf0b6993cc6b2ff5c5 Mon Sep 17 00:00:00 2001 From: Deirdre Connolly Date: Mon, 2 Mar 2020 18:24:31 -0500 Subject: [PATCH] Add AddressPayloadHash type Includes From impls for Script, secp256k1::PublicKey --- Cargo.lock | 12 ++++++ zebra-chain/Cargo.toml | 1 + zebra-chain/src/addresses.rs | 58 +++++++++++++++++++++++++++++ zebra-chain/src/keys/transparent.rs | 4 +- 4 files changed, 72 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5a451b5c..36306cf7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1364,6 +1364,17 @@ dependencies = [ "winapi 0.3.8", ] +[[package]] +name = "ripemd160" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad5112e0dbbb87577bfbc56c42450235e3012ce336e29c5befd7807bd626da4a" +dependencies = [ + "block-buffer", + "digest", + "opaque-debug", +] + [[package]] name = "rustc-demangle" version = "0.1.16" @@ -2034,6 +2045,7 @@ dependencies = [ "proptest", "proptest-derive", "redjubjub", + "ripemd160", "secp256k1", "sha2", "thiserror", diff --git a/zebra-chain/Cargo.toml b/zebra-chain/Cargo.toml index bb7cef76..907aab35 100644 --- a/zebra-chain/Cargo.toml +++ b/zebra-chain/Cargo.toml @@ -13,6 +13,7 @@ chrono = "0.4" futures = "0.3" hex = "0.4" lazy_static = "1.4.0" +ripemd160 = "0.8.0" secp256k1 = "0.17.2" sha2 = "0.8" thiserror = "1" diff --git a/zebra-chain/src/addresses.rs b/zebra-chain/src/addresses.rs index ac30a0d7..8731fb80 100644 --- a/zebra-chain/src/addresses.rs +++ b/zebra-chain/src/addresses.rs @@ -1,6 +1,64 @@ //! Address types. +use secp256k1::PublicKey; + +use crate::serialization::{ + ReadZcashExt, SerializationError, WriteZcashExt, ZcashDeserialize, ZcashSerialize, +}; + +use crate::types::Script; + +/// A hash of a redeem script, as used in transparent +/// pay-to-script-hash addresses. +/// +/// 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