move network_type enum to the base class
This commit is contained in:
parent
b31f380135
commit
b90a0c36e1
2 changed files with 29 additions and 42 deletions
|
|
@ -9,7 +9,8 @@ namespace graphene { namespace peerplays_sidechain { namespace bitcoin {
|
||||||
bool bitcoin_address::operator==( const bitcoin_address& btc_addr ) const {
|
bool bitcoin_address::operator==( const bitcoin_address& btc_addr ) const {
|
||||||
return ( this->address == btc_addr.address ) &&
|
return ( this->address == btc_addr.address ) &&
|
||||||
( this->type == btc_addr.type ) &&
|
( 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
|
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<std::pair<fc::ecc::public_key, uint16_t> > &keys_data,
|
btc_weighted_multisig_address::btc_weighted_multisig_address(const std::vector<std::pair<fc::ecc::public_key, uint16_t> > &keys_data,
|
||||||
network network_type) :
|
network ntype)
|
||||||
network_type_(network_type)
|
|
||||||
{
|
{
|
||||||
|
network_type = ntype;
|
||||||
create_redeem_script(keys_data);
|
create_redeem_script(keys_data);
|
||||||
create_witness_script();
|
create_witness_script();
|
||||||
create_segwit_address();
|
create_segwit_address();
|
||||||
|
|
@ -303,7 +304,7 @@ void btc_weighted_multisig_address::create_witness_script()
|
||||||
void btc_weighted_multisig_address::create_segwit_address()
|
void btc_weighted_multisig_address::create_segwit_address()
|
||||||
{
|
{
|
||||||
std::string hrp;
|
std::string hrp;
|
||||||
switch(network_type_)
|
switch(network_type)
|
||||||
{
|
{
|
||||||
case(network::mainnet):
|
case(network::mainnet):
|
||||||
hrp = "bc";
|
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,
|
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<fc::ecc::public_key> &keys_data,
|
const uint8_t nrequired, const std::vector<fc::ecc::public_key> &keys_data,
|
||||||
network network_type) {
|
network ntype) {
|
||||||
network_type_ = network_type;
|
network_type = ntype;
|
||||||
create_redeem_script(user_key_data, nrequired, keys_data);
|
create_redeem_script(user_key_data, nrequired, keys_data);
|
||||||
create_witness_script();
|
create_witness_script();
|
||||||
create_segwit_address();
|
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() {
|
void btc_one_or_m_of_n_multisig_address::create_segwit_address() {
|
||||||
std::string hrp;
|
std::string hrp;
|
||||||
switch (network_type_) {
|
switch (network_type) {
|
||||||
case (network::mainnet):
|
case (network::mainnet):
|
||||||
hrp = "bc";
|
hrp = "bc";
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -13,11 +13,16 @@ class bitcoin_address
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum network {
|
||||||
|
mainnet,
|
||||||
|
testnet,
|
||||||
|
regtest
|
||||||
|
};
|
||||||
|
|
||||||
bitcoin_address() = default;
|
bitcoin_address() = default;
|
||||||
|
|
||||||
bitcoin_address( const std::string& addr ) : address( addr ), type( determine_type() ),
|
bitcoin_address( const std::string& addr, network ntype = network::regtest ) : address( addr ), type( determine_type() ),
|
||||||
raw_address( determine_raw_address() ) {}
|
raw_address( determine_raw_address() ), network_type(ntype) {}
|
||||||
|
|
||||||
bool operator==( const bitcoin_address& btc_addr ) const;
|
bool operator==( const bitcoin_address& btc_addr ) const;
|
||||||
|
|
||||||
|
|
@ -29,6 +34,9 @@ public:
|
||||||
|
|
||||||
bytes get_script() const;
|
bytes get_script() const;
|
||||||
|
|
||||||
|
network get_network_type() const {
|
||||||
|
return network_type;
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
|
|
||||||
enum size_segwit_address { P2WSH = 32, P2WPKH = 20 };
|
enum size_segwit_address { P2WSH = 32, P2WPKH = 20 };
|
||||||
|
|
@ -57,6 +65,8 @@ public:
|
||||||
|
|
||||||
bytes raw_address;
|
bytes raw_address;
|
||||||
|
|
||||||
|
network network_type;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class btc_multisig_address : public bitcoin_address
|
class btc_multisig_address : public bitcoin_address
|
||||||
|
|
@ -127,13 +137,6 @@ class btc_weighted_multisig_address : public bitcoin_address
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum network
|
|
||||||
{
|
|
||||||
mainnet,
|
|
||||||
testnet,
|
|
||||||
regtest
|
|
||||||
};
|
|
||||||
|
|
||||||
btc_weighted_multisig_address() = default;
|
btc_weighted_multisig_address() = default;
|
||||||
|
|
||||||
btc_weighted_multisig_address( const std::vector<std::pair<fc::ecc::public_key, uint16_t>>& keys_data,
|
btc_weighted_multisig_address( const std::vector<std::pair<fc::ecc::public_key, uint16_t>>& keys_data,
|
||||||
|
|
@ -141,7 +144,6 @@ public:
|
||||||
|
|
||||||
bytes get_redeem_script() const { return redeem_script_; }
|
bytes get_redeem_script() const { return redeem_script_; }
|
||||||
bytes get_witness_script() const { return witness_script_; }
|
bytes get_witness_script() const { return witness_script_; }
|
||||||
network get_network_type() const { return network_type_; }
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void create_redeem_script(const std::vector<std::pair<fc::ecc::public_key, uint16_t>>& keys_data);
|
void create_redeem_script(const std::vector<std::pair<fc::ecc::public_key, uint16_t>>& keys_data);
|
||||||
|
|
@ -149,18 +151,12 @@ private:
|
||||||
void create_segwit_address();
|
void create_segwit_address();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
network network_type_;
|
|
||||||
bytes redeem_script_;
|
bytes redeem_script_;
|
||||||
bytes witness_script_;
|
bytes witness_script_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class btc_one_or_m_of_n_multisig_address : public bitcoin_address {
|
class btc_one_or_m_of_n_multisig_address : public bitcoin_address {
|
||||||
public:
|
public:
|
||||||
enum network {
|
|
||||||
mainnet,
|
|
||||||
testnet,
|
|
||||||
regtest
|
|
||||||
};
|
|
||||||
btc_one_or_m_of_n_multisig_address() = default;
|
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<fc::ecc::public_key> &keys_data,
|
btc_one_or_m_of_n_multisig_address(const fc::ecc::public_key &user_key_data, const uint8_t nrequired, const std::vector<fc::ecc::public_key> &keys_data,
|
||||||
network network_type = network::regtest);
|
network network_type = network::regtest);
|
||||||
|
|
@ -170,44 +166,34 @@ public:
|
||||||
bytes get_witness_script() const {
|
bytes get_witness_script() const {
|
||||||
return witness_script_;
|
return witness_script_;
|
||||||
}
|
}
|
||||||
network get_network_type() const {
|
|
||||||
return network_type_;
|
|
||||||
}
|
|
||||||
private:
|
private:
|
||||||
void create_redeem_script(const fc::ecc::public_key &user_key_data, const uint8_t nrequired, const std::vector<fc::ecc::public_key> &keys_data);
|
void create_redeem_script(const fc::ecc::public_key &user_key_data, const uint8_t nrequired, const std::vector<fc::ecc::public_key> &keys_data);
|
||||||
void create_witness_script();
|
void create_witness_script();
|
||||||
void create_segwit_address();
|
void create_segwit_address();
|
||||||
public:
|
public:
|
||||||
network network_type_;
|
|
||||||
bytes redeem_script_;
|
bytes redeem_script_;
|
||||||
bytes witness_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),
|
FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_multisig_address, (graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
||||||
(redeem_script)(keys_required)(witnesses_keys) );
|
(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_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,
|
FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_weighted_multisig_address,
|
||||||
(graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
(graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
||||||
(network_type_)(redeem_script_)(witness_script_) );
|
(redeem_script_)(witness_script_) );
|
||||||
|
|
||||||
FC_REFLECT_ENUM(graphene::peerplays_sidechain::bitcoin::btc_one_or_m_of_n_multisig_address::network,
|
|
||||||
(mainnet)
|
|
||||||
(testnet)
|
|
||||||
(regtest)
|
|
||||||
)
|
|
||||||
|
|
||||||
FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_one_or_m_of_n_multisig_address,
|
FC_REFLECT_DERIVED( graphene::peerplays_sidechain::bitcoin::btc_one_or_m_of_n_multisig_address,
|
||||||
(graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
(graphene::peerplays_sidechain::bitcoin::bitcoin_address),
|
||||||
(network_type_)(redeem_script_)(witness_script_) );
|
(redeem_script_)(witness_script_) );
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue