From c204020ca58eda16ff9d83df77a3c7890c2d40d3 Mon Sep 17 00:00:00 2001 From: satyakoneru <15652887+satyakoneru@users.noreply.github.com> Date: Mon, 20 Apr 2020 12:01:04 +0000 Subject: [PATCH] Use default null string to get first vout --- libraries/plugins/peerplays_sidechain/bitcoin/utils.cpp | 6 +++++- .../include/graphene/peerplays_sidechain/bitcoin/utils.hpp | 2 +- .../peerplays_sidechain/sidechain_net_handler_bitcoin.cpp | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libraries/plugins/peerplays_sidechain/bitcoin/utils.cpp b/libraries/plugins/peerplays_sidechain/bitcoin/utils.cpp index b85311d7..a82a7c40 100644 --- a/libraries/plugins/peerplays_sidechain/bitcoin/utils.cpp +++ b/libraries/plugins/peerplays_sidechain/bitcoin/utils.cpp @@ -119,7 +119,8 @@ std::vector get_outputs_from_transaction_by_address(const std::string to_addresses.push_back(address.second.data()); } - if (std::find(to_addresses.begin(), to_addresses.end(), to_address) != to_addresses.end()) { + if ((to_address == "") || + (std::find(to_addresses.begin(), to_addresses.end(), to_address) != to_addresses.end())) { std::string tx_amount_s = vout.second.get("value"); tx_amount_s.erase(std::remove(tx_amount_s.begin(), tx_amount_s.end(), '.'), tx_amount_s.end()); uint64_t tx_amount = std::stoll(tx_amount_s); @@ -132,6 +133,9 @@ std::vector get_outputs_from_transaction_by_address(const std::string pout.n_vout = tx_vout; pout.amount = tx_amount; result.push_back(pout); + if (to_address == "") { + return result; + } } } return result; diff --git a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/utils.hpp b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/utils.hpp index b4dbcc78..430889e5 100644 --- a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/utils.hpp +++ b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/utils.hpp @@ -23,6 +23,6 @@ void read_transaction_data(const std::string &string_buf, std::string &tx_hex, s std::string write_transaction_data(const std::string &tx, const std::vector &in_amounts, const std::string &redeem_script); -std::vector get_outputs_from_transaction_by_address(const std::string &tx_json, const std::string &to_address); +std::vector get_outputs_from_transaction_by_address(const std::string &tx_json, const std::string &to_address = ""); }}} // namespace graphene::peerplays_sidechain::bitcoin \ No newline at end of file diff --git a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp index cc811be1..eb7c7170 100644 --- a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp +++ b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp @@ -1406,7 +1406,7 @@ int64_t sidechain_net_handler_bitcoin::settle_sidechain_transaction(const sidech if (sto.object_id.is()) { std::string tx_hex = tx_json.get("result.hex"); std::string tx_hex_json = bitcoin_client->decoderawtransaction(tx_hex); - std::vector pouts = bitcoin::get_outputs_from_transaction_by_address(tx_hex_json, get_current_primary_wallet_address()); + std::vector pouts = bitcoin::get_outputs_from_transaction_by_address(tx_hex_json); if (pouts.size() > 0) { settle_amount = pouts[0].amount; }