Skip to content

Commit a653fcc

Browse files
Squashed 'libbitcoinkernel-sys/bitcoin/' changes from 7ff7bca4e142..86b9d69f8829
86b9d69f8829 Change kernel install directory temporarily 1ca61848e19c Add BlockReader functionality to kernel library ac993426a14c Add directory locking and read-only mode to BlockTreeStore 74c2b345ac2b Flush disk writes when not in initial block download 57a96f6cec20 Remove block_tree_db_in_memory parameter after flat-file migration REVERT: 7ff7bca4e142 change install directory for kernel REVERT: 2db01cba4f7f kernel/blockreader REVERT: b4cad121480f add lock for blocktreestore REVERT: c7166ab7fe0c write if not in IBD REVERT: 0130dcf509b2 add blockreader REVERT: c6756908a129 Revert "Adds blockfiles read-only mode to chainstatemanager" REVERT: dd1a21772705 Adds blockfiles read-only mode to chainstatemanager REVERT: 8b155127f4d9 Fix flat-file based storage implementation issues in kernel API git-subtree-dir: libbitcoinkernel-sys/bitcoin git-subtree-split: 86b9d69f8829b3c8ec5af1c420cbb5c66daf039f
1 parent 8b1d8b3 commit a653fcc

File tree

4 files changed

+56
-219
lines changed

4 files changed

+56
-219
lines changed

src/block_reader.cpp

Lines changed: 0 additions & 216 deletions
This file was deleted.

src/kernel/bitcoinkernel.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,18 @@ typedef struct kernel_TransactionOutput kernel_TransactionOutput;
126126
/**
127127
* Opaque data structure for holding a transaction input.
128128
*/
129-
130129
typedef struct kernel_TransactionInput kernel_TransactionInput;
131130

132131
/**
133132
* Opaque data structure for holding a transaction outpoint.
134133
*/
135-
136134
typedef struct kernel_TransactionOutPoint kernel_TransactionOutPoint;
137135

136+
/**
137+
* Opaque data structure for holding a script signature.
138+
*/
139+
typedef struct kernel_TransactionScriptSig kernel_TransactionScriptSig;
140+
138141
/**
139142
* Opaque data structure for holding a logging connection.
140143
*

src/kernel/blockreader/blockreader.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include "kernel/cs_main.h"
88
#include "logging.h"
99
#include "primitives/transaction.h"
10+
#include "script/script.h"
1011
#include "streams.h"
1112
#include <cstddef>
1213
#include <cstdint>
@@ -64,6 +65,11 @@ const COutPoint* cast_const_transaction_out_point(const kernel_TransactionOutPoi
6465
return reinterpret_cast<const COutPoint*>(out_point);
6566
}
6667

68+
const CScript* cast_const_script_sig(const kernel_TransactionScriptSig* script_sig)
69+
{
70+
return reinterpret_cast<const CScript*>(script_sig);
71+
}
72+
6773
kernel_blockreader_IBDStatus cast_ibd_status(IBDStatus status)
6874
{
6975
switch (status) {
@@ -447,5 +453,37 @@ uint32_t kernel_transaction_out_point_get_index(const kernel_TransactionOutPoint
447453
return input->n;
448454
}
449455

456+
const kernel_TransactionScriptSig* kernel_transaction_input_get_script_sig(const kernel_TransactionInput* _input)
457+
{
458+
const auto* input = cast_const_transaction_input(_input);
459+
460+
return reinterpret_cast<const kernel_TransactionScriptSig*>(&input->scriptSig);
461+
}
462+
463+
kernel_ByteArray* kernel_copy_script_sig_data(const kernel_TransactionScriptSig* _script_sig)
464+
{
465+
const auto* script = cast_const_script_sig(_script_sig);
466+
467+
auto byte_array = new kernel_ByteArray{};
468+
byte_array->size = script->size();
469+
byte_array->data = new unsigned char[byte_array->size];
470+
std::memcpy(byte_array->data, script->data(), byte_array->size);
471+
472+
return byte_array;
473+
}
474+
475+
bool kernel_transaction_script_sig_is_push_only(const kernel_TransactionScriptSig* _script_sig)
476+
{
477+
const auto* script = cast_const_script_sig(_script_sig);
478+
479+
return script->IsPushOnly();
480+
}
481+
482+
bool kernel_transaction_script_sig_is_empty(const kernel_TransactionScriptSig* _script_sig)
483+
{
484+
const auto* script = cast_const_script_sig(_script_sig);
485+
486+
return script->empty();
487+
}
450488

451489
} // extern "C"

src/kernel/blockreader/blockreader.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,19 @@ BITCOINKERNEL_API const kernel_TransactionOutPoint* BITCOINKERNEL_WARN_UNUSED_RE
117117

118118
BITCOINKERNEL_API const kernel_BlockHash* BITCOINKERNEL_WARN_UNUSED_RESULT kernel_transaction_out_point_get_hash(const kernel_TransactionOutPoint* out_point) BITCOINKERNEL_ARG_NONNULL(1);
119119

120-
BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT kernel_transaction_out_point_get_index(const kernel_TransactionOutPoint*);
120+
BITCOINKERNEL_API uint32_t BITCOINKERNEL_WARN_UNUSED_RESULT kernel_transaction_out_point_get_index(const kernel_TransactionOutPoint* out_point);
121+
122+
BITCOINKERNEL_API const kernel_TransactionScriptSig* BITCOINKERNEL_WARN_UNUSED_RESULT kernel_transaction_input_get_script_sig(const kernel_TransactionInput* input) BITCOINKERNEL_ARG_NONNULL(1);
123+
124+
BITCOINKERNEL_API kernel_ByteArray* BITCOINKERNEL_WARN_UNUSED_RESULT kernel_copy_script_sig_data(const kernel_TransactionScriptSig* script_sig) BITCOINKERNEL_ARG_NONNULL(1);
125+
126+
BITCOINKERNEL_API bool BITCOINKERNEL_WARN_UNUSED_RESULT kernel_transaction_script_sig_is_push_only(const kernel_TransactionScriptSig* script_sig) BITCOINKERNEL_ARG_NONNULL(1);
127+
128+
BITCOINKERNEL_API bool BITCOINKERNEL_WARN_UNUSED_RESULT kernel_transaction_script_sig_is_empty(const kernel_TransactionScriptSig* script_sig) BITCOINKERNEL_ARG_NONNULL(1);
129+
130+
BITCOINKERNEL_API void kernel_transaction_script_sig_destroy(kernel_TransactionScriptSig* script_sig) BITCOINKERNEL_ARG_NONNULL(1);
131+
132+
121133

122134
#ifdef __cplusplus
123135
}

0 commit comments

Comments
 (0)