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