Add `from_script` method to Address for generating P2SH addresses
This commit is contained in:
parent
ed34bb30f1
commit
38d2ef5d73
|
@ -1,7 +1,7 @@
|
|||
|
||||
[package]
|
||||
name = "bitcoin"
|
||||
version = "0.3.3"
|
||||
version = "0.3.4"
|
||||
authors = ["Andrew Poelstra <apoelstra@wpsoftware.net>"]
|
||||
license = "CC0-1.0"
|
||||
homepage = "https://github.com/apoelstra/rust-bitcoin/"
|
||||
|
|
|
@ -63,6 +63,16 @@ impl Address {
|
|||
}
|
||||
}
|
||||
|
||||
/// Creates a P2SH address from a script
|
||||
#[inline]
|
||||
pub fn from_script(network: Network, script: &script::Script) -> Address {
|
||||
Address {
|
||||
ty: Type::ScriptHash,
|
||||
network: network,
|
||||
hash: Hash160::from_data(&script[..])
|
||||
}
|
||||
}
|
||||
|
||||
/// Generates a script pubkey spending to this address
|
||||
#[inline]
|
||||
pub fn script_pubkey(&self) -> script::Script {
|
||||
|
@ -253,6 +263,15 @@ mod tests {
|
|||
assert_eq!(FromBase58::from_base58check("33iFwdLuRpW1uK1RTRqsoi8rR4NpDzk66k"), Ok(addr));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_p2sh_parse() {
|
||||
let script = hex_script!("552103a765fc35b3f210b95223846b36ef62a4e53e34e2925270c2c7906b92c9f718eb2103c327511374246759ec8d0b89fa6c6b23b33e11f92c5bc155409d86de0c79180121038cae7406af1f12f4786d820a1466eec7bc5785a1b5e4a387eca6d797753ef6db2103252bfb9dcaab0cd00353f2ac328954d791270203d66c2be8b430f115f451b8a12103e79412d42372c55dd336f2eb6eb639ef9d74a22041ba79382c74da2338fe58ad21035049459a4ebc00e876a9eef02e72a3e70202d3d1f591fc0dd542f93f642021f82102016f682920d9723c61b27f562eb530c926c00106004798b6471e8c52c60ee02057ae");
|
||||
let addr = Address::from_script(Testnet, &script);
|
||||
|
||||
assert_eq!(&addr.to_base58check(), "2N3zXjbwdTcPsJiy8sUK9FhWJhqQCxA8Jjr");
|
||||
assert_eq!(FromBase58::from_base58check("2N3zXjbwdTcPsJiy8sUK9FhWJhqQCxA8Jjr"), Ok(addr));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_key_derivation() {
|
||||
// testnet compressed
|
||||
|
|
Loading…
Reference in New Issue