@@ -70,6 +70,11 @@ const CScript* cast_const_script_sig(const kernel_TransactionScriptSig* script_s
70
70
return reinterpret_cast <const CScript*>(script_sig);
71
71
}
72
72
73
+ const CScriptWitness* cast_const_witness (const kernel_TransactionWitness* witness)
74
+ {
75
+ return reinterpret_cast <const CScriptWitness*>(witness);
76
+ }
77
+
73
78
kernel_blockreader_IBDStatus cast_ibd_status (IBDStatus status)
74
79
{
75
80
switch (status) {
@@ -472,18 +477,65 @@ kernel_ByteArray* kernel_copy_script_sig_data(const kernel_TransactionScriptSig*
472
477
return byte_array;
473
478
}
474
479
475
- bool kernel_transaction_script_sig_is_push_only (const kernel_TransactionScriptSig* _script_sig)
480
+ bool kernel_script_sig_is_push_only (const kernel_TransactionScriptSig* _script_sig)
476
481
{
477
482
const auto * script = cast_const_script_sig (_script_sig);
478
483
479
484
return script->IsPushOnly ();
480
485
}
481
486
482
- bool kernel_transaction_script_sig_is_empty (const kernel_TransactionScriptSig* _script_sig)
487
+ bool kernel_script_sig_is_empty (const kernel_TransactionScriptSig* _script_sig)
483
488
{
484
489
const auto * script = cast_const_script_sig (_script_sig);
485
490
486
491
return script->empty ();
487
492
}
488
493
494
+ uint32_t kernel_transaction_input_get_n_sequence (const kernel_TransactionInput* _input)
495
+ {
496
+ const auto * input = cast_const_transaction_input (_input);
497
+
498
+ return input->nSequence ;
499
+ }
500
+
501
+ const kernel_TransactionWitness* kernel_transaction_input_get_witness (const kernel_TransactionInput* _input)
502
+ {
503
+ const auto * input = cast_const_transaction_input (_input);
504
+
505
+ return reinterpret_cast <const kernel_TransactionWitness*>(&input->scriptWitness );
506
+ }
507
+
508
+ uint32_t kernel_witness_get_stack_size (const kernel_TransactionWitness* _witness)
509
+ {
510
+ const auto * witness = cast_const_witness (_witness);
511
+
512
+ return witness->stack .size ();
513
+ }
514
+
515
+ kernel_ByteArray* kernel_witness_get_stack_item (const kernel_TransactionWitness* _witness, uint32_t index)
516
+ {
517
+ const auto * witness = cast_const_witness (_witness);
518
+
519
+ if (index >= witness->stack .size ()) {
520
+ return nullptr ;
521
+ }
522
+
523
+ const auto & stack_item = witness->stack .at (index);
524
+
525
+ auto byte_array = new kernel_ByteArray ();
526
+ byte_array->size = stack_item.size ();
527
+ byte_array->data = new unsigned char [byte_array->size ];
528
+
529
+ std::memcpy (byte_array->data , stack_item.data (), byte_array->size );
530
+
531
+ return byte_array;
532
+ }
533
+
534
+ bool kernel_witness_is_null (const kernel_TransactionWitness* _witness)
535
+ {
536
+ const auto * witness = cast_const_witness (_witness);
537
+
538
+ return witness->IsNull ();
539
+ }
540
+
489
541
} // extern "C"
0 commit comments