From 6b64b181d5a599e330067c8aa98719e9525b28b4 Mon Sep 17 00:00:00 2001 From: Sebastian Falbesoner Date: Wed, 18 Mar 2026 03:53:08 +0100 Subject: [PATCH] kernel: Add API function for getting a tx's nLockTime --- src/kernel/bitcoinkernel.cpp | 5 +++++ src/kernel/bitcoinkernel.h | 9 +++++++++ src/kernel/bitcoinkernel_wrapper.h | 5 +++++ src/test/kernel/test_kernel.cpp | 1 + 4 files changed, 20 insertions(+) diff --git a/src/kernel/bitcoinkernel.cpp b/src/kernel/bitcoinkernel.cpp index 09b4853fa91..b0ce1721a75 100644 --- a/src/kernel/bitcoinkernel.cpp +++ b/src/kernel/bitcoinkernel.cpp @@ -533,6 +533,11 @@ const btck_TransactionInput* btck_transaction_get_input_at(const btck_Transactio return btck_TransactionInput::ref(&btck_Transaction::get(transaction)->vin[input_index]); } +uint32_t btck_transaction_get_locktime(const btck_Transaction* transaction) +{ + return btck_Transaction::get(transaction)->nLockTime; +} + const btck_Txid* btck_transaction_get_txid(const btck_Transaction* transaction) { return btck_Txid::ref(&btck_Transaction::get(transaction)->GetHash()); diff --git a/src/kernel/bitcoinkernel.h b/src/kernel/bitcoinkernel.h index 57c88c1279c..1513ae3f7cd 100644 --- a/src/kernel/bitcoinkernel.h +++ b/src/kernel/bitcoinkernel.h @@ -576,6 +576,15 @@ BITCOINKERNEL_API const btck_TransactionInput* BITCOINKERNEL_WARN_UNUSED_RESULT BITCOINKERNEL_API size_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_count_inputs( const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1); +/** + * @brief Get a transaction's nLockTime value. + * + * @param[in] transaction Non-null. + * @return The nLockTime value. + */ +BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_get_locktime( + const btck_Transaction* transaction) BITCOINKERNEL_ARG_NONNULL(1); + /** * @brief Get the txid of a transaction. The returned txid is not owned and * depends on the lifetime of the transaction. diff --git a/src/kernel/bitcoinkernel_wrapper.h b/src/kernel/bitcoinkernel_wrapper.h index 064d0dd14b9..83ec5d02c71 100644 --- a/src/kernel/bitcoinkernel_wrapper.h +++ b/src/kernel/bitcoinkernel_wrapper.h @@ -596,6 +596,11 @@ public: return TransactionInputView{btck_transaction_get_input_at(impl(), index)}; } + uint32_t GetLocktime() const + { + return btck_transaction_get_locktime(impl()); + } + TxidView Txid() const { return TxidView{btck_transaction_get_txid(impl())}; diff --git a/src/test/kernel/test_kernel.cpp b/src/test/kernel/test_kernel.cpp index 4a97f5ba467..ab5d694fa49 100644 --- a/src/test/kernel/test_kernel.cpp +++ b/src/test/kernel/test_kernel.cpp @@ -401,6 +401,7 @@ BOOST_AUTO_TEST_CASE(btck_transaction_tests) BOOST_CHECK_EQUAL(tx.CountOutputs(), 2); BOOST_CHECK_EQUAL(tx.CountInputs(), 1); + BOOST_CHECK_EQUAL(tx.GetLocktime(), 510826); auto broken_tx_data{std::span{tx_data.begin(), tx_data.begin() + 10}}; BOOST_CHECK_THROW(Transaction{broken_tx_data}, std::runtime_error); auto output{tx.GetOutput(tx.CountOutputs() - 1)};