save inputs in transaction string

This commit is contained in:
gladcow 2020-04-09 16:31:46 +03:00
parent 3937a3a67b
commit 4ea8ff3b61

View file

@ -18,6 +18,7 @@
#include <graphene/chain/protocol/son_wallet.hpp> #include <graphene/chain/protocol/son_wallet.hpp>
#include <graphene/chain/son_info.hpp> #include <graphene/chain/son_info.hpp>
#include <graphene/chain/son_wallet_object.hpp> #include <graphene/chain/son_wallet_object.hpp>
#include <graphene/peerplays_sidechain/bitcoin_utils.hpp>
namespace graphene { namespace peerplays_sidechain { namespace graphene { namespace peerplays_sidechain {
@ -1787,6 +1788,7 @@ std::string sidechain_net_handler_bitcoin::create_transaction_standalone(const s
//} //}
libbitcoin::chain::transaction tx; libbitcoin::chain::transaction tx;
tx.set_version(2u); tx.set_version(2u);
std::vector<uint64_t> in_amounts;
for (auto in : inputs) { for (auto in : inputs) {
libbitcoin::chain::input bin; libbitcoin::chain::input bin;
libbitcoin::hash_digest tx_id; libbitcoin::hash_digest tx_id;
@ -1794,6 +1796,7 @@ std::string sidechain_net_handler_bitcoin::create_transaction_standalone(const s
bin.set_previous_output(libbitcoin::chain::output_point(tx_id, in.out_num_)); bin.set_previous_output(libbitcoin::chain::output_point(tx_id, in.out_num_));
bin.set_sequence(libbitcoin::max_input_sequence); bin.set_sequence(libbitcoin::max_input_sequence);
tx.inputs().push_back(bin); tx.inputs().push_back(bin);
in_amounts.push_back(in.amount_);
} }
for (auto out : outputs) { for (auto out : outputs) {
libbitcoin::chain::output bout; libbitcoin::chain::output bout;
@ -1808,7 +1811,7 @@ std::string sidechain_net_handler_bitcoin::create_transaction_standalone(const s
tx.outputs().push_back(bout); tx.outputs().push_back(bout);
} }
std::string tx_raw = libbitcoin::encode_base16(tx.to_data()); std::string tx_raw = save_tx_data_to_string(tx.to_data(), in_amounts);
return tx_raw; return tx_raw;
} }
@ -1913,10 +1916,8 @@ std::string sidechain_net_handler_bitcoin::sign_transaction_standalone(const sid
libbitcoin::data_chunk data; libbitcoin::data_chunk data;
if (!libbitcoin::decode_base16(data, sto.transaction)) { std::vector<uint64_t> in_amounts;
elog("Failed to decode transaction ${tx}", ("tx", sto.transaction)); read_tx_data_from_string(sto.transaction, data, in_amounts);
return "";
}
libbitcoin::chain::transaction tx; libbitcoin::chain::transaction tx;
if (!tx.from_data(data)) { if (!tx.from_data(data)) {
elog("Failed to decode transaction ${tx}", ("tx", sto.transaction)); elog("Failed to decode transaction ${tx}", ("tx", sto.transaction));