From a4603ac77412790b6498ab1750017e31353740bf Mon Sep 17 00:00:00 2001 From: Ryan Ofsky Date: Mon, 9 Feb 2026 15:44:27 -0500 Subject: [PATCH] ipc mining: declare constants for default field values This commit only declares constants without using them. They will be applied in seperate commit since changing struct default field values in cap'n proto is not backwards compatible. --- src/ipc/capnp/mining.capnp | 5 +++++ src/ipc/test/ipc_test.cpp | 6 ++++++ src/node/types.h | 2 +- src/policy/policy.h | 2 ++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/ipc/capnp/mining.capnp b/src/ipc/capnp/mining.capnp index 25df1186331..7e5cced6f31 100644 --- a/src/ipc/capnp/mining.capnp +++ b/src/ipc/capnp/mining.capnp @@ -12,6 +12,11 @@ using Proxy = import "/mp/proxy.capnp"; $Proxy.include("interfaces/mining.h"); $Proxy.includeTypes("ipc/capnp/mining-types.h"); +const maxMoney :Int64 = 2100000000000000; +const maxDouble :Float64 = 1.7976931348623157e308; +const defaultBlockReservedWeight :UInt32 = 8000; +const defaultCoinbaseOutputMaxAdditionalSigops :UInt32 = 400; + interface Mining $Proxy.wrap("interfaces::Mining") { isTestChain @0 (context :Proxy.Context) -> (result: Bool); isInitialBlockDownload @1 (context :Proxy.Context) -> (result: Bool); diff --git a/src/ipc/test/ipc_test.cpp b/src/ipc/test/ipc_test.cpp index bec288813ad..31607299ae7 100644 --- a/src/ipc/test/ipc_test.cpp +++ b/src/ipc/test/ipc_test.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,11 @@ #include +static_assert(ipc::capnp::messages::MAX_MONEY == MAX_MONEY); +static_assert(ipc::capnp::messages::MAX_DOUBLE == std::numeric_limits::max()); +static_assert(ipc::capnp::messages::DEFAULT_BLOCK_RESERVED_WEIGHT == DEFAULT_BLOCK_RESERVED_WEIGHT); +static_assert(ipc::capnp::messages::DEFAULT_COINBASE_OUTPUT_MAX_ADDITIONAL_SIGOPS == DEFAULT_COINBASE_OUTPUT_MAX_ADDITIONAL_SIGOPS); + //! Remote init class. class TestInit : public interfaces::Init { diff --git a/src/node/types.h b/src/node/types.h index e3ee05dd0d9..01e74528e06 100644 --- a/src/node/types.h +++ b/src/node/types.h @@ -55,7 +55,7 @@ struct BlockCreateOptions { * The maximum additional sigops which the pool will add in coinbase * transaction outputs. */ - size_t coinbase_output_max_additional_sigops{400}; + size_t coinbase_output_max_additional_sigops{DEFAULT_COINBASE_OUTPUT_MAX_ADDITIONAL_SIGOPS}; /** * Script to put in the coinbase transaction. The default is an * anyone-can-spend dummy. diff --git a/src/policy/policy.h b/src/policy/policy.h index 35189d71335..0bc7b327708 100644 --- a/src/policy/policy.h +++ b/src/policy/policy.h @@ -24,6 +24,8 @@ class CScript; static constexpr unsigned int DEFAULT_BLOCK_MAX_WEIGHT{MAX_BLOCK_WEIGHT}; /** Default for -blockreservedweight **/ static constexpr unsigned int DEFAULT_BLOCK_RESERVED_WEIGHT{8000}; +/** Default sigops cost to reserve for coinbase transaction outputs when creating block templates. */ +static constexpr unsigned int DEFAULT_COINBASE_OUTPUT_MAX_ADDITIONAL_SIGOPS{400}; /** This accounts for the block header, var_int encoding of the transaction count and a minimally viable * coinbase transaction. It adds an additional safety margin, because even with a thorough understanding * of block serialization, it's easy to make a costly mistake when trying to squeeze every last byte.