diff --git a/src/kernel/bitcoinkernel.cpp b/src/kernel/bitcoinkernel.cpp index b0ce1721a75..4216bf921ff 100644 --- a/src/kernel/bitcoinkernel.cpp +++ b/src/kernel/bitcoinkernel.cpp @@ -697,6 +697,11 @@ const btck_TransactionOutPoint* btck_transaction_input_get_out_point(const btck_ return btck_TransactionOutPoint::ref(&btck_TransactionInput::get(input).prevout); } +uint32_t btck_transaction_input_get_sequence(const btck_TransactionInput* input) +{ + return btck_TransactionInput::get(input).nSequence; +} + void btck_transaction_input_destroy(btck_TransactionInput* input) { delete input; diff --git a/src/kernel/bitcoinkernel.h b/src/kernel/bitcoinkernel.h index 1513ae3f7cd..fe5bc3f91b5 100644 --- a/src/kernel/bitcoinkernel.h +++ b/src/kernel/bitcoinkernel.h @@ -1514,6 +1514,15 @@ BITCOINKERNEL_API btck_TransactionInput* BITCOINKERNEL_WARN_UNUSED_RESULT btck_t BITCOINKERNEL_API const btck_TransactionOutPoint* BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_input_get_out_point( const btck_TransactionInput* transaction_input) BITCOINKERNEL_ARG_NONNULL(1); +/** + * @brief Get a transaction input's nSequence value. + * + * @param[in] transaction_input Non-null. + * @return The nSequence value. + */ +BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT btck_transaction_input_get_sequence( + const btck_TransactionInput* transaction_input) BITCOINKERNEL_ARG_NONNULL(1); + /** * Destroy the transaction input. */ diff --git a/src/kernel/bitcoinkernel_wrapper.h b/src/kernel/bitcoinkernel_wrapper.h index 83ec5d02c71..fd234857875 100644 --- a/src/kernel/bitcoinkernel_wrapper.h +++ b/src/kernel/bitcoinkernel_wrapper.h @@ -551,6 +551,11 @@ public: { return OutPointView{btck_transaction_input_get_out_point(impl())}; } + + uint32_t GetSequence() const + { + return btck_transaction_input_get_sequence(impl()); + } }; class TransactionInputView : public View, public TransactionInputApi diff --git a/src/test/kernel/test_kernel.cpp b/src/test/kernel/test_kernel.cpp index ab5d694fa49..d4a8647b662 100644 --- a/src/test/kernel/test_kernel.cpp +++ b/src/test/kernel/test_kernel.cpp @@ -404,6 +404,8 @@ BOOST_AUTO_TEST_CASE(btck_transaction_tests) 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 input{tx.GetInput(0)}; + BOOST_CHECK_EQUAL(input.GetSequence(), 0xfffffffe); auto output{tx.GetOutput(tx.CountOutputs() - 1)}; BOOST_CHECK_EQUAL(output.Amount(), 42130042); auto script_pubkey{output.GetScriptPubkey()};