Salut a tous ,
je viens de compiler un code source sur un livre "Mastering Bitcoin"
#include <bitcoin/bitcoin.hpp>
int main()
{
// Private secret key string as base16
bc::ec_secret decoded;
bc::decode_base16(decoded,"038109007313a5807b2eccc082c8c3fbb988a973cacf1a7df9ce725c31b14776");
bc::wallet::ec_private secret(decoded, bc::wallet::ec_private::mainnet_p2kh);
// Get public key.
bc::wallet::ec_public public_key(secret);
std::cout << "Public key: " << public_key.encoded() << std::endl;
// Create Bitcoin address.
// Normally you can use:
// bc::wallet::payment_address payaddr =
// public_key.to_payment_address(
// bc::wallet::ec_public::mainnet_p2kh);
// const std::string address = payaddr.encoded();
// Compute hash of public key for P2PKH address.
bc::data_chunk public_key_data;
public_key.to_data(public_key_data);
const auto hash = bc::bitcoin_short_hash(public_key_data);
bc::data_chunk unencoded_address;
// Reserve 25 bytes
// [ version:1 ]
// [ hash:20 ]
// [ checksum:4 ]
unencoded_address.reserve(25);
// Version byte, 0 is normal BTC address (P2PKH).
unencoded_address.push_back(0);
// Hash data
bc::extend_data(unencoded_address, hash);
// Checksum is computed by hashing data, and adding 4 bytes from hash.
bc::append_checksum(unencoded_address);
// Finally we must encode the result in Bitcoin's base58 encoding.
assert(unencoded_address.size() == 25);
const std::string address = bc::encode_base58(unencoded_address);
std::cout << "Address: " << address << std::endl;
return 0;
}
et j'ai compilé ce code
user@user-Inspiron-N5110:~$ g++ -o addr addr.cpp -std=c++11 -lgmp $(pkg-config --cflags --libs libbitcoin)
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_mod_inverse » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:128 : référence indéfinie vers « __gmpn_gcdext »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « __gmpn_sub » :
/usr/include/x86_64-linux-gnu/gmp.h:2190 : référence indéfinie vers « __gmpn_sub_n »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_set_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_get_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:34 : référence indéfinie vers « __gmpn_get_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_set_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:49 : référence indéfinie vers « __gmpn_set_str »
/home/user/myprefix/lib/libsecp256k1.a(libsecp256k1_la-secp256k1.o) : Dans la fonction « secp256k1_num_get_bin » :
/home/user/build-libbitcoin/secp256k1/src/num_gmp_impl.h:34 : référence indéfinie vers « __gmpn_get_str »
collect2: error: ld returned 1 exit status
Quelqu'un a une aidé pour régler ce probleme