From 75b1324e5a712dbe6dcf3cfc0e2c0048df4b6a29 Mon Sep 17 00:00:00 2001 From: Srdjan Obucina Date: Sat, 21 Mar 2020 03:25:32 +0100 Subject: [PATCH] Add number of required signatures parameter for addmultisigaddress --- .../peerplays_sidechain/sidechain_net_handler_bitcoin.hpp | 2 +- .../peerplays_sidechain/sidechain_net_handler_bitcoin.cpp | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/sidechain_net_handler_bitcoin.hpp b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/sidechain_net_handler_bitcoin.hpp index 38b82036..bc7b685a 100644 --- a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/sidechain_net_handler_bitcoin.hpp +++ b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/sidechain_net_handler_bitcoin.hpp @@ -21,7 +21,7 @@ class bitcoin_rpc_client { public: bitcoin_rpc_client(std::string _ip, uint32_t _rpc, std::string _user, std::string _password, std::string _wallet, std::string _wallet_password); - std::string addmultisigaddress(const std::vector public_keys); + std::string addmultisigaddress(const uint32_t nrequired, const std::vector public_keys); std::string createpsbt(const std::vector &ins, const fc::flat_map outs); std::string createrawtransaction(const std::vector &ins, const fc::flat_map outs); std::string createwallet(const std::string &wallet_name); diff --git a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp index 2c01c168..8e667f7f 100644 --- a/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp +++ b/libraries/plugins/peerplays_sidechain/sidechain_net_handler_bitcoin.cpp @@ -31,10 +31,10 @@ bitcoin_rpc_client::bitcoin_rpc_client(std::string _ip, uint32_t _rpc, std::stri authorization.val = "Basic " + fc::base64_encode(user + ":" + password); } -std::string bitcoin_rpc_client::addmultisigaddress(const std::vector public_keys) { +std::string bitcoin_rpc_client::addmultisigaddress(const uint32_t nrequired, const std::vector public_keys) { std::string body = std::string("{\"jsonrpc\": \"1.0\", \"id\":\"addmultisigaddress\", " "\"method\": \"addmultisigaddress\", \"params\": ["); - std::string params = "2, ["; + std::string params = std::to_string(nrequired) + ", ["; std::string pubkeys = ""; for (std::string pubkey : public_keys) { if (!pubkeys.empty()) { @@ -786,7 +786,8 @@ void sidechain_net_handler_bitcoin::recreate_primary_wallet() { for (const son_info &si : active_sons) { son_pubkeys_bitcoin.push_back(si.sidechain_public_keys.at(sidechain_type::bitcoin)); } - string reply_str = bitcoin_client->addmultisigaddress(son_pubkeys_bitcoin); + uint32_t nrequired = son_pubkeys_bitcoin.size() * 2 / 3 + 1; + string reply_str = bitcoin_client->addmultisigaddress(nrequired, son_pubkeys_bitcoin); std::stringstream active_pw_ss(reply_str); boost::property_tree::ptree active_pw_pt;