Skip to content

Commit

Permalink
Merge pull request #1013 from toxeus/master
Browse files Browse the repository at this point in the history
Make config::block default constructible.
  • Loading branch information
evoskuil committed Aug 16, 2018
2 parents b527982 + 8617e0c commit 81b6174
Show file tree
Hide file tree
Showing 27 changed files with 482 additions and 778 deletions.
15 changes: 7 additions & 8 deletions include/bitcoin/bitcoin/chain/block.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ class BC_API block
// Constructors.
//-------------------------------------------------------------------------

block(const settings& settings);
block();

block(block&& other);
block(const block& other);
Expand All @@ -90,12 +90,9 @@ class BC_API block
// Deserialization.
//-------------------------------------------------------------------------

static block factory(const data_chunk& data, const settings& settings,
bool witness=false);
static block factory(std::istream& stream, const settings& settings,
bool witness=false);
static block factory(reader& source, const settings& settings,
bool witness=false);
static block factory(const data_chunk& data, bool witness=false);
static block factory(std::istream& stream, bool witness=false);
static block factory(reader& source, bool witness=false);

bool from_data(const data_chunk& data, bool witness=false);
bool from_data(std::istream& stream, bool witness=false);
Expand Down Expand Up @@ -165,7 +162,9 @@ class BC_API block
bool is_valid_merkle_root() const;
bool is_segregated() const;

code check(uint64_t max_money, bool retarget=true) const;
code check(uint64_t max_money, uint32_t timestamp_future_seconds,
uint32_t retarget_proof_of_work_limit,
uint32_t no_retarget_proof_of_work_limit, bool retarget=true) const;
code check_transactions(uint64_t max_money) const;
code accept(const settings& settings, bool transactions=true,
bool header=true) const;
Expand Down
30 changes: 14 additions & 16 deletions include/bitcoin/bitcoin/chain/header.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,17 +78,17 @@ class BC_API header
// Constructors.
//-------------------------------------------------------------------------

header(const settings& settings);
header();

header(header&& other);
header(const header& other);

header(uint32_t version, const hash_digest& previous_block_hash,
const hash_digest& merkle, uint32_t timestamp, uint32_t bits,
uint32_t nonce, const settings& settings);
uint32_t nonce);
header(uint32_t version, hash_digest&& previous_block_hash,
hash_digest&& merkle, uint32_t timestamp, uint32_t bits,
uint32_t nonce, const settings& settings);
uint32_t nonce);

// Operators.
//-------------------------------------------------------------------------
Expand All @@ -102,16 +102,12 @@ class BC_API header
// Deserialization.
//-------------------------------------------------------------------------

static header factory(const data_chunk& data, const settings& settings,
bool wire=true);
static header factory(std::istream& stream, const settings& settings,
bool wire=true);
static header factory(reader& source, const settings& settings,
bool wire=true);
static header factory(reader& source, hash_digest&& hash,
const settings& settings, bool wire=true);
static header factory(const data_chunk& data, bool wire=true);
static header factory(std::istream& stream, bool wire=true);
static header factory(reader& source, bool wire=true);
static header factory(reader& source, hash_digest&& hash, bool wire=true);
static header factory(reader& source, const hash_digest& hash,
const settings& settings, bool wire=true);
bool wire=true);

bool from_data(const data_chunk& data, bool wire=true);
bool from_data(std::istream& stream, bool wire=true);
Expand Down Expand Up @@ -163,10 +159,13 @@ class BC_API header
uint256_t proof() const;
static uint256_t proof(uint32_t bits);

bool is_valid_timestamp() const;
bool is_valid_proof_of_work(bool retarget) const;
bool is_valid_timestamp(uint32_t timestamp_future_seconds) const;
bool is_valid_proof_of_work(uint32_t retarget_proof_of_work_limit,
uint32_t no_retarget_proof_of_work_limit, bool retarget) const;

code check(bool retarget) const;
code check(uint32_t timestamp_future_seconds,
uint32_t retarget_proof_of_work_limit,
uint32_t no_retarget_proof_of_work_limit, bool retarget) const;
code accept() const;
code accept(const chain_state& state) const;

Expand Down Expand Up @@ -194,7 +193,6 @@ class BC_API header
uint32_t timestamp_;
uint32_t bits_;
uint32_t nonce_;
const settings& settings_;
};

} // namespace chain
Expand Down
7 changes: 2 additions & 5 deletions include/bitcoin/bitcoin/config/block.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,6 @@
#include <bitcoin/bitcoin/chain/block.hpp>

