pub trait Address {
// Required method
fn addr(&self, opts: &AddressFormat) -> Result<String, Error>;
}Expand description
Generate an Address string from existing Public Key
This trait provides the main functionality of the crate. The addr method implements encoding
a public key as an address.
§Usage
Addresses are generated from public keys using Address::addr
use crypto_addr::{Address, AddressFormat as AF, Error};
use hex_literal::hex;
// This is a compressed public key in SEC 1 standard format
const PUBKEY_BYTES: [u8; 33] =
hex!("029d08f65e6aac041328edaeddba9c682356f81b37b052728fd8637c14eddb7ff1");
// Generate a Bitcoin P2PKH address
// Derive a legacy P2PKH Bitcoin Address from the Public Key (this is the Default AddressFormat)
assert_eq!(PUBKEY_BYTES.addr(&AF::default()).as_deref(), Ok("14cWWeAYZmA9oGgLpjekay9xLwHew3Ni34"));
// Derive Addresses from public key bytes in various other formats
assert_eq!(PUBKEY_BYTES.addr(&AF::Litecoin).as_deref(), Ok("LNqTmrUNeRQD45NVzse3rzDiZ9ew7HMYDY"));
assert_eq!(PUBKEY_BYTES.addr(&AF::Dogecoin).as_deref(), Ok("D8kc3u7BsB4SLGrwZKeK8jKZE51xKNc3FF"));
assert_eq!(PUBKEY_BYTES.addr(&AF::Ripple).as_deref(), Ok("rhcWWewYZmw9oGgLFjek2y9xLAHeAs45sh"));
assert_eq!(PUBKEY_BYTES.addr(&AF::Dash).as_deref(), Ok("XeJMLtpSXUNjxDGvgcxySVqkBGsM1d5LRg"));
assert_eq!(PUBKEY_BYTES.addr(&AF::ZCash).as_deref(), Ok("t1MV7WyagY5wkPujEmATsinFsbbUjoMy6b3"));
assert_eq!(PUBKEY_BYTES.addr(&AF::BitcoinGold).as_deref(), Ok("GMTRvmVVYcmSsjydkgJs1jVrG75W2Zc7dR"));
// Generate a Bitcoin Cash P2PKH address with elided "bitcoincash" prefix
assert_eq!(
PUBKEY_BYTES.addr(&AF::BitcoinCash(None)).as_deref(),
Ok("qqnelysjjjyrn4eywr04vf4v9nydrqdk6vep2tp2g9")
);
// Generate a Bitcoin Cash P2PKH address with a custom prefix
assert_eq!(
PUBKEY_BYTES.addr(&AF::BitcoinCash(Some("foo".to_owned()))).as_deref(),
Ok("foo:qqnelysjjjyrn4eywr04vf4v9nydrqdk6v730zmhs6")
);
// Errors are detected
let partial_pubkey = &PUBKEY_BYTES[..30];
assert_eq!(
partial_pubkey.addr(&Default::default()).unwrap_err(),
Error::InvalidLength{expected: 33, received: 30}
);Required Methods§
Implementations on Foreign Types§
Source§impl Address for VerifyingKey
Available on crate feature k256 only.
impl Address for VerifyingKey
Available on crate feature
k256 only.Source§impl Address for [u8]
Slice of input bytes is interpreted as a compressed public key encoded with encoding described
in SEC 1: Elliptic Curve Cryptography (Version 2.0) section
2.3.3 (page 10).
impl Address for [u8]
Slice of input bytes is interpreted as a compressed public key encoded with encoding described in SEC 1: Elliptic Curve Cryptography (Version 2.0) section 2.3.3 (page 10).
Implementors§
impl Address for PubkeyBytes
Array of input bytes is interpreted as a compressed public key encoded with encoding described in SEC 1: Elliptic Curve Cryptography (Version 2.0) section 2.3.3 (page 10).