kernel: Expose consensus parameters (btck_ConsensusParams)

Library users currently need to maintain a full context object to perform
context-free block validation. Exposing an opaque `btck_ConsensusParams`
struct allows callers to supply only the required consensus parameters,
resulting in a lighter-weight API and a clearer expression of the actual
validation behavior.

Co-authored-by: yuvicc <yuvichh01@gmail.com>
This commit is contained in:
w0xlt
2025-11-19 10:40:35 -08:00
parent 667e081a2a
commit 71f827c3c2
3 changed files with 37 additions and 0 deletions

View File

@@ -50,6 +50,10 @@
#include <utility>
#include <vector>
namespace Consensus {
struct Params;
} // namespace Consensus
using kernel::ChainstateRole;
using util::ImmediateTaskRunner;
@@ -496,6 +500,7 @@ struct btck_TransactionOutPoint: Handle<btck_TransactionOutPoint, COutPoint> {};
struct btck_Txid: Handle<btck_Txid, Txid> {};
struct btck_PrecomputedTransactionData : Handle<btck_PrecomputedTransactionData, PrecomputedTransactionData> {};
struct btck_BlockHeader: Handle<btck_BlockHeader, CBlockHeader> {};
struct btck_ConsensusParams: Handle<btck_ConsensusParams, Consensus::Params> {};
btck_Transaction* btck_transaction_create(const void* raw_transaction, size_t raw_transaction_len)
{
@@ -823,6 +828,11 @@ btck_ChainParameters* btck_chain_parameters_copy(const btck_ChainParameters* cha
return btck_ChainParameters::copy(chain_parameters);
}
const btck_ConsensusParams* btck_chain_parameters_get_consensus_params(const btck_ChainParameters* chain_parameters)
{
return btck_ConsensusParams::ref(&btck_ChainParameters::get(chain_parameters).GetConsensus());
}
void btck_chain_parameters_destroy(btck_ChainParameters* chain_parameters)
{
delete chain_parameters;