diff --git a/libraries/plugins/peerplays_sidechain/bitcoin/bitcoin_address.cpp b/libraries/plugins/peerplays_sidechain/bitcoin/bitcoin_address.cpp index dec75da2..ed4041b7 100755 --- a/libraries/plugins/peerplays_sidechain/bitcoin/bitcoin_address.cpp +++ b/libraries/plugins/peerplays_sidechain/bitcoin/bitcoin_address.cpp @@ -9,7 +9,8 @@ namespace graphene { namespace peerplays_sidechain { namespace bitcoin { bool bitcoin_address::operator==( const bitcoin_address& btc_addr ) const { return ( this->address == btc_addr.address ) && ( this->type == btc_addr.type ) && - ( this->raw_address == btc_addr.raw_address ); + ( this->raw_address == btc_addr.raw_address ) && + ( this->network_type == btc_addr.network_type); } bytes bitcoin_address::get_script() const @@ -257,9 +258,9 @@ bytes btc_multisig_segwit_address::get_address_bytes( const bytes& script_hash ) btc_weighted_multisig_address::btc_weighted_multisig_address(const std::vector > &keys_data, - network network_type) : - network_type_(network_type) + network ntype) { + network_type = ntype; create_redeem_script(keys_data); create_witness_script(); create_segwit_address(); @@ -303,7 +304,7 @@ void btc_weighted_multisig_address::create_witness_script() void btc_weighted_multisig_address::create_segwit_address() { std::string hrp; - switch(network_type_) + switch(network_type) { case(network::mainnet): hrp = "bc"; @@ -322,8 +323,8 @@ void btc_weighted_multisig_address::create_segwit_address() btc_one_or_m_of_n_multisig_address::btc_one_or_m_of_n_multisig_address(const fc::ecc::public_key &user_key_data, const uint8_t nrequired, const std::vector &keys_data, - network network_type) { - network_type_ = network_type; + network ntype) { + network_type = ntype; create_redeem_script(user_key_data, nrequired, keys_data); create_witness_script(); create_segwit_address(); @@ -355,7 +356,7 @@ void btc_one_or_m_of_n_multisig_address::create_witness_script() { } void btc_one_or_m_of_n_multisig_address::create_segwit_address() { std::string hrp; - switch (network_type_) { + switch (network_type) { case (network::mainnet): hrp = "bc"; break; diff --git a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/bitcoin_address.hpp b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/bitcoin_address.hpp index c9a05140..9b249347 100755 --- a/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/bitcoin_address.hpp +++ b/libraries/plugins/peerplays_sidechain/include/graphene/peerplays_sidechain/bitcoin/bitcoin_address.hpp @@ -13,11 +13,16 @@ class bitcoin_address { public: + enum network { + mainnet, + testnet, + regtest + }; bitcoin_address() = default; - bitcoin_address( const std::string& addr ) : address( addr ), type( determine_type() ), - raw_address( determine_raw_address() ) {} + bitcoin_address( const std::string& addr, network ntype = network::regtest ) : address( addr ), type( determine_type() ), + raw_address( determine_raw_address() ), network_type(ntype) {} bool operator==( const bitcoin_address& btc_addr ) const; @@ -29,6 +34,9 @@ public: bytes get_script() const; + network get_network_type() const { + return network_type; + } private: enum size_segwit_address { P2WSH = 32, P2WPKH = 20 }; @@ -57,6 +65,8 @@ public: bytes raw_address; + network network_type; + }; class btc_multisig_address : public bitcoin_address @@ -127,13 +137,6 @@ class btc_weighted_multisig_address : public bitcoin_address { public: - enum network - { - mainnet, - testnet, - regtest - }; - btc_weighted_multisig_address() = default; btc_weighted_multisig_address( const std::vector>& keys_data, @@ -141,7 +144,6 @@ public: bytes get_redeem_script() const { return redeem_script_; } bytes get_witness_script() const { return witness_script_; } - network get_network_type() const { return network_type_; } private: void create_redeem_script(const std::vector>& keys_data); @@ -149,18 +151,12 @@ private: void create_segwit_address(); public: - network network_type_; bytes redeem_script_; bytes witness_script_; }; class btc_one_or_m_of_n_multisig_address : public bitcoin_address { public: - enum network { - mainnet, - testnet, - regtest - }; btc_one_or_m_of_n_multisig_address() = default; btc_one_or_m_of_n_multisig_address(const fc::ecc::public_key &user_key_data, const uint8_t nrequired, const std::vector &keys_data, network network_type = network::regtest); @@ -170,44 +166,34 @@ public: bytes get_witness_script() const { return witness_script_; } - network get_network_type() const { - return network_type_; - } private: void create_redeem_script(const fc::ecc::public_key &user_key_data, const uint8_t nrequired, const std::vector &keys_data); void create_witness_script(); void create_segwit_address(); public: - network network_type_; bytes redeem_script_; bytes witness_script_; }; } } } -FC_REFLECT( graphene::peerplays_sidechain::bitcoin::bitcoin_address, (address)(type)(raw_address) ); +FC_REFLECT_ENUM(graphene::peerplays_sidechain::bitcoin::bitcoin_address::network, + (mainnet) + (testnet) + (regtest) + ) + +FC_REFLECT( graphene::peerplays_sidechain::bitcoin::bitcoin_address, (address)(type)(raw_address)(network_type) ); FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_multisig_address, (graphene::peerplays_sidechain::bitcoin::bitcoin_address), (redeem_script)(keys_required)(witnesses_keys) ); FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_multisig_segwit_address, (graphene::peerplays_sidechain::bitcoin::btc_multisig_address), (witness_script) ); -FC_REFLECT_ENUM(graphene::peerplays_sidechain::bitcoin::btc_weighted_multisig_address::network, - (mainnet) - (testnet) - (regtest) - ) - FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_weighted_multisig_address, (graphene::peerplays_sidechain::bitcoin::bitcoin_address), - (network_type_)(redeem_script_)(witness_script_) ); - -FC_REFLECT_ENUM(graphene::peerplays_sidechain::bitcoin::btc_one_or_m_of_n_multisig_address::network, - (mainnet) - (testnet) - (regtest) - ) + (redeem_script_)(witness_script_) ); FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_one_or_m_of_n_multisig_address, (graphene::peerplays_sidechain::bitcoin::bitcoin_address), - (network_type_)(redeem_script_)(witness_script_) ); + (redeem_script_)(witness_script_) );