Activate post-quantum rules at block 6000

This commit is contained in:
Capri 2026-09-01 08:46:18 +00:00
commit 2cf5c796dc
Signed by: VextaProject
SSH key fingerprint: SHA256:739BZv8LvIDY2tR7lXLy/IQ6MaGTQtYcG9GNvCjmpVM
4 changed files with 22 additions and 7 deletions

View file

@ -331,7 +331,7 @@ endif
if ENABLE_ZMQ
vexta_qt_ldadd += $(LIBVEXTA_ZMQ) $(ZMQ_LIBS)
endif
vexta_qt_ldadd += $(LIBVEXTA_CLI) $(LIBVEXTA_COMMON) $(LIBVEXTA_UTIL) $(LIBVEXTA_CONSENSUS) $(LIBVEXTA_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
vexta_qt_ldadd += $(LIBVEXTA_CLI) $(LIBVEXTA_COMMON) $(LIBVEXTA_UTIL) $(LIBVEXTA_CONSENSUS) $(LIBVEXTA_PQ) $(LIBVEXTA_CRYPTO) $(LIBUNIVALUE) $(LIBLEVELDB) $(LIBLEVELDB_SSE42) $(LIBMEMENV) \
$(BOOST_LIBS) $(QT_LIBS) $(QT_DBUS_LIBS) $(QR_LIBS) $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(LIBSECP256K1) \
$(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(SQLITE_LIBS)
vexta_qt_ldflags = $(RELDFLAGS) $(AM_LDFLAGS) $(QT_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)

View file

@ -104,11 +104,11 @@ public:
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
// VEXTA quantum-resistant witness v2/v3.
// Integrated but intentionally not active yet.
// Activates at the configured min_activation_height.
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].bit = 3;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].min_activation_height = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].min_activation_height = 6000;
// The best chain should have at least this much work.
consensus.nMinimumChainWork = uint256{};
@ -243,11 +243,11 @@ public:
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
// VEXTA quantum-resistant witness v2/v3.
// Integrated but intentionally not active yet.
// Activates at the configured min_activation_height.
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].bit = 3;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].min_activation_height = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].min_activation_height = 6000;
// The best chain should have at least this much work.
consensus.nMinimumChainWork = uint256{};
@ -383,11 +383,11 @@ public:
consensus.vDeployments[Consensus::DEPLOYMENT_TAPROOT].min_activation_height = 0; // No activation delay
// VEXTA quantum-resistant witness v2/v3.
// Integrated but intentionally not active yet.
// Activates at the configured min_activation_height.
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].bit = 3;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].nStartTime = Consensus::BIP9Deployment::NEVER_ACTIVE;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].min_activation_height = 0;
consensus.vDeployments[Consensus::DEPLOYMENT_PQR].min_activation_height = 6000;
// message start is defined as the first 4 bytes of the sha256d of the block script
CHashWriter h(SER_DISK, 0);

View file

@ -49,6 +49,11 @@ inline bool DeploymentEnabled(const Consensus::Params& params, Consensus::Buried
inline bool DeploymentEnabled(const Consensus::Params& params, Consensus::DeploymentPos dep)
{
assert(Consensus::ValidDeployment(dep));
if (dep == Consensus::DEPLOYMENT_PQR) {
return true;
}
return params.vDeployments[dep].nStartTime != Consensus::BIP9Deployment::NEVER_ACTIVE;
}

View file

@ -193,6 +193,11 @@ public:
ThresholdState VersionBitsCache::State(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::DeploymentPos pos)
{
if (pos == Consensus::DEPLOYMENT_PQR) {
const int next_height = pindexPrev ? pindexPrev->nHeight + 1 : 0;
return next_height >= params.vDeployments[pos].min_activation_height ? ThresholdState::ACTIVE : ThresholdState::DEFINED;
}
LOCK(m_mutex);
return VersionBitsConditionChecker(pos).GetStateFor(pindexPrev, params, m_caches[pos]);
}
@ -204,6 +209,11 @@ BIP9Stats VersionBitsCache::Statistics(const CBlockIndex* pindexPrev, const Cons
int VersionBitsCache::StateSinceHeight(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::DeploymentPos pos)
{
if (pos == Consensus::DEPLOYMENT_PQR) {
const int next_height = pindexPrev ? pindexPrev->nHeight + 1 : 0;
return next_height >= params.vDeployments[pos].min_activation_height ? params.vDeployments[pos].min_activation_height : 0;
}
LOCK(m_mutex);
return VersionBitsConditionChecker(pos).GetStateSinceHeightFor(pindexPrev, params, m_caches[pos]);
}