Skip to content

Commit

Permalink
bch address format for forks #1072 (#1077)
Browse files Browse the repository at this point in the history
  • Loading branch information
shamardy committed Sep 22, 2021
1 parent cf1eee5 commit 9fe6e94
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 7 deletions.
18 changes: 13 additions & 5 deletions mm2src/mm2_bitcoin/keys/src/address.rs
Expand Up @@ -314,7 +314,8 @@ impl Address {

#[cfg(test)]
mod tests {
use super::{Address, AddressFormat, ChecksumType};
use super::{Address, AddressFormat, CashAddrType, CashAddress, ChecksumType};
use crate::NetworkPrefix;

#[test]
fn test_address_to_string() {
Expand Down Expand Up @@ -526,11 +527,18 @@ mod tests {
address.to_cashaddress("bitcoincash", 0, 5),
Err("Unknown address prefix 2. Expect: 0, 5".into())
);
}

#[test]
fn test_to_cashaddress_other_prefix() {
let expected_address = CashAddress {
prefix: NetworkPrefix::Other("prefix".into()),
hash: vec![
140, 0, 44, 191, 189, 83, 144, 173, 47, 216, 127, 59, 80, 232, 159, 100, 156, 132, 78, 192,
],
address_type: CashAddrType::P2PKH,
};
let address: Address = "1DmFp16U73RrVZtYUbo2Ectt8mAnYScpqM".into();
assert_eq!(
address.to_cashaddress("prefix", 0, 5),
Err("Unexpected network prefix".into())
);
assert_eq!(address.to_cashaddress("prefix", 0, 5).unwrap(), expected_address);
}
}
6 changes: 5 additions & 1 deletion mm2src/mm2_bitcoin/keys/src/cashaddress.rs
Expand Up @@ -19,6 +19,7 @@ pub enum NetworkPrefix {
BitcoinCash,
BchTest,
BchReg,
Other(String),
}

impl fmt::Display for NetworkPrefix {
Expand All @@ -27,6 +28,7 @@ impl fmt::Display for NetworkPrefix {
NetworkPrefix::BitcoinCash => "bitcoincash",
NetworkPrefix::BchTest => "bchtest",
NetworkPrefix::BchReg => "bchreg",
NetworkPrefix::Other(network) => network,
};
write!(f, "{}", as_str)
}
Expand All @@ -41,7 +43,7 @@ impl FromStr for NetworkPrefix {
"bitcoincash" => NetworkPrefix::BitcoinCash,
"bchtest" => NetworkPrefix::BchTest,
"bchreg" => NetworkPrefix::BchReg,
_ => return Err("Unexpected network prefix".into()),
_ => NetworkPrefix::Other(s),
};
Ok(prefix)
}
Expand Down Expand Up @@ -503,6 +505,7 @@ mod tests {
"bitcoincash:qpzry9x8gf2tvdw0s3jn54khce6mua7lcw20ayyn",
"bchtest:testnetaddress4d6njnut",
"bchreg:555555555555555555555555555555555555555555555udxmlmrz",
"ergon:qq0fj6kgmpxet2za56lxv4zlkjhu6a6psq0jqd4tvs",
];

for addr in addresses {
Expand All @@ -515,6 +518,7 @@ mod tests {
"bchtest:9adhakpwzztepkpwp5z0dq62m6u5v5xtyj7j3h2u94tsynr",
"bitcoincash:qpzry9x8gf2tvdw0s3jn54khce6mua7lcw20ayyc",
"bchtest:testnetaddress4d6njnu",
"ergon:p9adhakpwzztepkpwp5z0dq62m6u5v5xtyj7j3h2u94tsynr",
];

for addr in incorrect_addresses {
Expand Down
2 changes: 1 addition & 1 deletion mm2src/mm2_bitcoin/keys/src/lib.rs
Expand Up @@ -24,7 +24,7 @@ mod signature;
pub use primitives::{bytes, hash};

pub use address::{Address, AddressFormat, Type};
pub use cashaddress::{AddressType as CashAddrType, CashAddress};
pub use cashaddress::{AddressType as CashAddrType, CashAddress, NetworkPrefix};
pub use display::DisplayLayout;
pub use error::Error;
pub use keypair::KeyPair;
Expand Down

0 comments on commit 9fe6e94

Please sign in to comment.