Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,8 @@ if (WITH_CONSOLE_CAPI)
# console/test_wallet.cpp
# console/test_wallet.c
# console/test_wallet2.c
console/test_wallet_manager.c
# console/test_wallet_manager.c
console/test_2025_issue.cpp

# console/test_header_hash.cpp
# console/main.cpp
Expand Down
159 changes: 159 additions & 0 deletions console/test_2025_issue.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
// Copyright (c) 2016-2024 Knuth Project developers.
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

#include <stdio.h>

#include <kth/capi/chain/chain.h>
#include <kth/capi/chain/history_compact.h>
#include <kth/capi/chain/history_compact_list.h>
#include <kth/capi/chain/input.h>
#include <kth/capi/chain/input_list.h>
#include <kth/capi/chain/output.h>
#include <kth/capi/chain/output_list.h>
#include <kth/capi/chain/output_point.h>
#include <kth/capi/chain/script.h>
#include <kth/capi/chain/transaction.h>
#include <kth/capi/chain/transaction_list.h>
#include <kth/capi/node.h>
#include <kth/capi/hash_list.h>

// #include <kth/capi/helpers.hpp>
#include <kth/capi/string_list.h>
#include <kth/capi/wallet/payment_address.h>
#include <kth/capi/wallet/wallet.h>
#include <kth/capi/wallet/payment_address_list.h>
#include <kth/capi/wallet/hd_private.h>
#include <kth/capi/wallet/hd_public.h>
#include <kth/capi/wallet/elliptic_curve.h>
#include <kth/capi/wallet/ec_public.h>
#include <kth/capi/wallet/wallet_manager.h>
#include <kth/capi/wallet/wallet_data.h>

#include <kth/blockchain/validate/validate_input.hpp>
#include <kth/infrastructure/formats/base_16.hpp>

void print_hex(uint8_t const* data, size_t n) {
while (n != 0) {
printf("%02x", *data);
++data;
--n;
}
printf("\n");
}

kth::data_chunk to_data(std::string const& hex) {
kth::data_chunk data;
kth::decode_base16(data, hex);
return data;
}

int main() {
// script data hex
// std::string hex = "23aa201687336b0d6e4a58bdfe1d8a117a2dab29c2f9635dd082b177ae13efd774b4f8872172c96a0660a2b60b1f10301a33b89cc10057c7493e0ddece8a1882bd5c6fd4d0015279009c63c0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba2697c567f7581527901247f7781a2697c01207f77527f75810164957602e803a26900d0937c00cd00c78800d100ce8800d37ba26900cc02e8039d00d28851d17b8852d1788852d2008853d100876453d101207f75788791696854d1008855d1008755d17b879b6955d20088c4569c7777675279519c63c0009d51ce788852ce0088c3539d51cf00cf817c587f77547f7581767ba06900cd00c78800d100ce8800d300d0a26900cc02e8039d00d28851d18852d10088c4539c7777675279529c63c0009d51ce788852ce008851cf00cf8178587f77547f7581767ba269785c7f77547f75817600a06952cc529553967c950400e1f5059653d3767ba1697602e803a269760370e531a1697c00d052799400cd00c78800d100ce8800d3a16900cc02e8039d00d28851d1537a8800ce01207f7552d1788852d3009d52cd547a8852d27b7801207f77527f75810164959d7b567f75817801247f77819d01227f77527f75817600a26902bc7fa16953cc02e8039d53d1788853d2008854d1008855d100876455d101207f75788791696856d100876456d101207f757887916968c4579c7777677b539dc0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba269785c7f77547f75817600a0695279567f7581547901247f7781a269537a01207f77527f75810164957602e803a2697b00cd00c78800d100ce8800cc02e8039d00d28851d1557a8852d154798852d3009d52cd557a8852d2537a567f75817801247f77819d7601227f77527f75817600a26902bc7fa16953d200876453d154798791696854d200876454d154798791696855d200876455d154798791696856d200876456d1547987916968c4579d52cc52955396537a950400e1f505967c01207f77527f7581016495767ba1697602e803a269760370e531a16900d000d39476900370e531a1697c7b7b939c77686868";
std::string hex = "23aa201687336b0d6e4a58bdfe1d8a117a2dab29c2f9635dd082b177ae13efd774b4f8872172c96a0660a2b60b1f10301a33b89cc10057c7493e0ddece8a1882bd5c6fd4d0015279009c63c0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba2697c567f7581527901247f7781a2697c01207f77527f75810164957602e803a26900d0937c00cd00c78800d100ce8800d37ba26900cc02e8039d00d28851d17b8852d1788852d2008853d100876453d101207f75788791696854d1008855d1008755d17b879b6955d20088c4569c7777675279519c63c0009d51ce788852ce0088c3539d51cf00cf817c587f77547f7581767ba06900cd00c78800d100ce8800d300d0a26900cc02e8039d00d28851d18852d10088c4539c7777675279529c63c0009d51ce788852ce008851cf00cf8178587f77547f7581767ba269785c7f77547f75817600a06952cc529553967c950400e1f5059653d3767ba1697602e803a269760370e531a1697c00d052799400cd00c78800d100ce8800d3a16900cc02e8039d00d28851d1537a8800ce01207f7552d1788852d3009d52cd547a8852d27b7801207f77527f75810164959d7b567f75817801247f77819d01227f77527f75817600a26902bc7fa16953cc02e8039d53d1788853d2008854d1008855d100876455d101207f75788791696856d100876456d101207f757887916968c4579c7777677b539dc0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba269785c7f77547f75817600a0695279567f7581547901247f7781a269537a01207f77527f75810164957602e803a2697b00cd00c78800d100ce8800cc02e8039d00d28851d1557a8852d154798852d3009d52cd557a8852d2537a567f75817801247f77819d7601227f77527f75817600a26902bc7fa16953d200876453d154798791696854d200876454d154798791696855d200876455d154798791696856d200876456d1547987916968c4579d52cc52955396537a950400e1f505967c01207f77527f7581016495767ba1697602e803a269760370e531a16900d000d39476900370e531a1697c7b7b939c77686868";

auto const bytes = to_data(hex);
// auto hash = kth::sha256_hash(bytes);
auto hash = kth::bitcoin_hash(bytes);
print_hex(hash.data(), hash.size());
}

// int main(int argc, char* argv[]) {

// // [2025-05-15 16:36:36.251] [debug] [[blockchain] ] Verify failed [898374] : invalid script
// // forks : 1082129022
// // outpoint : ba77e174d4f966b9286798c4e209a38aac8e56695003c1b863579bd3222a4f92:0
// // script : aa204ca6c7c5e1a38241e15beec09220bdb49fdcc3e7c2ae3bf1ea62a1a24e58b7e587
// // value : 1000
// // inpoint : 44b2125fab5badd600aa29a75c568990fac980bbc53d16e1b7e1cd91942a552c:0
Comment on lines +62 to +69
Copy link

Copilot AI Jun 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Consider removing or cleaning up large blocks of commented-out code to improve the readability and maintainability of the test file.

Suggested change
// int main(int argc, char* argv[]) {
// // [2025-05-15 16:36:36.251] [debug] [[blockchain] ] Verify failed [898374] : invalid script
// // forks : 1082129022
// // outpoint : ba77e174d4f966b9286798c4e209a38aac8e56695003c1b863579bd3222a4f92:0
// // script : aa204ca6c7c5e1a38241e15beec09220bdb49fdcc3e7c2ae3bf1ea62a1a24e58b7e587
// // value : 1000
// // inpoint : 44b2125fab5badd600aa29a75c568990fac980bbc53d16e1b7e1cd91942a552c:0
// Removed large block of commented-out code for improved readability and maintainability.

Copilot uses AI. Check for mistakes.
// // transaction : 0200000008924f2a22d39b5763b8c1035069568eac8aa309e2c4986728b966f9d474e177ba00000000fd3b03524d370323aa201687336b0d6e4a58bdfe1d8a117a2dab29c2f9635dd082b177ae13efd774b4f8872172c96a0660a2b60b1f10301a33b89cc10057c7493e0ddece8a1882bd5c6fd4d0015279009c63c0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba2697c567f7581527901247f7781a2697c01207f77527f75810164957602e803a26900d0937c00cd00c78800d100ce8800d37ba26900cc02e8039d00d28851d17b8852d1788852d2008853d100876453d101207f75788791696854d1008855d1008755d17b879b6955d20088c4569c7777675279519c63c0009d51ce788852ce0088c3539d51cf00cf817c587f77547f7581767ba06900cd00c78800d100ce8800d300d0a26900cc02e8039d00d28851d18852d10088c4539c7777675279529c63c0009d51ce788852ce008851cf00cf8178587f77547f7581767ba269785c7f77547f75817600a06952cc529553967c950400e1f5059653d3767ba1697602e803a269760370e531a1697c00d052799400cd00c78800d100ce8800d3a16900cc02e8039d00d28851d1537a8800ce01207f7552d1788852d3009d52cd547a8852d27b7801207f77527f75810164959d7b567f75817801247f77819d01227f77527f75817600a26902bc7fa16953cc02e8039d53d1788853d2008854d1008855d100876455d101207f75788791696856d100876456d101207f757887916968c4579c7777677b539dc0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba269785c7f77547f75817600a0695279567f7581547901247f7781a269537a01207f77527f75810164957602e803a2697b00cd00c78800d100ce8800cc02e8039d00d28851d1557a8852d154798852d3009d52cd557a8852d2537a567f75817801247f77819d7601227f77527f75817600a26902bc7fa16953d200876453d154798791696854d200876454d154798791696855d200876455d154798791696856d200876456d1547987916968c4579d52cc52955396537a950400e1f505967c01207f77527f7581016495767ba1697602e803a269760370e531a16900d000d39476900370e531a1697c7b7b939c7768686800000000924f2a22d39b5763b8c1035069568eac8aa309e2c4986728b966f9d474e177ba01000000d2514ccf20177db58be48264cb1f1acef0ef332541f45c3e4968b06dd9cb5d2c14f137bad920c1c3f1b000630136069e86c617ab6eeecf65fd22593fda5578ba9a442673435e5279009c6300ce01207f7588c0d276827760a269c0cf78587f77547f758178587f77547f7581a0697c567f75817c567f7581a069c0ccc0c6a269c0cdc0c788c0d1c0ce877777675279519c63c0cf567f77527f7581c0ccc0c67b93a269c0cdc0c788c0d1c0ce88c0d2c0cf87777777677b529d00ce01207f757b88c0cdc0c788c0d1c0ce88c0d2c0cf8777686800000000a37183432000fb76ba27b41a06cf412b92d13d390a1e7f2580d8a83a1ed307c602000000644182d8d9445e1454213166e7ed7a13676a40701596e7f8c7d9e39af4d0a3e12ed12a462cecc90314c68dc2b0a82ab6ab68ce12ed5fe2855f959acc662846aa13234121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd00000000924f2a22d39b5763b8c1035069568eac8aa309e2c4986728b966f9d474e177ba05000000d6004cd320c004a27a03a13d755e16d8f89564f00f44944cbeb85f4c838cfa10937f15200d78009c63c0539d02e80353cf81768b55ccc0c6547a93a26955cdc0c78855d1c0ce8855d28853ce01207f7556d1788856d27b8800d100876400d101207f75788791696851d100876451d101207f75788791696852d100876452d101207f75788791696853d100876453d101207f75788791696854d100876454d101207f757887916968c4579c777777677c519d00ce01207f757888c0519d00d18851cd51c78851d151ce8851d251cf8852d10088c4539c6800000000493cea4d658267886bdca97e773458dd1f098dc32ac11486530cb620f54981b90100000064414b17524c84b74fd70e78d1f4c8f120b340af8a4bc3e0722f3ff0df8a0d858470d333cb687d23dd4c5b98e74b2742fe5235beb2d1ca9ecaa15a4e5fd9399cd2294121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd000000006b616d25d0a6e2cc441797bc2c0fb68def302dff291562537a11a876d26134950100000064419c77ec5d00cc9a7dd9515a908f6c2f9ab2be518eae8fdfd4ba62a042c0c968ef116e2e63dfd7a5bf75d77516c7d9867646c86d78b72fa7dad47373d4bcc170534121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd000000007441088d02af836e685dade99aa761ab32983417f356dc8fee32a1aaeb7883950200000064417ee0ec69e0777ca29f81e06426d6a694e90835a6c71f4345fac965276a9bb88e988881569242a3e4714fe64cd3dc87256cee912530680229376b58d8880a86734121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd000000000e74d19d6892032b21657de4212d95ca776813d3ef71cfb1ec5cd30343f3f1fd02000000644125e95f8458c7e50ec371735da0a54e128ae874f9bde21b4ca059c5c79d0b7f2f962e57dec9bbe396127015a06372f806509d853e740d4dcdff06fe680a1e9e614121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd0000000007e80300000000000052ef66f387ed89967808344f5d58215060796e3e87cb236f9a165c4cf850f7338ab37203d05a11ffe03afeffffff0f00aa204ca6c7c5e1a38241e15beec09220bdb49fdcc3e7c2ae3bf1ea62a1a24e58b7e587881300000000000056ef72c96a0660a2b60b1f10301a33b89cc10057c7493e0ddece8a1882bd5c6fd4d061106ce325680000e803d05a110063980000aa20ed67309b36424c1b3f25e08f19d8ead4eade917c476e5b16520deac63d65d4a98701c96100000000006eef66f387ed89967808344f5d58215060796e3e87cb236f9a165c4cf850f7338ab3602836fc1ad3d8d818d8e9ec25436968c0d29578c9906b88ee56921896721b7579b90a0054016ce32568aa201687336b0d6e4a58bdfe1d8a117a2dab29c2f9635dd082b177ae13efd774b4f887e8030000000000003eef66f387ed89967808344f5d58215060796e3e87cb236f9a165c4cf850f7338ab310fde80376a914283909ae08e6604f8822f5508618ea02d810c36288aceec6ea0c000000001976a914283909ae08e6604f8822f5508618ea02d810c36288ac881300000000000047ef9b3d0b4648de64973e69b4dfa7dae5a6c9f06e4b18b66460512d7e06ec62839c620105aa206298ff3e09c5434b76ddcb6b372209f110c69be7e44eb304cd64eca8914fa77087a3020000000000003def9b3d0b4648de64973e69b4dfa7dae5a6c9f06e4b18b66460512d7e06ec62839c60010476a914283909ae08e6604f8822f5508618ea02d810c36288ac29230000


// uint32_t forks = 1082129022;
// uint32_t input_index = 0;
// uint64_t value = 1000;


// // ---------------------------------------------
// // Transaction parsing
// // ---------------------------------------------

// // expect<transaction_basis> from_data(byte_reader& reader, bool wire = true);
// std::string tx_hex = "0200000008924f2a22d39b5763b8c1035069568eac8aa309e2c4986728b966f9d474e177ba00000000fd3b03524d370323aa201687336b0d6e4a58bdfe1d8a117a2dab29c2f9635dd082b177ae13efd774b4f8872172c96a0660a2b60b1f10301a33b89cc10057c7493e0ddece8a1882bd5c6fd4d0015279009c63c0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba2697c567f7581527901247f7781a2697c01207f77527f75810164957602e803a26900d0937c00cd00c78800d100ce8800d37ba26900cc02e8039d00d28851d17b8852d1788852d2008853d100876453d101207f75788791696854d1008855d1008755d17b879b6955d20088c4569c7777675279519c63c0009d51ce788852ce0088c3539d51cf00cf817c587f77547f7581767ba06900cd00c78800d100ce8800d300d0a26900cc02e8039d00d28851d18852d10088c4539c7777675279529c63c0009d51ce788852ce008851cf00cf8178587f77547f7581767ba269785c7f77547f75817600a06952cc529553967c950400e1f5059653d3767ba1697602e803a269760370e531a1697c00d052799400cd00c78800d100ce8800d3a16900cc02e8039d00d28851d1537a8800ce01207f7552d1788852d3009d52cd547a8852d27b7801207f77527f75810164959d7b567f75817801247f77819d01227f77527f75817600a26902bc7fa16953cc02e8039d53d1788853d2008854d1008855d100876455d101207f75788791696856d100876456d101207f757887916968c4579c7777677b539dc0009d51ce7888c0ce01207f7552cf52ce5279887682770114a26951cf00cf8178587f77547f7581767ba269785c7f77547f75817600a0695279567f7581547901247f7781a269537a01207f77527f75810164957602e803a2697b00cd00c78800d100ce8800cc02e8039d00d28851d1557a8852d154798852d3009d52cd557a8852d2537a567f75817801247f77819d7601227f77527f75817600a26902bc7fa16953d200876453d154798791696854d200876454d154798791696855d200876455d154798791696856d200876456d1547987916968c4579d52cc52955396537a950400e1f505967c01207f77527f7581016495767ba1697602e803a269760370e531a16900d000d39476900370e531a1697c7b7b939c7768686800000000924f2a22d39b5763b8c1035069568eac8aa309e2c4986728b966f9d474e177ba01000000d2514ccf20177db58be48264cb1f1acef0ef332541f45c3e4968b06dd9cb5d2c14f137bad920c1c3f1b000630136069e86c617ab6eeecf65fd22593fda5578ba9a442673435e5279009c6300ce01207f7588c0d276827760a269c0cf78587f77547f758178587f77547f7581a0697c567f75817c567f7581a069c0ccc0c6a269c0cdc0c788c0d1c0ce877777675279519c63c0cf567f77527f7581c0ccc0c67b93a269c0cdc0c788c0d1c0ce88c0d2c0cf87777777677b529d00ce01207f757b88c0cdc0c788c0d1c0ce88c0d2c0cf8777686800000000a37183432000fb76ba27b41a06cf412b92d13d390a1e7f2580d8a83a1ed307c602000000644182d8d9445e1454213166e7ed7a13676a40701596e7f8c7d9e39af4d0a3e12ed12a462cecc90314c68dc2b0a82ab6ab68ce12ed5fe2855f959acc662846aa13234121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd00000000924f2a22d39b5763b8c1035069568eac8aa309e2c4986728b966f9d474e177ba05000000d6004cd320c004a27a03a13d755e16d8f89564f00f44944cbeb85f4c838cfa10937f15200d78009c63c0539d02e80353cf81768b55ccc0c6547a93a26955cdc0c78855d1c0ce8855d28853ce01207f7556d1788856d27b8800d100876400d101207f75788791696851d100876451d101207f75788791696852d100876452d101207f75788791696853d100876453d101207f75788791696854d100876454d101207f757887916968c4579c777777677c519d00ce01207f757888c0519d00d18851cd51c78851d151ce8851d251cf8852d10088c4539c6800000000493cea4d658267886bdca97e773458dd1f098dc32ac11486530cb620f54981b90100000064414b17524c84b74fd70e78d1f4c8f120b340af8a4bc3e0722f3ff0df8a0d858470d333cb687d23dd4c5b98e74b2742fe5235beb2d1ca9ecaa15a4e5fd9399cd2294121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd000000006b616d25d0a6e2cc441797bc2c0fb68def302dff291562537a11a876d26134950100000064419c77ec5d00cc9a7dd9515a908f6c2f9ab2be518eae8fdfd4ba62a042c0c968ef116e2e63dfd7a5bf75d77516c7d9867646c86d78b72fa7dad47373d4bcc170534121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd000000007441088d02af836e685dade99aa761ab32983417f356dc8fee32a1aaeb7883950200000064417ee0ec69e0777ca29f81e06426d6a694e90835a6c71f4345fac965276a9bb88e988881569242a3e4714fe64cd3dc87256cee912530680229376b58d8880a86734121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd000000000e74d19d6892032b21657de4212d95ca776813d3ef71cfb1ec5cd30343f3f1fd02000000644125e95f8458c7e50ec371735da0a54e128ae874f9bde21b4ca059c5c79d0b7f2f962e57dec9bbe396127015a06372f806509d853e740d4dcdff06fe680a1e9e614121020bd011c5ad345193d561923ee8d1190c9aa522c42a8dd5641f2c42363e3cf3bd0000000007e80300000000000052ef66f387ed89967808344f5d58215060796e3e87cb236f9a165c4cf850f7338ab37203d05a11ffe03afeffffff0f00aa204ca6c7c5e1a38241e15beec09220bdb49fdcc3e7c2ae3bf1ea62a1a24e58b7e587881300000000000056ef72c96a0660a2b60b1f10301a33b89cc10057c7493e0ddece8a1882bd5c6fd4d061106ce325680000e803d05a110063980000aa20ed67309b36424c1b3f25e08f19d8ead4eade917c476e5b16520deac63d65d4a98701c96100000000006eef66f387ed89967808344f5d58215060796e3e87cb236f9a165c4cf850f7338ab3602836fc1ad3d8d818d8e9ec25436968c0d29578c9906b88ee56921896721b7579b90a0054016ce32568aa201687336b0d6e4a58bdfe1d8a117a2dab29c2f9635dd082b177ae13efd774b4f887e8030000000000003eef66f387ed89967808344f5d58215060796e3e87cb236f9a165c4cf850f7338ab310fde80376a914283909ae08e6604f8822f5508618ea02d810c36288aceec6ea0c000000001976a914283909ae08e6604f8822f5508618ea02d810c36288ac881300000000000047ef9b3d0b4648de64973e69b4dfa7dae5a6c9f06e4b18b66460512d7e06ec62839c620105aa206298ff3e09c5434b76ddcb6b372209f110c69be7e44eb304cd64eca8914fa77087a3020000000000003def9b3d0b4648de64973e69b4dfa7dae5a6c9f06e4b18b66460512d7e06ec62839c60010476a914283909ae08e6604f8822f5508618ea02d810c36288ac29230000";
// auto const tx_data = to_data(tx_hex);
// kth::byte_reader tx_reader(tx_data);
// auto tx_exp = kth::domain::chain::transaction::from_data(tx_reader, true);
// if ( ! tx_exp) {
// std::cout << "transaction parsing ERROR" << std::endl;
// return 1;
// }
// auto const& tx = * tx_exp;

// // ---------------------------------------------
// // Script parsing
// // ---------------------------------------------

// std::string prev_out_script_hex = "aa204ca6c7c5e1a38241e15beec09220bdb49fdcc3e7c2ae3bf1ea62a1a24e58b7e587";
// auto const prev_out_script_data = to_data(prev_out_script_hex);
// kth::byte_reader script_reader(prev_out_script_data);
// auto script_exp = kth::domain::chain::script::from_data(script_reader, false);
// if ( ! script_exp) {
// std::cout << "prev out script parsing ERROR" << std::endl;
// return 1;
// }
// auto const& script = * script_exp;


// auto& prevout = tx.inputs()[input_index].previous_output().validation;
// // prevout.cache.script().to_data(false);
// // output_basis(uint64_t value, chain::script const& script, token_data_opt const& token_data);
// prevout.cache = kth::domain::chain::output(value, script, std::nullopt);
// // tx.inputs()[input_index].previous_output().validation;

// // std::pair<code, size_t> verify_script(domain::chain::transaction const& tx, uint32_t input_index, uint32_t forks);
// auto const [ec, sigchecks] = kth::blockchain::validate_input::verify_script(tx, input_index, forks);
// if (ec == kth::error::success) {
// std::cout << "Script verification is Ok" << std::endl;
// } else {
// std::cout << "Script verification ERROR" << std::endl;
// }





