Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions src/protocols/electrum/protocol_electrum_addresses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,19 +121,27 @@ void protocol_electrum::handle_blockchain_address_subscribe(const code& ec,
// utilities
// ----------------------------------------------------------------------------
// A p2pk output does not produce a bitcoin payment address, as there is no
// form of a p2pk bitcoin payment address. However a
// form of a p2pk bitcoin payment address.

// A failed parse or default initialized script returns null_hash.
hash_digest protocol_electrum::extract_scripthash(
const std::string& address) const NOEXCEPT
{
// A failed parse or default initialized script hashes to null_hash.
return payment_address(address).output_script(p2kh_, p2sh_).hash();
const auto payment = payment_address(address);
if (!payment)
return {};

const auto script = payment.output_script(p2kh_, p2sh_);
if (!script.is_valid())
return {};

return script.hash();
}

// A failure to parse as p2sh or p2kh returns invalid object.
payment_address protocol_electrum::extract_address(
const chain::script& script) const NOEXCEPT
{
// A failure to parse as p2sh or p2kh returns invalid object.
return payment_address::extract_output(script, p2kh_, p2sh_);
}

Expand Down
13 changes: 9 additions & 4 deletions test/protocols/bitcoind/bitcoind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,13 @@
#include "bitcoind.hpp"
#include <future>

bitcoind_setup_fixture::bitcoind_setup_fixture()
: config_{ system::chain::selection::mainnet, web_pages, web_pages },
bitcoind_setup_fixture::bitcoind_setup_fixture(const initializer& setup)
: config_
{
system::chain::selection::mainnet,
test::web_pages,
test::web_pages
},
store_
{
[&]() NOEXCEPT -> const database::settings&
Expand All @@ -49,11 +54,11 @@ bitcoind_setup_fixture::bitcoind_setup_fixture()
node_settings.minimum_fee_rate = 99.0;
network_settings.inbound.connections = 0;
network_settings.outbound.connections = 0;
auto ec = store_.create([](auto, auto) {});

// Create and populate the store.
auto ec = store_.create([](auto, auto) {});
BOOST_REQUIRE_MESSAGE(!ec, ec.message());
BOOST_REQUIRE_MESSAGE(setup_ten_block_store(query_), "bitcoind initialize");
BOOST_REQUIRE_MESSAGE(setup(query_), "bitcoind initialize");

// Run the server.
std::promise<code> running{};
Expand Down
19 changes: 16 additions & 3 deletions test/protocols/bitcoind/bitcoind.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,17 @@ struct bitcoind_setup_fixture
{
DELETE_COPY_MOVE(bitcoind_setup_fixture);

bitcoind_setup_fixture();
using initializer = std::function<bool(test::query_t&)>;
explicit bitcoind_setup_fixture(const initializer& setup);
~bitcoind_setup_fixture();

// bitcoind does not implement any protocol version control or negotiation.
boost::json::value get(const std::string& request);

protected:
configuration config_;
store_t store_;
query_t query_;
test::store_t store_;
test::query_t query_;

private:
network::logger log_;
Expand All @@ -48,4 +49,16 @@ struct bitcoind_setup_fixture
boost::asio::ip::tcp::socket socket_{ io };
};

struct bitcoind_ten_block_setup_fixture
: bitcoind_setup_fixture
{
inline bitcoind_ten_block_setup_fixture()
: bitcoind_setup_fixture([](test::query_t& query)
{
return test::setup_ten_block_store(query);
})
{
}
};

#endif
2 changes: 1 addition & 1 deletion test/protocols/bitcoind/bitcoind_rest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@
#include "../../test.hpp"
#include "bitcoind.hpp"

BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_setup_fixture)
BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_ten_block_setup_fixture)

BOOST_AUTO_TEST_SUITE_END()
2 changes: 1 addition & 1 deletion test/protocols/bitcoind/bitcoind_rpc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@
#include "../../test.hpp"
#include "bitcoind.hpp"

BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_setup_fixture)
BOOST_FIXTURE_TEST_SUITE(bitcoind_tests, bitcoind_ten_block_setup_fixture)

BOOST_AUTO_TEST_SUITE_END()
Loading