View in context in the libbitcoin Slack #general mirror.
#include <bitcoin/system.hpp>
const std::string master_chain_code = "tpubD6NzVbkrYhZ4WmUsVtDM62qG5zPPbAApWqc9nsqT6sYAcDvs1MtVSHG8otsqy45G33nmaBHe4TWNpuQZk3sLX19rfRsYoKmirQuWbuL6TED";
std::string get_address(uint32_t user_id, uint32_t chain_index)
{
bc::system::wallet::hd_public master(master_chain_code,
bc::system::wallet::hd_public::testnet);
BITCOIN_ASSERT(bc::system::wallet::hd_public::testnet == 70617039);
BITCOIN_ASSERT(master);
auto user_chain = master.derive_public(user_id);
auto key_chain = user_chain.derive_public(chain_index);
// This line asserts
BITCOIN_ASSERT(user_chain);
BITCOIN_ASSERT(key_chain);
bc::system::wallet::ec_public public_key(key_chain.point());
auto payaddr = public_key.to_payment_address(0x6f);
return payaddr.encoded();
}
int main()
{
get_address(0, 110);
return 0;
}