NAME
Bitcoin::Crypto::Key::ExtPublic - Bitcoin extended public keys
SYNOPSIS
use Bitcoin::Crypto qw(btc_extprv);
use Bitcoin::Crypto::Util qw(generate_mnemonic to_format)
my $mnemonic = generate_mnemonic;
my $key = btc_extprv->from_mnemonic($mnemonic);
# derive child public key
my $path = "M/0";
my $child_key = $key->derive_key($path);
my $ser_child_key = to_format [base58 => $child_key->to_serialized];
print "Your exported $path child key is: $ser_child_key";
# create basic public key
my $basic_public = $child_key->get_basic_key;
DESCRIPTION
This class allows you to create an extended public key instance.
You can use an extended public key to:
derive extended keys using a path (only public keys)
restore keys from serialized base58 format
see Bitcoin::Crypto::Network if you want to work with other networks than Bitcoin Mainnet.
METHODS
new
Constructor is reserved for internal and advanced use only. Use "from_serialized" instead.
to_serialized
$serialized_key = $object->to_serialized()
Returns the key serialized in format specified in BIP32 as byte string.
to_serialized_base58
Deprecated. Use to_format [base58 => $key->to_serialized]
instead.
from_serialized
$key_object = $class->from_serialized($serialized, $network = undef)
Tries to unserialize byte string $serialized
with format specified in BIP32.
Dies on errors. If multiple networks match serialized data specify $network
manually (id of the network) to avoid exception.
from_serialized_base58
Deprecated. Use $class->from_serialized([base58 => $base58])
instead.
set_network
$key_object = $object->set_network($val)
Change key's network state to $val
. It can be either network name present in Bitcoin::Crypto::Network package or an instance of this class.
Returns current key instance.
get_basic_key
$basic_key_object = $object->get_basic_key()
Returns the key in basic format: Bitcoin::Crypto::Key::Public
derive_key
$derived_key_object = $object->derive_key($path)
Performs extended key derivation as specified in BIP32 on the current key with $path
. Dies on error.
See BIP32 document for details on derivation paths and methods.
Note that public keys cannot derive private keys and your derivation path must start with M (capital m).
Returns a new extended key instance - result of a derivation.
derive_key_bip44
$derived_key_object = $object->derive_key_bip44(%data)
A helper that constructs a Bitcoin::Crypto::BIP44 path from %data
and calls "derive_key" with it. In extended public keys, bip44 is always constructed with public
setting - it will always derive starting from account, effectively only using change
and index
attributes.
get_fingerprint
$fingerprint = $object->get_fingerprint($len = 4)
Returns a fingerprint of the extended key of $len
length (byte string)
EXCEPTIONS
This module throws an instance of Bitcoin::Crypto::Exception if it encounters an error. It can produce the following error types from the Bitcoin::Crypto::Exception namespace:
KeyDerive - key couldn't be derived correctly
KeyCreate - key couldn't be created correctly
NetworkConfig - incomplete or corrupted network configuration