Skip to content

Commit

Permalink
Merge pull request #227 from 0xcregis/226-feat-anychain-ripple-ripple…
Browse files Browse the repository at this point in the history
…addressfrom_hash160

feat: anychain-ripple RippleAddress::from_hash160()
  • Loading branch information
shuimuliang authored May 8, 2024
2 parents 61c6007 + 74b03c2 commit c2c6a73
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions anychain-ripple/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "anychain-ripple"
description = "A Rust library for interacting with the Ripple blockchain. It provides core functionalities such as transaction signing and serialization, address generation, and network communication."
version = "0.1.6"
version = "0.1.7"
keywords = ["ripple", "blockchain", "cryptocurrencies", "wallet", "transactions"]

# Workspace inherited keys
Expand All @@ -14,6 +14,6 @@ repository = { workspace = true }
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
anychain-core = { path = "../anychain-core", version = "0.1.5"}
anychain-core = { path = "../anychain-core", version = "0.1.6" }
base58 = { workspace = true }
libsecp256k1 = { workspace = true }
19 changes: 13 additions & 6 deletions anychain-ripple/src/address.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,8 @@ impl Address for RippleAddress {
public_key: &Self::PublicKey,
_: &Self::Format,
) -> Result<Self, anychain_core::AddressError> {
let mut data = [0u8; 25];
let hash = hash160(&public_key.serialize());
data[1..21].copy_from_slice(&hash);
let checksum = &checksum(&data[..21])[..4];
data[21..].copy_from_slice(checksum);

Ok(RippleAddress(to_xrp_bs58(&data.to_base58())?))
Self::from_hash160(&hash)
}
}

Expand Down Expand Up @@ -155,6 +150,18 @@ impl RippleAddress {

Ok(ret)
}

pub fn from_hash160(hash: &[u8]) -> Result<Self, AddressError> {
if hash.len() != 20 {
return Err(AddressError::Message("Illegal hash160 length".to_string()));
}
let mut data = [0u8; 25];
data[1..21].copy_from_slice(hash);
let checksum = &checksum(&data[..21])[..4];
data[21..].copy_from_slice(checksum);

Ok(RippleAddress(to_xrp_bs58(&data.to_base58())?))
}
}

#[cfg(test)]
Expand Down

0 comments on commit c2c6a73

Please sign in to comment.