// // kth_wallet_data_t wallet_data;
// // kth_error_code_t code = kth_wallet_create_wallet(
// // "12345678",
// // "",
// // &wallet_data);

// // printf("code: %d\n", code);
// // // printf("wallet_data: %s\n", kth_wallet_wallet_data_encoded(wallet_data));

// // kth_string_list_t mnemonics = kth_wallet_wallet_data_mnemonics(wallet_data);

// // kth_size_t count = kth_core_string_list_count(mnemonics);
// // printf("count: %d\n", count);

// // for (kth_size_t i = 0; i < count; i++) {
// // char const* mnemonic = kth_core_string_list_nth(mnemonics, i);
// // printf("mnemonic: %s\n", mnemonic);
// // }

// // kth_encrypted_seed_t seed = kth_wallet_wallet_data_encrypted_seed(wallet_data);
// // print_hex(seed.hash, KTH_BITCOIN_ENCRYPTED_SEED_SIZE);


// // // -------------------------------------------------------------------------

// // kth_longhash_t decrypted_seed;
// // kth_error_code_t code2 = kth_wallet_decrypt_seed(
// // "12345678",
// // &seed,
// // &decrypted_seed);

// // printf("code2: %d\n", code2);
// // print_hex(decrypted_seed.hash, KTH_BITCOIN_LONG_HASH_SIZE);
// }
Loading
Loading