diff --git a/Makefile.am b/Makefile.am index ef8e1ed9f..fff437449 100644 --- a/Makefile.am +++ b/Makefile.am @@ -297,14 +297,10 @@ include_bitcoin_database_primitives_HEADERS = \ include_bitcoin_database_tablesdir = ${includedir}/bitcoin/database/tables include_bitcoin_database_tables_HEADERS = \ - include/bitcoin/database/tables/association.hpp \ - include/bitcoin/database/tables/associations.hpp \ include/bitcoin/database/tables/context.hpp \ include/bitcoin/database/tables/event.hpp \ include/bitcoin/database/tables/names.hpp \ - include/bitcoin/database/tables/point_set.hpp \ include/bitcoin/database/tables/schema.hpp \ - include/bitcoin/database/tables/states.hpp \ include/bitcoin/database/tables/table.hpp \ include/bitcoin/database/tables/tables.hpp @@ -342,12 +338,17 @@ include_bitcoin_database_tables_optionals_HEADERS = \ include_bitcoin_database_typesdir = ${includedir}/bitcoin/database/types include_bitcoin_database_types_HEADERS = \ + include/bitcoin/database/types/association.hpp \ + include/bitcoin/database/types/associations.hpp \ + include/bitcoin/database/types/block_state.hpp \ include/bitcoin/database/types/fee_rate.hpp \ include/bitcoin/database/types/header_state.hpp \ include/bitcoin/database/types/history.hpp \ include/bitcoin/database/types/multisig_view.hpp \ + include/bitcoin/database/types/point_set.hpp \ include/bitcoin/database/types/position.hpp \ include/bitcoin/database/types/span.hpp \ + include/bitcoin/database/types/tx_state.hpp \ include/bitcoin/database/types/type.hpp \ include/bitcoin/database/types/types.hpp \ include/bitcoin/database/types/unspent.hpp diff --git a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj index 2d65f7129..369c79218 100644 --- a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj +++ b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj @@ -184,8 +184,6 @@ - - @@ -201,17 +199,20 @@ - - + + + + + diff --git a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters index 0fb49486d..5ef428765 100644 --- a/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters +++ b/builds/msvc/vs2022/libbitcoin-database/libbitcoin-database.vcxproj.filters @@ -263,12 +263,6 @@ include\bitcoin\database\tables\archives - - include\bitcoin\database\tables - - - include\bitcoin\database\tables - include\bitcoin\database\tables\caches @@ -314,21 +308,24 @@ include\bitcoin\database\tables\optionals - - include\bitcoin\database\tables - include\bitcoin\database\tables - - include\bitcoin\database\tables - include\bitcoin\database\tables include\bitcoin\database\tables + + include\bitcoin\database\types + + + include\bitcoin\database\types + + + include\bitcoin\database\types + include\bitcoin\database\types @@ -341,12 +338,18 @@ include\bitcoin\database\types + + include\bitcoin\database\types + include\bitcoin\database\types include\bitcoin\database\types + + include\bitcoin\database\types + include\bitcoin\database\types diff --git a/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj b/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj index c33605586..523313546 100644 --- a/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-database-test/libbitcoin-database-test.vcxproj @@ -238,7 +238,7 @@ - + @@ -253,7 +253,7 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-database-test/packages.config b/builds/msvc/vs2026/libbitcoin-database-test/packages.config index 1c55fa06d..0ad665fe3 100644 --- a/builds/msvc/vs2026/libbitcoin-database-test/packages.config +++ b/builds/msvc/vs2026/libbitcoin-database-test/packages.config @@ -15,5 +15,5 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj b/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj index b2945da40..1643ea3db 100644 --- a/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-database-tools/libbitcoin-database-tools.vcxproj @@ -134,7 +134,7 @@ - + @@ -148,7 +148,7 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-database-tools/packages.config b/builds/msvc/vs2026/libbitcoin-database-tools/packages.config index 5acf46c12..e76d58a08 100644 --- a/builds/msvc/vs2026/libbitcoin-database-tools/packages.config +++ b/builds/msvc/vs2026/libbitcoin-database-tools/packages.config @@ -14,5 +14,5 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj index fd36e8f25..1be8badd9 100644 --- a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj +++ b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj @@ -184,8 +184,6 @@ - - @@ -201,17 +199,20 @@ - - + + + + + @@ -281,7 +282,7 @@ - + @@ -295,7 +296,7 @@ - + diff --git a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters index 0fb49486d..5ef428765 100644 --- a/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters +++ b/builds/msvc/vs2026/libbitcoin-database/libbitcoin-database.vcxproj.filters @@ -263,12 +263,6 @@ include\bitcoin\database\tables\archives - - include\bitcoin\database\tables - - - include\bitcoin\database\tables - include\bitcoin\database\tables\caches @@ -314,21 +308,24 @@ include\bitcoin\database\tables\optionals - - include\bitcoin\database\tables - include\bitcoin\database\tables - - include\bitcoin\database\tables - include\bitcoin\database\tables include\bitcoin\database\tables + + include\bitcoin\database\types + + + include\bitcoin\database\types + + + include\bitcoin\database\types + include\bitcoin\database\types @@ -341,12 +338,18 @@ include\bitcoin\database\types + + include\bitcoin\database\types + include\bitcoin\database\types include\bitcoin\database\types + + include\bitcoin\database\types + include\bitcoin\database\types diff --git a/builds/msvc/vs2026/libbitcoin-database/packages.config b/builds/msvc/vs2026/libbitcoin-database/packages.config index 5acf46c12..e76d58a08 100644 --- a/builds/msvc/vs2026/libbitcoin-database/packages.config +++ b/builds/msvc/vs2026/libbitcoin-database/packages.config @@ -14,5 +14,5 @@ - + diff --git a/include/bitcoin/database.hpp b/include/bitcoin/database.hpp index b5b144913..9e5a896bc 100644 --- a/include/bitcoin/database.hpp +++ b/include/bitcoin/database.hpp @@ -48,14 +48,10 @@ #include #include #include -#include -#include #include #include #include -#include #include -#include #include #include #include @@ -78,12 +74,17 @@ #include #include #include +#include +#include +#include #include #include #include #include +#include #include #include +#include #include #include #include diff --git a/include/bitcoin/database/impl/query/archive/chain_reader.ipp b/include/bitcoin/database/impl/query/archive/chain_reader.ipp index 35ce2ee22..15c0b3115 100644 --- a/include/bitcoin/database/impl/query/archive/chain_reader.ipp +++ b/include/bitcoin/database/impl/query/archive/chain_reader.ipp @@ -391,7 +391,7 @@ outpoint CLASS::get_outpoint(const output_link& link) const NOEXCEPT TEMPLATE template -bool CLASS::push_bool(std_vector& stack, +bool CLASS::push_bool(std::vector& stack, const Bool& element) NOEXCEPT { if (!element) diff --git a/include/bitcoin/database/impl/query/consensus/consensus_block.ipp b/include/bitcoin/database/impl/query/consensus/consensus_block.ipp index a06c89d7c..914bb286a 100644 --- a/include/bitcoin/database/impl/query/consensus/consensus_block.ipp +++ b/include/bitcoin/database/impl/query/consensus/consensus_block.ipp @@ -23,6 +23,7 @@ #include #include #include +#include namespace libbitcoin { namespace database { @@ -60,7 +61,7 @@ code CLASS::block_confirmable(const header_link& link) const NOEXCEPT [this, &count, &fault](const tx_link& tx) NOEXCEPT { point_set set{}; - table::transaction::get_set_ref get{ {}, set }; + table::transaction::get_set_ref get{ {}, set.version, set.points }; if (!store_.tx.get(tx, get)) fault.store(true, relaxed); diff --git a/include/bitcoin/database/impl/query/consensus/consensus_states.ipp b/include/bitcoin/database/impl/query/consensus/consensus_states.ipp index d99dbcaed..48df52c3e 100644 --- a/include/bitcoin/database/impl/query/consensus/consensus_states.ipp +++ b/include/bitcoin/database/impl/query/consensus/consensus_states.ipp @@ -55,20 +55,20 @@ inline code CLASS::to_block_code( switch (value) { // Transitional: Satisfies validation rules (prevouts unverified). - case schema::block_state::valid: + case block_state::valid: return error::block_valid; // Final: Satisfies confirmation rules (prevouts confirmable). - case schema::block_state::confirmable: + case block_state::confirmable: return error::block_confirmable; // Final: Does not satisfy either validation or confirmation rules. - case schema::block_state::unconfirmable: + case block_state::unconfirmable: return error::block_unconfirmable; // Fault: Has no state, should not happen when read from store. // block_unknown also used to reset a state (debugging). - case schema::block_state::block_unknown: + case block_state::block_unknown: default: return error::unknown_state; } @@ -85,16 +85,16 @@ inline code CLASS::to_tx_code( switch (value) { // Final: Is valid (passed check, accept, and connect). - case schema::tx_state::connected: + case tx_state::connected: return error::tx_connected; // Final: Is not valid (failed check, accept, or connect). - case schema::tx_state::disconnected: + case tx_state::disconnected: return error::tx_disconnected; // Fault: Has no state, should not happen when read from store. // tx_unknown also used to reset a state (debugging). - case schema::tx_state::tx_unknown: + case tx_state::tx_unknown: default: return error::unknown_state; } @@ -224,31 +224,31 @@ code CLASS::get_tx_state(uint64_t& fee, size_t& sigops, const tx_link& link, TEMPLATE bool CLASS::set_block_valid(const header_link& link) NOEXCEPT { - return set_block_state(link, schema::block_state::valid); + return set_block_state(link, block_state::valid); } TEMPLATE bool CLASS::set_block_confirmable(const header_link& link) NOEXCEPT { - return set_block_state(link, schema::block_state::confirmable); + return set_block_state(link, block_state::confirmable); } TEMPLATE bool CLASS::set_block_unconfirmable(const header_link& link) NOEXCEPT { - return set_block_state(link, schema::block_state::unconfirmable); + return set_block_state(link, block_state::unconfirmable); } TEMPLATE bool CLASS::set_block_unknown(const header_link& link) NOEXCEPT { - return set_block_state(link, schema::block_state::block_unknown); + return set_block_state(link, block_state::block_unknown); } // private TEMPLATE bool CLASS::set_block_state(const header_link& link, - schema::block_state state) NOEXCEPT + block_state state) NOEXCEPT { const auto record = to_validated_bk(link); @@ -264,27 +264,27 @@ bool CLASS::set_block_state(const header_link& link, TEMPLATE bool CLASS::set_tx_unknown(const tx_link& link) NOEXCEPT { - return set_tx_state(link, {}, {}, {}, schema::tx_state::tx_unknown); + return set_tx_state(link, {}, {}, {}, tx_state::tx_unknown); } TEMPLATE bool CLASS::set_tx_disconnected(const tx_link& link, const context& ctx) NOEXCEPT { - return set_tx_state(link, ctx, {}, {}, schema::tx_state::disconnected); + return set_tx_state(link, ctx, {}, {}, tx_state::disconnected); } TEMPLATE bool CLASS::set_tx_connected(const tx_link& link, const context& ctx, uint64_t fee, size_t sigops) NOEXCEPT { - return set_tx_state(link, ctx, fee, sigops, schema::tx_state::connected); + return set_tx_state(link, ctx, fee, sigops, tx_state::connected); } // private TEMPLATE bool CLASS::set_tx_state(const tx_link& link, const context& ctx, - uint64_t fee, size_t sigops, schema::tx_state state) NOEXCEPT + uint64_t fee, size_t sigops, tx_state state) NOEXCEPT { using sigs = linkage; diff --git a/include/bitcoin/database/query.hpp b/include/bitcoin/database/query.hpp index c982d3255..a1fbadf21 100644 --- a/include/bitcoin/database/query.hpp +++ b/include/bitcoin/database/query.hpp @@ -770,9 +770,9 @@ class query /// Setters. /// ----------------------------------------------------------------------- bool set_block_state(const header_link& link, - schema::block_state state) NOEXCEPT; + block_state state) NOEXCEPT; bool set_tx_state(const tx_link& link, const context& ctx, - uint64_t fee, size_t sigops, schema::tx_state state) NOEXCEPT; + uint64_t fee, size_t sigops, tx_state state) NOEXCEPT; /// Confirm. /// ----------------------------------------------------------------------- @@ -887,7 +887,7 @@ class query // Chain objects. template - static bool push_bool(std_vector& stack, + static bool push_bool(std::vector& stack, const Bool& element) NOEXCEPT; template static code parallel_outpoint_transform(const stopper& cancel, bool turbo, diff --git a/include/bitcoin/database/tables/archives/transaction.hpp b/include/bitcoin/database/tables/archives/transaction.hpp index be3d5e7f4..0c58a3c86 100644 --- a/include/bitcoin/database/tables/archives/transaction.hpp +++ b/include/bitcoin/database/tables/archives/transaction.hpp @@ -22,7 +22,6 @@ #include #include #include -#include #include namespace libbitcoin { @@ -42,6 +41,15 @@ struct transaction static constexpr auto offset = bytes::bits; static_assert(offset < to_bits(bytes::size)); + /// From header->prevouts cache. + struct in_point + { + link tx{}; + bool coinbase{}; + uint32_t sequence{}; + }; + using in_points = std::vector; + static constexpr size_t skip_to_locktime = bytes::size + bytes::size; @@ -288,12 +296,13 @@ struct transaction inline bool from_data(reader& source) NOEXCEPT { source.skip_bytes(skip_to_version); - set.version = source.read_little_endian(); - set.points.resize(source.read_little_endian()); + version = source.read_little_endian(); + points.resize(source.read_little_endian()); return source; } - point_set& set; + uint32_t& version; + in_points& points; }; struct get_point diff --git a/include/bitcoin/database/tables/caches/ecdsa.hpp b/include/bitcoin/database/tables/caches/ecdsa.hpp index 734a55849..6624700dc 100644 --- a/include/bitcoin/database/tables/caches/ecdsa.hpp +++ b/include/bitcoin/database/tables/caches/ecdsa.hpp @@ -76,7 +76,7 @@ static_assert(offsetof(system::ecdsa::triple, digest) == 0); static_assert(offsetof(system::ecdsa::triple, point) == 32); static_assert(offsetof(system::ecdsa::triple, signature) == 65); static_assert(offsetof(system::ecdsa::triple, identifier) == 129); -static_assert(sizeof(system::ecdsa::triple) == 32 + 33 + 64 + 3); +static_assert(sizeof(system::ecdsa::triple) == schema::ecdsa::minrow); } // namespace table } // namespace database diff --git a/include/bitcoin/database/tables/caches/multisig.hpp b/include/bitcoin/database/tables/caches/multisig.hpp index 0ac4c54ce..0896d7ad3 100644 --- a/include/bitcoin/database/tables/caches/multisig.hpp +++ b/include/bitcoin/database/tables/caches/multisig.hpp @@ -86,7 +86,7 @@ static_assert(offsetof(system::multisig::triple, signature) == 65); static_assert(offsetof(system::multisig::triple, pair) == 129); static_assert(offsetof(system::multisig::triple, set) == 130); static_assert(offsetof(system::multisig::triple, identifier) == 132); -static_assert(sizeof(system::multisig::triple) == 32 + 33 + 64 + 1 + 2 + 3); +static_assert(sizeof(system::multisig::triple) == schema::multisig::minrow); } // namespace table } // namespace database diff --git a/include/bitcoin/database/tables/caches/schnorr.hpp b/include/bitcoin/database/tables/caches/schnorr.hpp index 02d8d0ebd..11f9d3792 100644 --- a/include/bitcoin/database/tables/caches/schnorr.hpp +++ b/include/bitcoin/database/tables/caches/schnorr.hpp @@ -76,7 +76,7 @@ static_assert(offsetof(system::schnorr::triple, digest) == 0); static_assert(offsetof(system::schnorr::triple, point) == 32); static_assert(offsetof(system::schnorr::triple, signature) == 64); static_assert(offsetof(system::schnorr::triple, identifier) == 128); -static_assert(sizeof(system::schnorr::triple) == 32 + 32 + 64 + 3); +static_assert(sizeof(system::schnorr::triple) == schema::schnorr::minrow); } // namespace table } // namespace database diff --git a/include/bitcoin/database/tables/tables.hpp b/include/bitcoin/database/tables/tables.hpp index 2c7bd04ae..1dd6ce13c 100644 --- a/include/bitcoin/database/tables/tables.hpp +++ b/include/bitcoin/database/tables/tables.hpp @@ -42,14 +42,10 @@ #include #include -#include -#include #include #include #include -#include #include -#include #include #endif diff --git a/include/bitcoin/database/tables/association.hpp b/include/bitcoin/database/types/association.hpp similarity index 88% rename from include/bitcoin/database/tables/association.hpp rename to include/bitcoin/database/types/association.hpp index b3d0bca16..facf4c92a 100644 --- a/include/bitcoin/database/tables/association.hpp +++ b/include/bitcoin/database/types/association.hpp @@ -16,12 +16,11 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -#ifndef LIBBITCOIN_DATABASE_TABLES_ASSOCIATION_HPP -#define LIBBITCOIN_DATABASE_TABLES_ASSOCIATION_HPP +#ifndef LIBBITCOIN_DATABASE_TYPES_ASSOCIATION_HPP +#define LIBBITCOIN_DATABASE_TYPES_ASSOCIATION_HPP #include -#include -#include +#include namespace libbitcoin { namespace database { diff --git a/include/bitcoin/database/tables/associations.hpp b/include/bitcoin/database/types/associations.hpp similarity index 95% rename from include/bitcoin/database/tables/associations.hpp rename to include/bitcoin/database/types/associations.hpp index 3eab37e88..bbf284546 100644 --- a/include/bitcoin/database/tables/associations.hpp +++ b/include/bitcoin/database/types/associations.hpp @@ -16,11 +16,11 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -#ifndef LIBBITCOIN_DATABASE_TABLES_ASSOCIATIONS_HPP -#define LIBBITCOIN_DATABASE_TABLES_ASSOCIATIONS_HPP +#ifndef LIBBITCOIN_DATABASE_TYPES_ASSOCIATIONS_HPP +#define LIBBITCOIN_DATABASE_TYPES_ASSOCIATIONS_HPP #include -#include +#include namespace libbitcoin { namespace database { diff --git a/include/bitcoin/database/tables/states.hpp b/include/bitcoin/database/types/block_state.hpp similarity index 79% rename from include/bitcoin/database/tables/states.hpp rename to include/bitcoin/database/types/block_state.hpp index d14155c31..3cd510be2 100644 --- a/include/bitcoin/database/tables/states.hpp +++ b/include/bitcoin/database/types/block_state.hpp @@ -16,14 +16,13 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -#ifndef LIBBITCOIN_DATABASE_TABLES_STATES_HPP -#define LIBBITCOIN_DATABASE_TABLES_STATES_HPP +#ifndef LIBBITCOIN_DATABASE_TYPES_BLOCK_STATE_HPP +#define LIBBITCOIN_DATABASE_TYPES_BLOCK_STATE_HPP #include namespace libbitcoin { namespace database { -namespace schema { enum block_state : uint8_t { @@ -40,19 +39,6 @@ enum block_state : uint8_t block_unknown = 42 }; -enum tx_state : uint8_t -{ - /// final - connected = 0, - - /// final - disconnected = 1, - - /// transitional (debug) - tx_unknown = 42 -}; - -} // namespace schema } // namespace database } // namespace libbitcoin diff --git a/include/bitcoin/database/tables/point_set.hpp b/include/bitcoin/database/types/point_set.hpp similarity index 70% rename from include/bitcoin/database/tables/point_set.hpp rename to include/bitcoin/database/types/point_set.hpp index c2776d3c2..7de07340a 100644 --- a/include/bitcoin/database/tables/point_set.hpp +++ b/include/bitcoin/database/types/point_set.hpp @@ -16,31 +16,24 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ -#ifndef LIBBITCOIN_DATABASE_TABLES_POINT_SET_HPP -#define LIBBITCOIN_DATABASE_TABLES_POINT_SET_HPP +#ifndef LIBBITCOIN_DATABASE_TYPES_POINT_SET_HPP +#define LIBBITCOIN_DATABASE_TYPES_POINT_SET_HPP #include -#include +#include namespace libbitcoin { namespace database { +/// From block->txs->tx get version and points.resize(count). struct point_set { - using tx_link = schema::transaction::link; + using point = table::transaction::in_point; - struct point - { - // From header->prevouts cache. - tx_link tx{}; - bool coinbase{}; - uint32_t sequence{}; - }; - - // From block->txs->tx get version and points.resize(count). uint32_t version{}; - std::vector points{}; + table::transaction::in_points points{}; }; + using point_sets = std::vector; } // namespace database diff --git a/include/bitcoin/database/types/tx_state.hpp b/include/bitcoin/database/types/tx_state.hpp new file mode 100644 index 000000000..42a6e13ed --- /dev/null +++ b/include/bitcoin/database/types/tx_state.hpp @@ -0,0 +1,42 @@ +/** + * Copyright (c) 2011-2026 libbitcoin developers (see AUTHORS) + * + * This file is part of libbitcoin. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +#ifndef LIBBITCOIN_DATABASE_TYPES_TX_STATE_HPP +#define LIBBITCOIN_DATABASE_TYPES_TX_STATE_HPP + +#include + +namespace libbitcoin { +namespace database { + +enum tx_state : uint8_t +{ + /// final + connected = 0, + + /// final + disconnected = 1, + + /// transitional (debug) + tx_unknown = 42 +}; + +} // namespace database +} // namespace libbitcoin + +#endif diff --git a/include/bitcoin/database/types/type.hpp b/include/bitcoin/database/types/type.hpp index f4dcdb916..c7ed5e759 100644 --- a/include/bitcoin/database/types/type.hpp +++ b/include/bitcoin/database/types/type.hpp @@ -82,8 +82,7 @@ using outpoints = std::vector; /// --------------------------------------------------------------------------- /// Also: position, header_state, fee_rate, span, unspent, history. -// std_vector required for network::messages compat. -using heights = std_vector; +using heights = std::vector; using sizes = std::pair; using counts = std::pair; diff --git a/include/bitcoin/database/types/types.hpp b/include/bitcoin/database/types/types.hpp index bae19fddf..1f119f654 100644 --- a/include/bitcoin/database/types/types.hpp +++ b/include/bitcoin/database/types/types.hpp @@ -19,12 +19,17 @@ #ifndef LIBBITCOIN_DATABASE_TYPES_TYPES_HPP #define LIBBITCOIN_DATABASE_TYPES_TYPES_HPP +#include +#include +#include #include #include #include #include +#include #include #include +#include #include #include