diff --git a/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp b/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp index 2ef59f39..b1ffd2a5 100644 --- a/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp +++ b/libraries/plugins/peerplays_sidechain/peerplays_sidechain_plugin.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -517,6 +518,42 @@ void peerplays_sidechain_plugin_impl::create_son_deregister_proposals() { }); fut.wait(fc::seconds(10)); } + + if(proposal->proposed_transaction.operations.size() == 1 + && proposal->proposed_transaction.operations[0].which() == chain::operation::tag::value) { + approve_proposal( son_id, proposal->id ); + continue; + } + } + } + + if( object_id.is() ) { + const object* obj = plugin.database().find_object(object_id); + const chain::bitcoin_transaction_object* tx_object = dynamic_cast(obj); + + for (son_id_type son_id : _sons) { + auto it = tx_object->signatures.find(son_id); + if (it == tx_object->signatures.end()) + continue; + if (it->second.empty()) + { + bitcoin_transaction_sign_operation op; + son_object s_obj= get_son_object(son_id); + op.payer = s_obj.son_account; + // op.tx_id = object_id; + fc::ecc::private_key k = get_private_key(son_id); + //op.signatures = signatures_for_raw_transaction(unsigned_tx, amounts, redeem_script, k); + + signed_transaction trx = database().create_signed_transaction(get_private_key(plugin.get_current_son_id()), op); + try { + 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){ + ilog("sidechain_net_handler: sending proposal for son wallet update operation failed with exception ${e}",("e", e.what())); + return; + } + } } } }