Skip to content

Commit 6e6e43b

Browse files
refactor: adapt to btck_api changes and reorganize codebase
- Update enum variants to PascalCase(REGTEST -> Regtest) - Add constants.rs with btck_* constant definitions - Move enums and verify logic to separate modules - Add Windows-specific library linking (bcrypt, shell32) - Update callback signatures and memory management - Remove UnownedBlock, replace with Block in validation callbacks - Improve type conversions and error handling - Implement non-generic Logger with `destroy_log_callback` and pass ownership to C library
1 parent fd491ba commit 6e6e43b

File tree

8 files changed

+1172
-431
lines changed

8 files changed

+1172
-431
lines changed

examples/src/silentpaymentscanner.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ impl Log for MainLog {
2828
}
2929
}
3030

31-
fn setup_logging() -> Result<Logger<MainLog>, KernelError> {
31+
fn setup_logging() -> Result<Logger, KernelError> {
3232
let mut builder = Builder::from_default_env();
3333
builder.filter(None, LevelFilter::Info).init();
3434
Logger::new(MainLog {})
@@ -37,7 +37,7 @@ fn setup_logging() -> Result<Logger<MainLog>, KernelError> {
3737
fn create_context() -> Arc<Context> {
3838
Arc::new(
3939
ContextBuilder::new()
40-
.chain_type(ChainType::REGTEST)
40+
.chain_type(ChainType::Regtest)
4141
.build()
4242
.unwrap(),
4343
)

fuzz/fuzz_targets/fuzz_target_chainman.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ pub enum FuzzChainType {
4444
impl Into<ChainType> for FuzzChainType {
4545
fn into(self) -> ChainType {
4646
match self {
47-
FuzzChainType::MAINNET => ChainType::MAINNET,
48-
FuzzChainType::TESTNET => ChainType::TESTNET,
49-
FuzzChainType::REGTEST => ChainType::REGTEST,
50-
FuzzChainType::SIGNET => ChainType::SIGNET,
47+
FuzzChainType::MAINNET => ChainType::Mainnet,
48+
FuzzChainType::TESTNET => ChainType::Testnet,
49+
FuzzChainType::REGTEST => ChainType::Regtest,
50+
FuzzChainType::SIGNET => ChainType::Signet,
5151
}
5252
}
5353
}

libbitcoinkernel-sys/build.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ fn main() {
9393
.expect("Couldn't write bindings!");
9494

9595
let compiler = cc::Build::new().get_compiler();
96+
9697
if compiler.is_like_clang() {
9798
let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap();
9899
if target_os == "macos" {

src/constants.rs

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
use crate::{
2+
btck_BlockValidationResult, btck_ChainType, btck_LogCategory, btck_LogLevel,
3+
btck_ScriptVerificationFlags, btck_ScriptVerifyStatus, btck_SynchronizationState,
4+
btck_ValidationMode, btck_Warning,
5+
};
6+
7+
// Synchronization States
8+
pub const BTCK_SYNCHRONIZATION_STATE_INIT_REINDEX: btck_SynchronizationState = 0;
9+
pub const BTCK_SYNCHRONIZATION_STATE_INIT_DOWNLOAD: btck_SynchronizationState = 1;
10+
pub const BTCK_SYNCHRONIZATION_STATE_POST_INIT: btck_SynchronizationState = 2;
11+
12+
// Warning Types
13+
pub const BTCK_WARNING_UNKNOWN_NEW_RULES_ACTIVATED: btck_Warning = 0;
14+
pub const BTCK_WARNING_LARGE_WORK_INVALID_CHAIN: btck_Warning = 1;
15+
16+
// Validation Modes
17+
pub const BTCK_VALIDATION_MODE_VALID: btck_ValidationMode = 0;
18+
pub const BTCK_VALIDATION_MODE_INVALID: btck_ValidationMode = 1;
19+
pub const BTCK_VALIDATION_MODE_INTERNAL_ERROR: btck_ValidationMode = 2;
20+
21+
// Block Validation Results
22+
pub const BTCK_BLOCK_VALIDATION_RESULT_UNSET: btck_BlockValidationResult = 0;
23+
pub const BTCK_BLOCK_VALIDATION_RESULT_CONSENSUS: btck_BlockValidationResult = 1;
24+
pub const BTCK_BLOCK_VALIDATION_RESULT_CACHED_INVALID: btck_BlockValidationResult = 2;
25+
pub const BTCK_BLOCK_VALIDATION_RESULT_INVALID_HEADER: btck_BlockValidationResult = 3;
26+
pub const BTCK_BLOCK_VALIDATION_RESULT_MUTATED: btck_BlockValidationResult = 4;
27+
pub const BTCK_BLOCK_VALIDATION_RESULT_MISSING_PREV: btck_BlockValidationResult = 5;
28+
pub const BTCK_BLOCK_VALIDATION_RESULT_INVALID_PREV: btck_BlockValidationResult = 6;
29+
pub const BTCK_BLOCK_VALIDATION_RESULT_TIME_FUTURE: btck_BlockValidationResult = 7;
30+
pub const BTCK_BLOCK_VALIDATION_RESULT_HEADER_LOW_WORK: btck_BlockValidationResult = 8;
31+
32+
// Log Categories
33+
pub const BTCK_LOG_CATEGORY_ALL: btck_LogCategory = 0;
34+
pub const BTCK_LOG_CATEGORY_BENCH: btck_LogCategory = 1;
35+
pub const BTCK_LOG_CATEGORY_BLOCKSTORAGE: btck_LogCategory = 2;
36+
pub const BTCK_LOG_CATEGORY_COINDB: btck_LogCategory = 3;
37+
pub const BTCK_LOG_CATEGORY_LEVELDB: btck_LogCategory = 4;
38+
pub const BTCK_LOG_CATEGORY_MEMPOOL: btck_LogCategory = 5;
39+
pub const BTCK_LOG_CATEGORY_PRUNE: btck_LogCategory = 6;
40+
pub const BTCK_LOG_CATEGORY_RAND: btck_LogCategory = 7;
41+
pub const BTCK_LOG_CATEGORY_REINDEX: btck_LogCategory = 8;
42+
pub const BTCK_LOG_CATEGORY_VALIDATION: btck_LogCategory = 9;
43+
pub const BTCK_LOG_CATEGORY_KERNEL: btck_LogCategory = 10;
44+
45+
// Log Levels
46+
pub const BTCK_LOG_LEVEL_TRACE: btck_LogLevel = 0;
47+
pub const BTCK_LOG_LEVEL_DEBUG: btck_LogLevel = 1;
48+
pub const BTCK_LOG_LEVEL_INFO: btck_LogLevel = 2;
49+
50+
// Script Verify Status
51+
pub const BTCK_SCRIPT_VERIFY_STATUS_OK: btck_ScriptVerifyStatus = 0;
52+
pub const BTCK_SCRIPT_VERIFY_STATUS_ERROR_INVALID_FLAGS_COMBINATION: btck_ScriptVerifyStatus = 2;
53+
pub const BTCK_SCRIPT_VERIFY_STATUS_ERROR_SPENT_OUTPUTS_REQUIRED: btck_ScriptVerifyStatus = 3;
54+
55+
// Script Verification Flags
56+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_NONE: btck_ScriptVerificationFlags = 0;
57+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_P2SH: btck_ScriptVerificationFlags = 1 << 0;
58+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_DERSIG: btck_ScriptVerificationFlags = 1 << 2;
59+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_NULLDUMMY: btck_ScriptVerificationFlags = 1 << 4;
60+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_CHECKLOCKTIMEVERIFY: btck_ScriptVerificationFlags = 1 << 9;
61+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_CHECKSEQUENCEVERIFY: btck_ScriptVerificationFlags =
62+
1 << 10;
63+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_WITNESS: btck_ScriptVerificationFlags = 1 << 11;
64+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_TAPROOT: btck_ScriptVerificationFlags = 1 << 17;
65+
66+
pub const BTCK_SCRIPT_VERIFICATION_FLAGS_ALL: btck_ScriptVerificationFlags =
67+
BTCK_SCRIPT_VERIFICATION_FLAGS_P2SH
68+
| BTCK_SCRIPT_VERIFICATION_FLAGS_DERSIG
69+
| BTCK_SCRIPT_VERIFICATION_FLAGS_NULLDUMMY
70+
| BTCK_SCRIPT_VERIFICATION_FLAGS_CHECKLOCKTIMEVERIFY
71+
| BTCK_SCRIPT_VERIFICATION_FLAGS_CHECKSEQUENCEVERIFY
72+
| BTCK_SCRIPT_VERIFICATION_FLAGS_WITNESS
73+
| BTCK_SCRIPT_VERIFICATION_FLAGS_TAPROOT;
74+
75+
// Chain types
76+
pub const BTCK_CHAIN_TYPE_MAINNET: btck_ChainType = 0;
77+
pub const BTCK_CHAIN_TYPE_TESTNET: btck_ChainType = 1;
78+
pub const BTCK_CHAIN_TYPE_TESTNET_4: btck_ChainType = 2;
79+
pub const BTCK_CHAIN_TYPE_SIGNET: btck_ChainType = 3;
80+
pub const BTCK_CHAIN_TYPE_REGTEST: btck_ChainType = 4;

0 commit comments

Comments
 (0)