我是否必须安装 `libbitcoin-server` 才能包含 `bitcoin.hpp`?
Do I have to install `libbitcoin-server` to be able to include `bitcoin.hpp`?
我正在阅读 Antonopoulos 的《精通比特币》一书,并想从中编译一个示例 book。它没有说明需要安装哪个 C++
库才能使 #include <bitcoin/bitcoin.hpp>
正常工作。
#include <bitcoin/bitcoin.hpp>
int main()
{
// Private secret key.
bc::ec_secret secret;
bool success = bc::decode_base16(secret,
"038109007313a5807b2eccc082c8c3fbb988a973cacf1a7df9ce725c31b14776");
assert(success);
// Get public key.
bc::ec_point public_key = bc::secret_to_public_key(secret);
std::cout << "Public key: " <> bc::encode_hex(public_key) << std::endl;
// Create Bitcoin address.
// ... further comments
// Compute hash of public key for P2PKH address.
const bc::short_hash hash = bc::bitcoin_short_hash(public_key);
bc::data_chunk unencoded_address;
// Reserve 26 bytes
// ...
unencoded_address.reseve(25);
unencoded_address.push_back(0);
bc::extend_data(unencoded_address, hash);
bc::append_checksum(unencoded_address);
assert(unencoded_address.size() == 25);
const std::string address = bc::encode_base58(unencoded_address);
std::cout << "Address: " << address << std::endl;
return 0;
}
编译应该这样进行:
g++ -o addr addr.cp $(pkg-config --cflags --libs libbitcoin)
运行 ./addr
应该给出输出:
"Public key: ..."
"Address: ..."
由于对代码库进行了大量更改,因此不清楚如何处理包含。代码之一不再可用。
提交 libbitcoin/libbitcoin-system 存储库的 83f36c901a3f45e8ab667f1db283d72e75a58176 将 bitcoin/bitcoin.hpp
重命名为 bitcoin/system.hpp
。
看起来您只需 install 使用典型的 ./autogen.sh && configure && make && make install
步骤即可。之后,您可以创建 bitcoin/system.hpp
的副本或修改您的客户端代码。
我需要安装的是库 libbitcoin
或更准确地说是“比特币跨平台 C++ 开发工具包” libbitcoin-system
。
但是因为解决这个问题的最好方法是使用来自 here 的 debian 自动安装脚本:
$ sudo apt-get install build-essential autoconf automake libtool pkg-config git
$ wget https://raw.githubusercontent.com/libbitcoin/libbitcoin/version3/install.sh
$ chmod +x install.sh
$ ./install.sh --prefix=/home/me/myprefix --build-boost --disable-shared
这安装了整个 libbitcoin
系统以及所有依赖项,例如boost
和 secp256k1
它还安装了 libbitcoin-server
.
按照另一个答案中的建议安装它的一部分对我不起作用,因为缺少依赖项,我无法正确地 link。
关于 swap
我可以说它在外部硬盘驱动器上使用 4GB 交换文件时工作正常,尽管 RPi2 的有效带宽只有 20MB/s。
为了能够使用该库,我必须在编译我的程序时提供 --static
属性:
g++ -o addr 69_addr2.cpp $(pkg-config --cflags --libs --static libbitcoin)
我正在阅读 Antonopoulos 的《精通比特币》一书,并想从中编译一个示例 book。它没有说明需要安装哪个 C++
库才能使 #include <bitcoin/bitcoin.hpp>
正常工作。
#include <bitcoin/bitcoin.hpp>
int main()
{
// Private secret key.
bc::ec_secret secret;
bool success = bc::decode_base16(secret,
"038109007313a5807b2eccc082c8c3fbb988a973cacf1a7df9ce725c31b14776");
assert(success);
// Get public key.
bc::ec_point public_key = bc::secret_to_public_key(secret);
std::cout << "Public key: " <> bc::encode_hex(public_key) << std::endl;
// Create Bitcoin address.
// ... further comments
// Compute hash of public key for P2PKH address.
const bc::short_hash hash = bc::bitcoin_short_hash(public_key);
bc::data_chunk unencoded_address;
// Reserve 26 bytes
// ...
unencoded_address.reseve(25);
unencoded_address.push_back(0);
bc::extend_data(unencoded_address, hash);
bc::append_checksum(unencoded_address);
assert(unencoded_address.size() == 25);
const std::string address = bc::encode_base58(unencoded_address);
std::cout << "Address: " << address << std::endl;
return 0;
}
编译应该这样进行:
g++ -o addr addr.cp $(pkg-config --cflags --libs libbitcoin)
运行 ./addr
应该给出输出:
"Public key: ..."
"Address: ..."
由于对代码库进行了大量更改,因此不清楚如何处理包含。代码之一不再可用。
提交 libbitcoin/libbitcoin-system 存储库的 83f36c901a3f45e8ab667f1db283d72e75a58176 将 bitcoin/bitcoin.hpp
重命名为 bitcoin/system.hpp
。
看起来您只需 install 使用典型的 ./autogen.sh && configure && make && make install
步骤即可。之后,您可以创建 bitcoin/system.hpp
的副本或修改您的客户端代码。
我需要安装的是库 libbitcoin
或更准确地说是“比特币跨平台 C++ 开发工具包” libbitcoin-system
。
但是因为解决这个问题的最好方法是使用来自 here 的 debian 自动安装脚本:
$ sudo apt-get install build-essential autoconf automake libtool pkg-config git
$ wget https://raw.githubusercontent.com/libbitcoin/libbitcoin/version3/install.sh
$ chmod +x install.sh
$ ./install.sh --prefix=/home/me/myprefix --build-boost --disable-shared
这安装了整个 libbitcoin
系统以及所有依赖项,例如boost
和 secp256k1
它还安装了 libbitcoin-server
.
按照另一个答案中的建议安装它的一部分对我不起作用,因为缺少依赖项,我无法正确地 link。
关于 swap
我可以说它在外部硬盘驱动器上使用 4GB 交换文件时工作正常,尽管 RPi2 的有效带宽只有 20MB/s。
为了能够使用该库,我必须在编译我的程序时提供 --static
属性:
g++ -o addr 69_addr2.cpp $(pkg-config --cflags --libs --static libbitcoin)