diff --git a/libraries/plugins/peerplays_sidechain/sidechain_net_handler.cpp b/libraries/plugins/peerplays_sidechain/sidechain_net_handler.cpp index a9606093..14d936b0 100644 --- a/libraries/plugins/peerplays_sidechain/sidechain_net_handler.cpp +++ b/libraries/plugins/peerplays_sidechain/sidechain_net_handler.cpp @@ -269,41 +269,30 @@ void sidechain_net_handler::process_sidechain_transactions() { const auto &idx_range = idx.equal_range(std::make_tuple(sidechain, false)); std::for_each(idx_range.first, idx_range.second, [&](const sidechain_transaction_object &sto) { - son_id_type invalid_signer = son_id_type(0xFFFFFFFF); - son_id_type next_signer = invalid_signer; - for (auto &signer : sto.signers) { - if (signer.second == false) { - next_signer = signer.first; - break; - } + ilog("Sidechain transaction to process: ${sto}", ("sto", sto)); + + bool complete = false; + std::string processed_sidechain_tx = process_sidechain_transaction(sto, complete); + + if (processed_sidechain_tx.empty()) { + wlog("Sidechain transaction not processed: ${sto}", ("sto", sto)); + return; } - if ((next_signer != invalid_signer) && (next_signer == plugin.get_current_son_id())) { - ilog("Sidechain transaction to process: ${sto}", ("sto", sto)); + sidechain_transaction_sign_operation sts_op; + sts_op.payer = plugin.get_son_object(plugin.get_current_son_id()).son_account; + sts_op.sidechain_transaction_id = sto.id; + sts_op.transaction = processed_sidechain_tx; + sts_op.complete = complete; - bool complete = false; - std::string processed_sidechain_tx = process_sidechain_transaction(sto, complete); - - if (processed_sidechain_tx.empty()) { - wlog("Sidechain transaction not processed: ${sto}", ("sto", sto)); - return; - } - - sidechain_transaction_sign_operation sts_op; - sts_op.payer = plugin.get_son_object(plugin.get_current_son_id()).son_account; - sts_op.sidechain_transaction_id = sto.id; - sts_op.transaction = processed_sidechain_tx; - sts_op.complete = complete; - - signed_transaction trx = plugin.database().create_signed_transaction(plugin.get_private_key(plugin.get_current_son_id()), sts_op); - trx.validate(); - try { - plugin.database().push_transaction(trx, database::validation_steps::skip_block_size_check); - if (plugin.app().p2p_node()) - plugin.app().p2p_node()->broadcast(net::trx_message(trx)); - } catch (fc::exception e) { - elog("Sending proposal for sidechain transaction sign operation failed with exception ${e}", ("e", e.what())); - } + signed_transaction trx = plugin.database().create_signed_transaction(plugin.get_private_key(plugin.get_current_son_id()), sts_op); + trx.validate(); + try { + plugin.database().push_transaction(trx, database::validation_steps::skip_block_size_check); + if (plugin.app().p2p_node()) + plugin.app().p2p_node()->broadcast(net::trx_message(trx)); + } catch (fc::exception e) { + elog("Sending proposal for sidechain transaction sign operation failed with exception ${e}", ("e", e.what())); } }); } diff --git a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp index f8c16023..2c01c168 100644 --- a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp +++ b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp @@ -881,6 +881,21 @@ std::string sidechain_net_handler_bitcoin::process_withdrawal(const son_wallet_w } std::string sidechain_net_handler_bitcoin::process_sidechain_transaction(const sidechain_transaction_object &sto, bool &complete) { + + //// Uncomment to get signing in order from sto.signers + //son_id_type invalid_signer = son_id_type(0xFFFFFFFF); + //son_id_type next_signer = invalid_signer; + //for (auto &signer : sto.signers) { + // if (signer.second == false) { + // next_signer = signer.first; + // break; + // } + //} + // + //if ((next_signer == invalid_signer) || (next_signer != plugin.get_current_son_id())) { + // return ""; + //} + return sign_transaction(sto.transaction, complete); }