namespace libbitcoin {

class settings;

namespace config {

/**
Expand All @@ -41,13 +38,13 @@ class BC_API block
/**
* Default constructor.
*/
block(const libbitcoin::settings& settings);
block();

/**
* Initialization constructor.
* @param[in] hexcode The value to initialize with.
*/
block(const std::string& hexcode, const libbitcoin::settings& settings);
block(const std::string& hexcode);

/**
* Initialization constructor.
Expand Down
5 changes: 2 additions & 3 deletions include/bitcoin/bitcoin/config/header.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include <string>
#include <bitcoin/bitcoin/define.hpp>
#include <bitcoin/bitcoin/chain/header.hpp>
#include <bitcoin/bitcoin/settings.hpp>

namespace libbitcoin {
namespace config {
Expand All @@ -39,13 +38,13 @@ class BC_API header
/**
* Default constructor.
*/
header(const libbitcoin::settings& settings);
header();

/**
* Initialization constructor.
* @param[in] hexcode The value to initialize with.
*/
header(const std::string& hexcode, const libbitcoin::settings& settings);
header(const std::string& hexcode);

/**
* Initialization constructor.
Expand Down
12 changes: 4 additions & 8 deletions include/bitcoin/bitcoin/message/block.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
#include <bitcoin/bitcoin/chain/transaction.hpp>
#include <bitcoin/bitcoin/define.hpp>
#include <bitcoin/bitcoin/message/version.hpp>
#include <bitcoin/bitcoin/settings.hpp>
#include <bitcoin/bitcoin/utility/data.hpp>
#include <bitcoin/bitcoin/utility/reader.hpp>

Expand All @@ -46,14 +45,11 @@ class BC_API block
typedef std::shared_ptr<const_ptr_list> const_ptr_list_ptr;
typedef std::shared_ptr<const const_ptr_list> const_ptr_list_const_ptr;

static block factory(uint32_t version, const data_chunk& data,
const settings& settings);
static block factory(uint32_t version, std::istream& stream,
const settings& settings);
static block factory(uint32_t version, reader& source,
const settings& settings);
static block factory(uint32_t version, const data_chunk& data);
static block factory(uint32_t version, std::istream& stream);
static block factory(uint32_t version, reader& source);

block(const settings& settings);
block();

block(block&& other);
block(const block& other);
Expand Down
22 changes: 8 additions & 14 deletions include/bitcoin/bitcoin/message/compact_block.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
#include <bitcoin/bitcoin/define.hpp>
#include <bitcoin/bitcoin/chain/header.hpp>
#include <bitcoin/bitcoin/message/prefilled_transaction.hpp>
#include <bitcoin/bitcoin/settings.hpp>
#include <bitcoin/bitcoin/utility/data.hpp>
#include <bitcoin/bitcoin/utility/reader.hpp>
#include <bitcoin/bitcoin/utility/writer.hpp>
Expand All @@ -40,14 +39,11 @@ class BC_API compact_block
typedef mini_hash short_id;
typedef mini_hash_list short_id_list;

static compact_block factory(uint32_t version, const data_chunk& data,
const settings& settings);
static compact_block factory(uint32_t version, std::istream& stream,
const settings& settings);
static compact_block factory(uint32_t version, reader& source,
const settings& settings);
static compact_block factory(uint32_t version, const data_chunk& data);
static compact_block factory(uint32_t version, std::istream& stream);
static compact_block factory(uint32_t version, reader& source);

compact_block(const settings& settings);
compact_block();
compact_block(const chain::header& header, uint64_t nonce,
const short_id_list& short_ids,
const prefilled_transaction::list& transactions);
Expand Down Expand Up @@ -75,16 +71,14 @@ class BC_API compact_block
void set_transactions(const prefilled_transaction::list& value);
void set_transactions(prefilled_transaction::list&& value);

bool from_data(uint32_t version, const data_chunk& data,
const settings& settings);
bool from_data(uint32_t version, std::istream& stream,
const settings& settings);
bool from_data(uint32_t version, reader& source, const settings& settings);
bool from_data(uint32_t version, const data_chunk& data);
bool from_data(uint32_t version, std::istream& stream);
bool from_data(uint32_t version, reader& source);
data_chunk to_data(uint32_t version) const;
void to_data(uint32_t version, std::ostream& stream) const;
void to_data(uint32_t version, writer& sink) const;
bool is_valid() const;
void reset(const settings& settings);
void reset();
size_t serialized_size(uint32_t version) const;

// This class is move assignable but not copy assignable.
Expand Down
16 changes: 6 additions & 10 deletions include/bitcoin/bitcoin/message/header.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
#include <bitcoin/bitcoin/chain/header.hpp>
#include <bitcoin/bitcoin/define.hpp>
#include <bitcoin/bitcoin/message/version.hpp>
#include <bitcoin/bitcoin/settings.hpp>
#include <bitcoin/bitcoin/utility/data.hpp>
#include <bitcoin/bitcoin/utility/reader.hpp>

Expand All @@ -45,21 +44,18 @@ class BC_API header
typedef std::shared_ptr<const_ptr_list> const_ptr_list_ptr;
typedef std::shared_ptr<const const_ptr_list> const_ptr_list_const_ptr;

static header factory(uint32_t version, const data_chunk& data,
const settings& settings);
static header factory(uint32_t version, std::istream& stream,
const settings& settings);
static header factory(uint32_t version, reader& source,
const settings& settings);
static header factory(uint32_t version, const data_chunk& data);
static header factory(uint32_t version, std::istream& stream);
static header factory(uint32_t version, reader& source);
static size_t satoshi_fixed_size(uint32_t version);

header(const settings& settings);
header();
header(uint32_t version, const hash_digest& previous_block_hash,
const hash_digest& merkle, uint32_t timestamp, uint32_t bits,
uint32_t nonce, const settings& settings);
uint32_t nonce);
header(uint32_t version, hash_digest&& previous_block_hash,
hash_digest&& merkle, uint32_t timestamp, uint32_t bits,
uint32_t nonce, const settings& settings);
uint32_t nonce);
header(const chain::header& other);
header(chain::header&& other);
header(const header& other);
Expand Down
17 changes: 6 additions & 11 deletions include/bitcoin/bitcoin/message/headers.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,9 @@ class BC_API headers
typedef std::shared_ptr<headers> ptr;
typedef std::shared_ptr<const headers> const_ptr;

static headers factory(uint32_t version, const data_chunk& data,
const settings& settings);
static headers factory(uint32_t version, std::istream& stream,
const settings& settings);
static headers factory(uint32_t version, reader& source,
const settings& settings);
static headers factory(uint32_t version, const data_chunk& data);
static headers factory(uint32_t version, std::istream& stream);
static headers factory(uint32_t version, reader& source);

headers();
headers(const header::list& values);
Expand All @@ -66,11 +63,9 @@ class BC_API headers
void to_inventory(inventory_vector::list& out,
inventory::type_id type) const;

bool from_data(uint32_t version, const data_chunk& data,
const settings& settings);
bool from_data(uint32_t version, std::istream& stream,
const settings& settings);
bool from_data(uint32_t version, reader& source, const settings& settings);
bool from_data(uint32_t version, const data_chunk& data);
bool from_data(uint32_t version, std::istream& stream);
bool from_data(uint32_t version, reader& source);
data_chunk to_data(uint32_t version) const;
void to_data(uint32_t version, std::ostream& stream) const;
void to_data(uint32_t version, writer& sink) const;
Expand Down
22 changes: 8 additions & 14 deletions include/bitcoin/bitcoin/message/merkle_block.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include <bitcoin/bitcoin/define.hpp>
#include <bitcoin/bitcoin/chain/block.hpp>
#include <bitcoin/bitcoin/chain/header.hpp>
#include <bitcoin/bitcoin/settings.hpp>
#include <bitcoin/bitcoin/utility/data.hpp>
#include <bitcoin/bitcoin/utility/reader.hpp>
#include <bitcoin/bitcoin/utility/writer.hpp>
Expand All @@ -40,14 +39,11 @@ class BC_API merkle_block
typedef std::shared_ptr<merkle_block> ptr;
typedef std::shared_ptr<const merkle_block> const_ptr;

static merkle_block factory(uint32_t version, const data_chunk& data,
const settings& settings);
static merkle_block factory(uint32_t version, std::istream& stream,
const settings& settings);
static merkle_block factory(uint32_t version, reader& source,
const settings& settings);
static merkle_block factory(uint32_t version, const data_chunk& data);
static merkle_block factory(uint32_t version, std::istream& stream);
static merkle_block factory(uint32_t version, reader& source);

merkle_block(const settings& settings);
merkle_block();
merkle_block(const chain::header& header, size_t total_transactions,
const hash_list& hashes, const data_chunk& flags);
merkle_block(chain::header&& header, size_t total_transactions,
Expand All @@ -74,16 +70,14 @@ class BC_API merkle_block
void set_flags(const data_chunk& value);
void set_flags(data_chunk&& value);

bool from_data(uint32_t version, const data_chunk& data,
const settings& settings);
bool from_data(uint32_t version, std::istream& stream,
const settings& settings);
bool from_data(uint32_t version, reader& source, const settings& settings);
bool from_data(uint32_t version, const data_chunk& data);
bool from_data(uint32_t version, std::istream& stream);
bool from_data(uint32_t version, reader& source);
data_chunk to_data(uint32_t version) const;
void to_data(uint32_t version, std::ostream& stream) const;
void to_data(uint32_t version, writer& sink) const;
bool is_valid() const;
void reset(const settings& settings);
void reset();
size_t serialized_size(uint32_t version) const;

// This class is move assignable but not copy assignable.
Expand Down

0 comments on commit 81b6174

Please sign in to comment.