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
15 changes: 11 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -208,12 +208,13 @@ set(kth_sources
src/wallet/transaction_functions.cpp
src/wallet/wallet.cpp
src/wallet/ec_compressed_list.cpp
src/wallet/wallet_data.cpp
src/wallet/wallet_manager.cpp

src/libconfig/libconfig.cpp

src/node/settings.cpp


src/vm/interpreter.cpp
src/vm/program.cpp

Expand Down Expand Up @@ -258,7 +259,7 @@ set(kth_sources
src/chain/point_list.cpp
src/chain/mempool_transaction.cpp

# src/chain/token_data.cpp
src/chain/token_data.cpp

src/config/authority.cpp
src/config/blockchain_settings.cpp
Expand All @@ -269,7 +270,6 @@ set(kth_sources
src/config/node_settings.cpp
src/config/settings.cpp


src/node/settings.cpp

src/vm/program.cpp
Expand Down Expand Up @@ -331,6 +331,8 @@ set(kth_headers
include/kth/capi/wallet/wallet.h
include/kth/capi/wallet/raw_output.h
include/kth/capi/wallet/ec_compressed_list.h
include/kth/capi/wallet/wallet_data.h
include/kth/capi/wallet/wallet_manager.h

include/kth/capi/primitives.h
include/kth/capi/hash_list.h
Expand Down Expand Up @@ -378,6 +380,8 @@ set(kth_headers
include/kth/capi/chain/block_list.h
include/kth/capi/chain/mempool_transaction_list.h
include/kth/capi/chain/compact_block.h
include/kth/capi/chain/token_capability.h
include/kth/capi/chain/token_kind.h
include/kth/capi/chain/token_data.h
include/kth/capi/chain/input.h
include/kth/capi/chain/block_indexes.h
Expand All @@ -402,6 +406,7 @@ set(kth_headers
include/kth/capi/chain/mempool_transaction.h
include/kth/capi/chain/rule_fork.h
include/kth/capi/chain/script_version.h
include/kth/capi/chain/script_pattern.h
include/kth/capi/chain/get_headers.h
include/kth/capi/chain/double_spend_proof.h
include/kth/capi/chain/input_list.h
Expand Down Expand Up @@ -473,7 +478,9 @@ if (WITH_CONSOLE_CAPI)
set(_test_console_sources
# console/test_wallet.cpp
# console/test_wallet.c
console/test_wallet2.c
# console/test_wallet2.c
console/test_wallet_manager.c

# console/test_header_hash.cpp
# console/main.cpp
# console/main.c
Expand Down
21 changes: 10 additions & 11 deletions conan.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,27 @@
"version": "0.5",
"requires": [
"zlib/1.3.1#b8bc2603263cf7eccbd6e17e66b0ed76%1736442063.163",
"tiny-aes-c/1.0.0#4ce574c8eae2dede7a94806b3adff526%1666613955.37",
"spdlog/1.15.0#da21f74dd84627fa68601c4e3b9c3f00%1731353167.297",
"secp256k1/0.21.0#ed9709c61dfdb38ac8181f876503dca6%1732364020.326",
"openssl/3.3.2#db38a6d356d27869fd90496897aedaf2%1736255835.422",
"openssl/3.3.2#90b3fc29e196eb631636c25d3516cd93%1741868603.502",
"node/0.52.0#dd2fd028ad3363ba0a7ac27ba0f9ee97%1738534558.954",
"network/0.50.0#ac5d05429feed27feb2bcf3886fbeb99%1738533256.580533",
"lmdb/0.9.32#a9b704c2cb978c03eea680da55f26f8e%1715166447.685",
"libbacktrace/cci.20210118#a7691bfccd8caaf66309df196790a5a1%1725632951.012",
"infrastructure/0.40.0#d3ebe4b063a768322e56d48eacecce0f%1738532851.2589662",
"lmdb/0.9.32#062e23b9624da8798d818cf697a2d6ba%1741857861.053",
"infrastructure/0.40.0#4a43a8836765a0b944b7f8c00e62f5e1%1742572044.359745",
"gmp/6.3.0#df20ffb6d21c34d67704305bcd1dea9e%1716966936.742",
"fmt/11.0.2#b4a24d70b93466b9b508ddb7b014643b%1735899162.196",
"expected-lite/0.8.0#f87b3ec27a4f46894950b70f8d08af24%1717770563.402",
"domain/0.42.0#058df3e66d4ffd545d6a89e41f398843%1738533121.4168613",
"database/0.48.0#422a9f08fc0722cbb80bdb037213469b%1738533270.7408235",
"ctre/3.9.0#318a83b26476a59466795daac928f3ec%1716966898.508",
"consensus/0.35.0#0f3e3b29328263bebbb8dc48de242e5e%1738532864.604166",
"bzip2/1.0.8#d00dac990f08d991998d624be81a9526%1725632951.439",
"domain/0.42.0#58d654b7baa8ee6261b3ba6c66ac5559%1742572977.060045",
"database/0.48.0#422a9f08fc0722cbb80bdb037213469b%1738530526.086",
"ctre/3.9.0#318a83b26476a59466795daac928f3ec%1715925273.754",
"consensus/0.35.0#0f3e3b29328263bebbb8dc48de242e5e%1738529636.419",
"boost/1.86.0#ce76e7477e466d7d8cbcf738c5d64175%1736442226.917",
"blockchain/0.46.0#daa4d45e87890f17b6a17d4366484fdc%1738533774.007"
],
"build_requires": [
"nodejs/18.15.0#2e468fc390ccdb9595ea1a5bbb74d59f%1699800364.91",
"m4/1.4.19#b38ced39a01e31fef5435bc634461fd2%1700758725.451",
"b2/5.2.1#91bc73931a0acb655947a81569ed8b80%1718416612.241"
"emsdk/3.1.66#dbe775f114c0ec093539734107e2ab5e%1733138978.7973351"
],
"python_requires": [],
"config_requires": []
Expand Down
24 changes: 1 addition & 23 deletions console/test_wallet2.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ void print_hex(uint8_t const* data, size_t n) {

int main(int argc, char* argv[]) {
// m/44'/145'/0'
char const* m44h145h0h_xpub_str = "xpub6CAemD8S648fre9X1e1YwQwWnumAjaXX7t7BxrN7mJRNFm6cwFusodAeyM6GaZXMVbALsYj7m6yf4SGHnoW6NojroW9MxspnUpNEeA6wWPV";
char const* m44h145h0h_xpub_str = "xpub...";

kth_hd_public_t m44h145h0h = kth_wallet_hd_public_construct_string(m44h145h0h_xpub_str);
kth_hd_public_t m44h145h0h0 = kth_wallet_hd_public_derive_public(m44h145h0h, 0);
Expand All @@ -60,27 +60,5 @@ int main(int argc, char* argv[]) {
printf("%s\n", kth_wallet_payment_address_encoded_cashaddr(pa, 0));
}

// bitcoincash:qr9sawzzmstkluq9nqefsu7eqya4zk2w7udune2pmf
// bitcoincash:qpvmwrhxcdyyq64ar6kz46rejp0r2tjcwg8d462hum
// bitcoincash:qqftgwpz0wm45z3sumncfrzm0s3n7x5rcqq9350gd6
// bitcoincash:qrwelh5dw56rjnr3nnttfc45j0p0yv2a3vtuwu9nlt
// bitcoincash:qpawyf7fp6lhvhld5gtz74smm969fx2j2546uj60l0
// bitcoincash:qqzhz2m6cg6au7r3hntjraqj4aj8akg3gvakarc69v
// bitcoincash:qpzf4kuq03js0tnug5z6e5q7zcfse6guagmhktuzcd
// bitcoincash:qr6jhutnh6jk7aphlyu9sq5f6zu2epj8uqpynlacwk
// bitcoincash:qrlfnn7f03n020yyvgyfqtq9fcu35wussq4ev4glfv
// bitcoincash:qrmn9ss3dsu79rws6j4jwa9qhdxrr4rqcqxxxvlnwx
// bitcoincash:qqnwp4ja6435s3v22hzhr5d5x6l7v80leyk7uf9z42
// bitcoincash:qqyy3hnlt5z6xrxg57a74xt6tsce9hgrxqz7cz8tue
// bitcoincash:qpz2w7k0khnekpetayza9mq3uy47qkmgcvw46r0yga
// bitcoincash:qq3evlrgcdsgef6ut7l33qe2nguefnhvzgymup7pqk
// bitcoincash:qr3mpurdzyf0qkxq6qgue7ym98fsej4fwqsxq4u5j0
// bitcoincash:qz5m8qceta5cckhs8k77lrzjzpwpe9y26ufvkl8gq7
// bitcoincash:qzjnd7pykzsyt4z93j7mcphjxf8fk8unyym7et8x2z
// bitcoincash:qr2klzr2vllfq70a0ccd7zxpeaj2x8ma85wfrnp0tv
// bitcoincash:qq38t4jlhsz7gn9z9lrqptklpdm3n9z6eqn3hhqgme
// bitcoincash:qp9h0sjhe0m2pedjn3qr7x78c6utlpje9ulu40nej8


printf("\n");
}
76 changes: 76 additions & 0 deletions console/test_wallet_manager.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
// 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>

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

int main(int argc, char* argv[]) {
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);
}
4 changes: 2 additions & 2 deletions include/kth/capi/chain/block.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ KTH_EXPORT
kth_block_t kth_chain_block_construct(kth_header_t header, kth_transaction_list_t transactions);

KTH_EXPORT
kth_block_t kth_chain_block_factory_from_data(uint32_t version, uint8_t* data, kth_size_t n);
kth_block_t kth_chain_block_factory_from_data(uint8_t* data, kth_size_t n);

KTH_EXPORT
void kth_chain_block_destruct(kth_block_t block);
Expand All @@ -45,7 +45,7 @@ KTH_EXPORT
kth_transaction_list_t kth_chain_block_transactions(kth_block_t block);

KTH_EXPORT
kth_size_t kth_chain_block_serialized_size(kth_block_t block, uint32_t version);
kth_size_t kth_chain_block_serialized_size(kth_block_t block);

/*static*/
KTH_EXPORT
Expand Down
8 changes: 4 additions & 4 deletions include/kth/capi/chain/header.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@ extern "C" {
#endif

KTH_EXPORT
kth_header_t kth_chain_header_factory_from_data(uint32_t version, uint8_t* data, kth_size_t n);
kth_header_t kth_chain_header_factory_from_data(uint8_t* data, kth_size_t n);

KTH_EXPORT
kth_size_t kth_chain_header_satoshi_fixed_size(uint32_t version);
kth_size_t kth_chain_header_satoshi_fixed_size();

KTH_EXPORT
void kth_chain_header_reset(kth_header_t header);

KTH_EXPORT
kth_size_t kth_chain_header_serialized_size(kth_header_t header, uint32_t version);
kth_size_t kth_chain_header_serialized_size(kth_header_t header);

KTH_EXPORT
uint8_t const* kth_chain_header_to_data(kth_header_t header, uint32_t version, kth_size_t* out_size);
uint8_t const* kth_chain_header_to_data(kth_header_t header, kth_size_t* out_size);

KTH_EXPORT
kth_header_t kth_chain_header_construct_default(void);
Expand Down
22 changes: 21 additions & 1 deletion include/kth/capi/chain/output.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
#include <kth/capi/primitives.h>
#include <kth/capi/visibility.h>

#include <kth/capi/chain/token_capability.h>

#ifdef __cplusplus
extern "C" {
#endif
Expand All @@ -18,9 +20,20 @@ KTH_EXPORT
kth_output_t kth_chain_output_construct_default(void);

KTH_EXPORT
// kth_output_t kth_chain_output_construct(uint64_t value, kth_script_t script, kth_token_data_t token_data);
kth_output_t kth_chain_output_construct(uint64_t value, kth_script_t script);

KTH_EXPORT
kth_output_t kth_chain_output_construct_with_token_fungible(uint64_t value, kth_script_t script, kth_hash_t const* token_category, int64_t token_amount);

KTH_EXPORT
kth_output_t kth_chain_output_construct_with_token_non_fungible(uint64_t value, kth_script_t script, kth_hash_t const* token_category, kth_token_capability_t capability, uint8_t* commitment_data, kth_size_t commitment_n);

KTH_EXPORT
kth_output_t kth_chain_output_construct_with_token_both(uint64_t value, kth_script_t script, kth_hash_t const* token_category, int64_t token_amount, kth_token_capability_t capability, uint8_t* commitment_data, kth_size_t commitment_n);

KTH_EXPORT
kth_output_t kth_chain_output_construct_with_token_data(uint64_t value, kth_script_t script, kth_token_data_t token_data);

KTH_EXPORT
void kth_chain_output_destruct(kth_output_t output);

Expand Down Expand Up @@ -50,6 +63,13 @@ uint8_t const* kth_chain_output_to_data(kth_output_t output, kth_bool_t wire, kt

//uint32_t kth_chain_output_get_index(kth_output_t output);

// Cash Tokens ---------------------------------------------------------------
KTH_EXPORT
kth_bool_t kth_chain_output_has_token_data(kth_output_t output);

KTH_EXPORT
kth_token_data_t kth_chain_output_token_data(kth_output_t output);

#ifdef __cplusplus
} // extern "C"
#endif
Expand Down
30 changes: 15 additions & 15 deletions include/kth/capi/chain/rule_fork.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,21 +51,21 @@ typedef enum {
kth_rule_fork_bip113_rule = 1U << 10,

#if defined(KTH_CURRENCY_BCH)
kth_rule_fork_bch_uahf = 1U << 11, //2017-Aug Hardfork - Bitcoin Cash UAHF (1501590000)
kth_rule_fork_bch_daa_cw144 = 1U << 12, //2017-Nov Hardfork - DAA/cw-144 - (1510600000)
kth_rule_fork_bch_pythagoras = 1U << 13, //2018-May Hardfork - pythagoras - (1526400000)
kth_rule_fork_bch_euclid = 1U << 14, //2018-Nov Hardfork - euclid - (1542300000)
kth_rule_fork_bch_pisano = 1U << 15, //2019-May Hardfork - pisano - (1557921600)
kth_rule_fork_bch_mersenne = 1U << 16, //2019-Nov Hardfork - mersenne - (1573819200)
kth_rule_fork_bch_fermat = 1U << 17, //2020-May Hardfork - fermat - (1589544000)
kth_rule_fork_bch_euler = 1U << 18, //2020-Nov Hardfork - euler - (1605441600)
//2021-May NO-Hardfork - (1621080000)
kth_rule_fork_bch_gauss = 1U << 19, //2022-May Hardfork - gauss - (1652616000)
kth_rule_fork_bch_descartes = 1U << 20, //2023-May Hardfork - descartes - (1684152000)
kth_rule_fork_bch_lobachevski = 1U << 21, //2024-May Hardfork - lobachevski - (1715774400)
kth_rule_fork_bch_galois = 1U << 22, //2025-May Hardfork - galois - (1747310400)
kth_rule_fork_bch_leibniz = 1U << 23, //2025-May Hardfork - leibniz - (1778846400)
// kth_rule_fork_bch_unnamed = 1U << 24, //2026-May Hardfork - unnamed - (9999999999)
kth_rule_fork_bch_uahf = 1U << 11, //2017-Aug Upgrade - Bitcoin Cash UAHF (1501590000)
kth_rule_fork_bch_daa_cw144 = 1U << 12, //2017-Nov Upgrade - DAA/cw-144 - (1510600000)
kth_rule_fork_bch_pythagoras = 1U << 13, //2018-May Upgrade - pythagoras - (1526400000)
kth_rule_fork_bch_euclid = 1U << 14, //2018-Nov Upgrade - euclid - (1542300000)
kth_rule_fork_bch_pisano = 1U << 15, //2019-May Upgrade - pisano - (1557921600)
kth_rule_fork_bch_mersenne = 1U << 16, //2019-Nov Upgrade - mersenne - (1573819200)
kth_rule_fork_bch_fermat = 1U << 17, //2020-May Upgrade - fermat - (1589544000)
kth_rule_fork_bch_euler = 1U << 18, //2020-Nov Upgrade - euler - (1605441600)
//2021-May NO-Upgrade - (1621080000)
kth_rule_fork_bch_gauss = 1U << 19, //2022-May Upgrade - gauss - (1652616000)
kth_rule_fork_bch_descartes = 1U << 20, //2023-May Upgrade - descartes - (1684152000)
kth_rule_fork_bch_lobachevski = 1U << 21, //2024-May Upgrade - lobachevski - (1715774400)
kth_rule_fork_bch_galois = 1U << 22, //2025-May Upgrade - galois - (1747310400)
kth_rule_fork_bch_leibniz = 1U << 23, //2026-May Upgrade - leibniz - (1778846400)
// kth_rule_fork_bch_unnamed = 1U << 24, //2027-May Upgrade - unnamed - (9999999999)
#else
// Just for segwit coins
/// Segregated witness consensus layer (soft fork, feature).
Expand Down
Loading
Loading