NAME
Bitcoin::Crypto - Bitcoin cryptography in Perl
SYNOPSIS
use Bitcoin::Crypto::Key::ExtPrivate;
# extended keys are used for mnemonic generation and key derivation
my $mnemonic = Bitcoin::Crypto::Key::ExtPrivate->generate_mnemonic();
say "your mnemonic code is: $mnemonic";
my $master_key = Bitcoin::Crypto::Key::ExtPrivate->from_mnemonic($mnemonic);
my $derived_key = $master_key->derive_key("m/0'");
# basic keys are used for signatures and addresses
my $priv = $derived_key->get_basic_key();
my $pub = $priv->get_public_key();
say "private key: " . $priv->to_wif();
say "public key: " . $pub->to_hex();
say "address: " . $pub->get_segwit_address();
my $message = "Hello CPAN";
my $signature = $priv->sign_message($message);
if ($pub->verify_message($message, $signature)) {
say "successfully signed message '$message'";
say "signature: " . unpack "H*", $signature;
}
DESCRIPTION
Cryptographic package for common Bitcoin-related tasks and key pair management.
SCOPE
This package allows you to do basic tasks for Bitcoin such as:
creating extended keys and utilising bip32 key derivation
creating private key / public key pairs
creating Bitcoin addresses
creating signatures for messages
importing / exporting using popular mediums (WIF, mnemonic, hex)
using custom (non-Bitcoin) networks
This package won't help you with:
serializing transactions
using any Bitcoin CLI tools / clients
connecting to Bitcoin network
See child modules for more documentation and examples.
DISCLAIMER
Although the module was written with an extra care and appropriate tests are in place asserting compatibility with many Bitcoin standards, due to complexity of the subject some bugs may still be present. In the world of digital money, a single bug may lead to losing funds. I encourage anyone to test the module themselves, review the test cases and use the module with care, espetially in the beta phase. Suggestions for improvements and more edge cases to test will be gladly accepted, but there is no warranty on your funds being manipulated by this module.
TODO
Bitcoin script execution (maybe?)
Better test coverage
SEE ALSO
- Bitcoin::Crypto::Key::ExtPrivate
- Bitcoin::Crypto::Key::Private
- Bitcoin::BIP39
- The examples directory
AUTHOR
Bartosz Jarzyna <brtastic.dev@gmail.com>
COPYRIGHT AND LICENSE
Copyright (C) 2018 by Bartosz Jarzyna
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.